From e738dc1f845595461f522e6dec59ff6447aed0cd Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 15:55:18 +0200 Subject: [PATCH 01/32] Allow to specify TRX files glob --- .github/workflows/ci-cd.yml | 2 +- README.md | 11 +++-- action.yml | 3 ++ composite/action.yml | 4 ++ python/publish/publisher.py | 4 +- python/publish_unit_test_results.py | 11 ++++- python/test/test_action_script.py | 65 +++++++++++++++++++++++------ python/test/test_publisher.py | 1 + 8 files changed, 82 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 67706f90..38cfdb8a 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -202,7 +202,7 @@ jobs: id: test-results if: always() run: | - docker run --workdir $GITHUB_WORKSPACE --rm -e INPUT_CHECK_NAME -e INPUT_JUNIT_FILES -e INPUT_TIME_UNIT -e INPUT_GITHUB_TOKEN -e INPUT_GITHUB_RETRIES -e INPUT_COMMIT -e INPUT_COMMENT_TITLE -e INPUT_FAIL_ON -e INPUT_REPORT_INDIVIDUAL_RUNS -e INPUT_DEDUPLICATE_CLASSES_BY_FILE_NAME -e INPUT_IGNORE_RUNS -e INPUT_HIDE_COMMENTS -e INPUT_COMMENT_ON_PR -e INPUT_COMMENT_MODE -e INPUT_COMPARE_TO_EARLIER_COMMIT -e INPUT_PULL_REQUEST_BUILD -e INPUT_EVENT_FILE -e INPUT_EVENT_NAME -e INPUT_TEST_CHANGES_LIMIT -e INPUT_CHECK_RUN_ANNOTATIONS -e INPUT_CHECK_RUN_ANNOTATIONS_BRANCH -e INPUT_SECONDS_BETWEEN_GITHUB_READS -e INPUT_SECONDS_BETWEEN_GITHUB_WRITES -e INPUT_JSON_FILE -e INPUT_JSON_THOUSANDS_SEPARATOR -e INPUT_JOB_SUMMARY -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "$RUNNER_TEMP":"$RUNNER_TEMP" -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" enricomi/publish-unit-test-result-action:latest + docker run --workdir $GITHUB_WORKSPACE --rm -e INPUT_CHECK_NAME -e INPUT_JUNIT_FILES -e INPUT_TRX_FILES -e INPUT_TIME_UNIT -e INPUT_GITHUB_TOKEN -e INPUT_GITHUB_RETRIES -e INPUT_COMMIT -e INPUT_COMMENT_TITLE -e INPUT_FAIL_ON -e INPUT_REPORT_INDIVIDUAL_RUNS -e INPUT_DEDUPLICATE_CLASSES_BY_FILE_NAME -e INPUT_IGNORE_RUNS -e INPUT_HIDE_COMMENTS -e INPUT_COMMENT_ON_PR -e INPUT_COMMENT_MODE -e INPUT_COMPARE_TO_EARLIER_COMMIT -e INPUT_PULL_REQUEST_BUILD -e INPUT_EVENT_FILE -e INPUT_EVENT_NAME -e INPUT_TEST_CHANGES_LIMIT -e INPUT_CHECK_RUN_ANNOTATIONS -e INPUT_CHECK_RUN_ANNOTATIONS_BRANCH -e INPUT_SECONDS_BETWEEN_GITHUB_READS -e INPUT_SECONDS_BETWEEN_GITHUB_WRITES -e INPUT_JSON_FILE -e INPUT_JSON_THOUSANDS_SEPARATOR -e INPUT_JOB_SUMMARY -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "$RUNNER_TEMP":"$RUNNER_TEMP" -v "$GITHUB_WORKSPACE":"$GITHUB_WORKSPACE" enricomi/publish-unit-test-result-action:latest env: INPUT_GITHUB_TOKEN: ${{ github.token }} INPUT_CHECK_NAME: Test Results (Docker Image) diff --git a/README.md b/README.md index e913bc74..0478d82a 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ You can add this action to your GitHub workflow for ![Ubuntu Linux](https://badg if: always() with: junit_files: "test-results/**/*.xml" + trx_files: "test-results/**/*.trx" ``` Use this for ![macOS](https://badgen.net/badge/icon/macOS?icon=apple&label) (e.g. `runs-on: macos-latest`) @@ -34,6 +35,7 @@ and ![Windows](https://badgen.net/badge/icon/Windows?icon=windows&label) (e.g. ` if: always() with: junit_files: "test-results/**/*.xml" + trx_files: "test-results/**/*.trx" ``` See the [notes on running this action as a composite action](#running-as-a-composite-action) if you run it on Windows or macOS. @@ -180,10 +182,12 @@ With `comment_mode: off`, the `pull-requests: write` permission is not needed. ## Configuration -Files can be selected via the `files` option, which is optional and defaults to `*.xml` in the current working directory. -[It supports wildcards](https://docs.python.org/3/library/glob.html#glob.glob) like `*`, `**`, `?` and `[]`. +Files can be selected via the `junit_files` and `trx_files` options. +They support [glob wildcards](https://docs.python.org/3/library/glob.html#glob.glob) like `*`, `**`, `?` and `[]`. The `**` wildcard matches all files and directories recursively: `./`, `./*/`, `./*/*/`, etc. +At least one of `junit_files` and `trx_files` options have to be set. + You can provide multiple file patterns, one pattern per line. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`: @@ -198,7 +202,8 @@ The list of most notable options: |Option|Default Value|Description| |:-----|:-----:|:----------| -|`junit_files`|`*.xml`|File patterns of JUnit XML test result files. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| +|`junit_files`|One of `*_files` must be set|File patterns of JUnit XML test result files. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| +|`trx_files`|One of `*_files` must be set|File patterns of TRX test result files. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| |`check_name`|`"Test Results"`|An alternative name for the check result.| |`comment_title`|same as `check_name`|An alternative name for the pull request comment.| |`comment_mode`|`always`|The action posts comments to pull requests that are associated with the commit. Set to:
`always` - always comment
`changes` - comment when changes w.r.t. the target branch exist
`changes in failures` - when changes in the number of failures and errors exist
`changes in errors` - when changes in the number of (only) errors exist
`failures` - when failures or errors exist
`errors` - when (only) errors exist
`off` - to not create pull request comments.| diff --git a/action.yml b/action.yml index 2451f357..e9c0e89c 100644 --- a/action.yml +++ b/action.yml @@ -32,6 +32,9 @@ inputs: junit_files: description: 'File patterns of JUnit XML test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' required: false + trx_files: + description: 'File patterns of TRX test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' + required: false time_unit: description: 'Time values in the XML files have this unit. Supports "seconds" and "milliseconds".' default: 'seconds' diff --git a/composite/action.yml b/composite/action.yml index 131f4147..39c19515 100644 --- a/composite/action.yml +++ b/composite/action.yml @@ -32,6 +32,9 @@ inputs: junit_files: description: 'File patterns of JUnit XML test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' required: false + trx_files: + description: 'File patterns of TRX test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' + required: false time_unit: description: 'Time values in the XML files have this unit. Supports "seconds" and "milliseconds".' default: 'seconds' @@ -154,6 +157,7 @@ runs: # deprecated FILES: ${{ inputs.files }} JUNIT_FILES: ${{ inputs.junit_files }} + TRX_FILES: ${{ inputs.trx_files }} TIME_UNIT: ${{ inputs.time_unit }} REPORT_INDIVIDUAL_RUNS: ${{ inputs.report_individual_runs }} DEDUPLICATE_CLASSES_BY_FILE_NAME: ${{ inputs.deduplicate_classes_by_file_name }} diff --git a/python/publish/publisher.py b/python/publish/publisher.py index 40162f47..18cb16f9 100644 --- a/python/publish/publisher.py +++ b/python/publish/publisher.py @@ -43,7 +43,9 @@ class Settings: json_thousands_separator: str fail_on_errors: bool fail_on_failures: bool - junit_files_glob: str + # one of these *_files_glob must be set + junit_files_glob: Optional[str] + trx_files_glob: Optional[str] time_factor: float check_name: str comment_title: str diff --git a/python/publish_unit_test_results.py b/python/publish_unit_test_results.py index f8da8edd..2a7e072d 100644 --- a/python/publish_unit_test_results.py +++ b/python/publish_unit_test_results.py @@ -295,8 +295,16 @@ def get_settings(options: dict, gha: Optional[GithubAction] = None) -> Settings: test_changes_limit = get_var('TEST_CHANGES_LIMIT', options) or '10' check_var_condition(test_changes_limit.isnumeric(), f'TEST_CHANGES_LIMIT must be a positive integer or 0: {test_changes_limit}') + # remove when deprecated FILES is removed if get_var('FILES', options): gha.warning('Option FILES is deprecated, please use JUNIT_FILES instead!') + # replace with error when deprecated FILES is removed + default_junit_files_glob = None + if not any([get_var(f'{flavour}_FILES', options) + for flavour in ['JUNIT', 'TRX']]): + default_junit_files_glob = '*.xml' + gha.warning(f'At least one of the *_FILES options has to be set! ' + f'Falling back to deprecated default "{default_junit_files_glob}"') time_unit = get_var('TIME_UNIT', options) or 'seconds' time_factors = {'seconds': 1.0, 'milliseconds': 0.001} @@ -336,7 +344,8 @@ def get_settings(options: dict, gha: Optional[GithubAction] = None) -> Settings: json_thousands_separator=get_var('JSON_THOUSANDS_SEPARATOR', options) or punctuation_space, fail_on_errors=fail_on_errors, fail_on_failures=fail_on_failures, - junit_files_glob=get_var('JUNIT_FILES', options) or get_var('FILES', options) or '*.xml', + junit_files_glob=get_var('JUNIT_FILES', options) or get_var('FILES', options) or default_junit_files_glob, + trx_files_glob=get_var('TRX_FILES', options), time_factor=time_factor, check_name=check_name, comment_title=get_var('COMMENT_TITLE', options) or check_name, diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index 8f118ccf..fbb5a3ec 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -128,6 +128,13 @@ def test_get_var(self): self.assertEqual(get_var('NAME', dict(INPUT_NAME='precedence', NAME='value')), 'precedence') self.assertIsNone(get_var('NAME', dict(NAME=''))) + @classmethod + def get_settings_no_default_files(cls, + junit_files_glob=None, + trx_files_glob=None) -> Settings: + return cls.get_settings(junit_files_glob=junit_files_glob, + trx_files_glob=trx_files_glob) + @staticmethod def get_settings(token='token', api_url='http://github.api.url/', @@ -141,6 +148,7 @@ def get_settings(token='token', fail_on_errors=True, fail_on_failures=True, junit_files_glob='junit-files', + trx_files_glob='trx-files', time_factor=1.0, check_name='check name', comment_title='title', @@ -157,7 +165,7 @@ def get_settings(token='token', seconds_between_github_reads=1.5, seconds_between_github_writes=2.5, json_file=None, - json_thousands_separator=punctuation_space): + json_thousands_separator=punctuation_space) -> Settings: return Settings( token=token, api_url=api_url, @@ -173,6 +181,7 @@ def get_settings(token='token', fail_on_errors=fail_on_errors, fail_on_failures=fail_on_failures, junit_files_glob=junit_files_glob, + trx_files_glob=trx_files_glob, time_factor=time_factor, check_name=check_name, comment_title=comment_title, @@ -234,16 +243,28 @@ def test_get_settings_github_retries(self): self.do_test_get_settings(GITHUB_RETRIES=retries, expected=None) self.assertIn(f'GITHUB_RETRIES must be a positive integer or 0: {retries}', re.exception.args) + def test_get_settings_any_files(self): + for junit in [None, 'junit-file']: + for trx in [None, 'trx-file']: + with self.subTest(junit=junit, trx=trx): + any_flavour_set = any([flavour is not None for flavour in [junit, trx]]) + expected = self.get_settings(junit_files_glob=junit if any_flavour_set else '*.xml', + trx_files_glob=trx) + warnings = None if any_flavour_set else 'At least one of the *_FILES options has to be set! ' \ + 'Falling back to deprecated default "*.xml"' + + self.do_test_get_settings(JUNIT_FILES=junit, TRX_FILES=trx, expected=expected, warning=warnings) + def test_get_settings_junit_files(self): - self.do_test_get_settings(JUNIT_FILES='file', expected=self.get_settings(junit_files_glob='file')) - self.do_test_get_settings(JUNIT_FILES='file\nfile2', expected=self.get_settings(junit_files_glob='file\nfile2')) - self.do_test_get_settings(JUNIT_FILES=None, expected=self.get_settings(junit_files_glob='*.xml')) + self.do_test_get_settings_no_default_files(JUNIT_FILES='file', expected=self.get_settings_no_default_files(junit_files_glob='file')) + self.do_test_get_settings_no_default_files(JUNIT_FILES='file\nfile2', expected=self.get_settings_no_default_files(junit_files_glob='file\nfile2')) + self.do_test_get_settings_no_default_files(JUNIT_FILES=None, expected=self.get_settings_no_default_files(junit_files_glob='*.xml'), warning='At least one of the *_FILES options has to be set! Falling back to deprecated default "*.xml"') # this is the deprecated version of JUNIT_FILES - self.do_test_get_settings(JUNIT_FILES='junit-file', FILES='file', expected=self.get_settings(junit_files_glob='junit-file'), warning='Option FILES is deprecated, please use JUNIT_FILES instead!') - self.do_test_get_settings(JUNIT_FILES=None, FILES='file', expected=self.get_settings(junit_files_glob='file'), warning='Option FILES is deprecated, please use JUNIT_FILES instead!') - self.do_test_get_settings(JUNIT_FILES=None, FILES='file\nfile2', expected=self.get_settings(junit_files_glob='file\nfile2'), warning='Option FILES is deprecated, please use JUNIT_FILES instead!') - self.do_test_get_settings(JUNIT_FILES=None, FILES=None, expected=self.get_settings(junit_files_glob='*.xml')) + self.do_test_get_settings_no_default_files(JUNIT_FILES='junit-file', FILES='file', expected=self.get_settings_no_default_files(junit_files_glob='junit-file'), warning='Option FILES is deprecated, please use JUNIT_FILES instead!') + self.do_test_get_settings_no_default_files(JUNIT_FILES=None, FILES='file', expected=self.get_settings_no_default_files(junit_files_glob='file'), warning=['Option FILES is deprecated, please use JUNIT_FILES instead!', 'At least one of the *_FILES options has to be set! Falling back to deprecated default "*.xml"']) + self.do_test_get_settings_no_default_files(JUNIT_FILES=None, FILES='file\nfile2', expected=self.get_settings_no_default_files(junit_files_glob='file\nfile2'), warning=['Option FILES is deprecated, please use JUNIT_FILES instead!', 'At least one of the *_FILES options has to be set! Falling back to deprecated default "*.xml"']) + self.do_test_get_settings_no_default_files(JUNIT_FILES=None, FILES=None, expected=self.get_settings_no_default_files(junit_files_glob='*.xml'), warning='At least one of the *_FILES options has to be set! Falling back to deprecated default "*.xml"') def test_get_settings_time_unit(self): self.do_test_get_settings(TIME_UNIT=None, expected=self.get_settings(time_factor=1.0)) @@ -448,6 +469,19 @@ def test_get_settings_missing_github_vars(self): self.do_test_get_settings(GITHUB_REPOSITORY=None) self.assertEqual('GitHub repository must be provided via action input or environment variable GITHUB_REPOSITORY', str(re.exception)) + def do_test_get_settings_no_default_files(self, + event: dict = {}, + gha: Optional[GithubAction] = None, + warning: Optional[Union[str, List[str]]] = None, + expected: Settings = get_settings.__func__(), + **kwargs): + options = dict(**kwargs) + for flavour in ['JUNIT', 'TRX']: + if f'{flavour}_FILES' not in kwargs: + options[f'{flavour}_FILES'] = None + + self.do_test_get_settings(event, gha, warning, expected, **options) + def do_test_get_settings(self, event: dict = {}, gha: Optional[GithubAction] = None, @@ -476,6 +510,7 @@ def do_test_get_settings(self, GITHUB_REPOSITORY='repo', COMMIT='commit', # defaults to get_commit_sha(event, event_name) JUNIT_FILES='junit-files', + TRX_FILES='trx-files', COMMENT_TITLE='title', # defaults to check name COMMENT_MODE='always', JOB_SUMMARY='true', @@ -840,8 +875,12 @@ def do_raise(*args): m.side_effect = do_raise main(settings, gha) - gha.warning.assert_called_once_with('This action is running on a pull_request event for a fork repository. ' - 'It cannot do anything useful like creating check runs or pull request ' - 'comments. To run the action on fork repository pull requests, see ' - 'https://github.com/EnricoMi/publish-unit-test-result-action/blob/v1.20' - '/README.md#support-fork-repositories-and-dependabot-branches') + gha.warning.assert_has_calls([ + mock.call('This action is running on a pull_request event for a fork repository. ' + 'It cannot do anything useful like creating check runs or pull request ' + 'comments. To run the action on fork repository pull requests, see ' + 'https://github.com/EnricoMi/publish-unit-test-result-action/blob/v1.20' + '/README.md#support-fork-repositories-and-dependabot-branches'), + mock.call('At least one of the *_FILES options has to be set! ' + 'Falling back to deprecated default "*.xml"') + ], any_order=True) diff --git a/python/test/test_publisher.py b/python/test/test_publisher.py index 1a1285f6..a4fd3de9 100644 --- a/python/test/test_publisher.py +++ b/python/test/test_publisher.py @@ -106,6 +106,7 @@ def create_settings(comment_mode=comment_mode_always, fail_on_errors=True, fail_on_failures=True, junit_files_glob='*.xml', + trx_files_glob=None, time_factor=1.0, check_name='Check Name', comment_title='Comment Title', From 6fbc70c5430d15f4c855dc733d4ce3e5faaa923d Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 17:43:00 +0200 Subject: [PATCH 02/32] Parse TRX files --- python/publish/junit.py | 16 ++- python/publish/trx.py | 34 +++++ python/publish/xslt/trx-to-junit.xslt | 146 +++++++++++++++++++++ python/publish_unit_test_results.py | 69 ++++++---- python/requirements.txt | 2 + python/test/files/mstest.trx | 179 ++++++++++++++++++++++++++ python/test/test_action_script.py | 45 ++++++- python/test/test_junit.py | 62 ++++----- python/test/test_publish.py | 57 ++++---- 9 files changed, 524 insertions(+), 86 deletions(-) create mode 100644 python/publish/trx.py create mode 100644 python/publish/xslt/trx-to-junit.xslt create mode 100644 python/test/files/mstest.trx diff --git a/python/publish/junit.py b/python/publish/junit.py index 2866d2dd..faa685e0 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -119,9 +119,8 @@ def close(self) -> Element: def parse_junit_xml_files(files: Iterable[str], - time_factor: float = 1.0, drop_testcases: bool = False, - progress: Callable[[Tuple[str, Union[JUnitXml, BaseException]]], Tuple[str, Union[JUnitXml, BaseException]]] = lambda x: x) -> ParsedUnitTestResults: + progress: Callable[[Tuple[str, Union[JUnitXml, BaseException]]], Tuple[str, Union[JUnitXml, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitXml, BaseException]]]: """Parses junit xml files and returns aggregated statistics as a ParsedUnitTestResults.""" def parse(path: str) -> Union[JUnitXml, BaseException]: if not os.path.exists(path): @@ -137,17 +136,22 @@ def parse(path: str) -> Union[JUnitXml, BaseException]: except BaseException as e: return e - parsed_files = [progress((result_file, parse(result_file))) for result_file in files] + return [progress((result_file, parse(result_file))) for result_file in files] + + +def process_junit_xml_elems(elems: Iterable[Tuple[str, Union[JUnitXml, BaseException]]], + time_factor: float = 1.0) -> ParsedUnitTestResults: junits = [(result_file, junit) - for result_file, junit in parsed_files + for result_file, junit in elems if not isinstance(junit, BaseException)] errors = [ParseError.from_exception(result_file, exception) - for result_file, exception in parsed_files + for result_file, exception in elems if isinstance(exception, BaseException)] suites = [(result_file, suite) for result_file, junit in junits for suite in (junit if junit._tag == "testsuites" else [junit])] + suite_tests = sum([suite.tests for result_file, suite in suites]) suite_skipped = sum([suite.skipped + suite.disabled for result_file, suite in suites]) suite_failures = sum([suite.failures for result_file, suite in suites]) @@ -192,7 +196,7 @@ def get_cases(suite: TestSuite) -> List[TestCase]: ] return ParsedUnitTestResults( - files=len(parsed_files), + files=len(list(elems)), errors=errors, # test state counts from suites suites=len(suites), diff --git a/python/publish/trx.py b/python/publish/trx.py new file mode 100644 index 00000000..998a7cb3 --- /dev/null +++ b/python/publish/trx.py @@ -0,0 +1,34 @@ +import os +from typing import Iterable, Tuple, Union, Callable + +from junitparser import JUnitXml +from lxml import etree + +from . import xslt + +try: + import importlib.resources as pkg_resources +except ImportError: + import importlib_resources as pkg_resources + +with pkg_resources.open_text(xslt, 'trx-to-junit.xslt') as r: + transform_trx_to_junit = etree.XSLT(etree.parse(r)) + + +def parse_trx_files(files: Iterable[str], + progress: Callable[[Tuple[str, Union[JUnitXml, BaseException]]], Tuple[str, Union[JUnitXml, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitXml, BaseException]]]: + """Parses trx files and returns aggregated statistics as a ParsedUnitTestResults.""" + def parse(path: str) -> Union[JUnitXml, BaseException]: + if not os.path.exists(path): + return FileNotFoundError(f'File does not exist.') + if os.stat(path).st_size == 0: + return Exception(f'File is empty.') + + try: + trx = etree.parse(path) + junit = transform_trx_to_junit(trx) + return JUnitXml.fromelem(junit.getroot()) + except BaseException as e: + return e + + return [progress((result_file, parse(result_file))) for result_file in files] diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt new file mode 100644 index 00000000..fd17a998 --- /dev/null +++ b/python/publish/xslt/trx-to-junit.xslt @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MESSAGE: + + +++++++++++++++++++ + STACK TRACE: + + + + + + MESSAGE: + + +++++++++++++++++++ + STACK TRACE: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MESSAGE: + + +++++++++++++++++++ + STACK TRACE: + + + + + + MESSAGE: + + +++++++++++++++++++ + STACK TRACE: + + + + + + + + + + + + diff --git a/python/publish_unit_test_results.py b/python/publish_unit_test_results.py index 2a7e072d..cbf665ad 100644 --- a/python/publish_unit_test_results.py +++ b/python/publish_unit_test_results.py @@ -1,3 +1,4 @@ +import itertools import json import logging import os @@ -18,11 +19,11 @@ pull_request_build_modes, fail_on_modes, fail_on_mode_errors, fail_on_mode_failures, \ comment_mode_off, comment_mode_always, comment_modes, comment_modes_deprecated, punctuation_space from publish.github_action import GithubAction -from publish.junit import parse_junit_xml_files +from publish.junit import parse_junit_xml_files, process_junit_xml_elems from publish.progress import progress_logger from publish.publisher import Publisher, Settings from publish.retry import GitHubRetry -from publish.unittestresults import get_test_results, get_stats, ParsedUnitTestResults +from publish.unittestresults import get_test_results, get_stats, ParsedUnitTestResults, ParsedUnitTestResultsWithCommit logger = logging.getLogger('publish') @@ -59,6 +60,21 @@ def get_files(multiline_files_globs: str) -> List[str]: return list(included - excluded) +def expand_glob(pattern: Optional[str], gha: GithubAction) -> List[str]: + if not pattern: + return [] + + files = get_files(pattern) + + if len(files) == 0: + gha.warning(f'Could not find any files for {pattern}') + else: + logger.info(f'Reading {pattern} ({get_number_of_files(files)}, {get_files_size(files)})') + logger.debug(f'reading {list(files)}') + + return files + + def get_files_size(files: List[str]) -> str: try: size = sum([os.path.getsize(file) for file in files]) @@ -75,6 +91,31 @@ def get_number_of_files(files: List[str]) -> str: return number_of_files +def parse_files(settings: Settings, gha: GithubAction) -> ParsedUnitTestResultsWithCommit: + # expand file globs + junit_files = expand_glob(settings.junit_files_glob, gha) + trx_files = expand_glob(settings.trx_files_glob, gha) + + elems = [] + + # parse files, log the progress + # https://github.com/EnricoMi/publish-unit-test-result-action/issues/304 + with progress_logger(items=len(junit_files + trx_files), + interval_seconds=10, + progress_template='Read {progress} files in {time}', + finish_template='Finished reading {observations} files in {duration}', + progress_item_type=Tuple[str, Any], + logger=logger) as progress: + if junit_files: + elems.extend(parse_junit_xml_files(junit_files, settings.ignore_runs, progress)) + if trx_files: + from publish.trx import parse_trx_files + elems.extend(parse_trx_files(trx_files, progress)) + + # get the test results + return process_junit_xml_elems(elems, settings.time_factor).with_commit(settings.commit) + + def main(settings: Settings, gha: GithubAction) -> None: # we cannot create a check run or pull request comment when running on pull_request event from a fork # when event_file is given we assume proper setup as in README.md#support-fork-repositories-and-dependabot-branches @@ -88,32 +129,16 @@ def main(settings: Settings, gha: GithubAction) -> None: f'https://github.com/EnricoMi/publish-unit-test-result-action/blob/v1.20/README.md#support-fork-repositories-and-dependabot-branches') return - # resolve the files_glob to files - files = get_files(settings.junit_files_glob) - if len(files) == 0: - gha.warning(f'Could not find any files for {settings.junit_files_glob}') - else: - logger.info(f'Reading {settings.junit_files_glob} ({get_number_of_files(files)}, {get_files_size(files)})') - logger.debug(f'reading {list(files)}') - # log the available RAM to help spot OOM issues: # https://github.com/EnricoMi/publish-unit-test-result-action/issues/231 # https://github.com/EnricoMi/publish-unit-test-result-action/issues/304 avail_mem = humanize.naturalsize(psutil.virtual_memory().available, binary=True) logger.info(f'Available memory to read files: {avail_mem}') - # log the progress - # https://github.com/EnricoMi/publish-unit-test-result-action/issues/304 - with progress_logger(items=len(files), - interval_seconds=10, - progress_template='Read {progress} files in {time}', - finish_template='Finished reading {observations} files in {duration}', - progress_item_type=Tuple[str, Any], - logger=logger) as progress: - # get the test results - parsed = parse_junit_xml_files(files, settings.time_factor, settings.ignore_runs, progress).with_commit(settings.commit) - [gha.error(message=f'Error processing result file: {error.message}', file=error.file, line=error.line, column=error.column) - for error in parsed.errors] + # get the unit test results + parsed = parse_files(settings, gha) + [gha.error(message=f'Error processing result file: {error.message}', file=error.file, line=error.line, column=error.column) + for error in parsed.errors] # process the parsed results results = get_test_results(parsed, settings.dedup_classes_by_file_name) diff --git a/python/requirements.txt b/python/requirements.txt index 31a99ee4..de2d2e53 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,6 +1,8 @@ # dataclasses does not exist before Python3.7, needed as dependency dataclasses;python_version<"3.7" humanize==3.14.0 +# importlib.resources does not exist before Python3.7, needed as dependency +importlib_resources;python_version<"3.7" junitparser==2.5.0 lxml==4.8.0 psutil==5.9.1 diff --git a/python/test/files/mstest.trx b/python/test/files/mstest.trx new file mode 100644 index 00000000..3da7428b --- /dev/null +++ b/python/test/files/mstest.trx @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + Fail to add two numbers + + + + FeatureTitle + Addition + + + + + + Add two numbers + + + + FeatureTitle + Addition + + + + + + Adding several numbers + + + + FeatureTitle + Addition + + + VariantName + 40 + + + Parameter:Second Number + 50 + + + Parameter:Result + 90 + + + Parameter:First Number + 40 + + + + + + Adding several numbers + + + + FeatureTitle + Addition + + + VariantName + 60 + + + Parameter:Second Number + 70 + + + Parameter:Result + 130 + + + Parameter:First Number + 60 + + + + + + + + + + + + + + + + + + + + Given I have entered 40 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(40) (0.0s) + And I have entered 50 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(50) (0.0s) + When I press add + -> done: Steps.WhenIPressAdd() (0.0s) + Then the result should be 90 on the screen + -> done: Steps.ThenTheResultShouldBePass(90) (0.0s) + + + + + + + Given I have entered 60 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(60) (0.0s) + And I have entered 70 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(70) (0.0s) + When I press add + -> done: Steps.WhenIPressAdd() (0.0s) + Then the result should be 130 on the screen + -> done: Steps.ThenTheResultShouldBePass(130) (0.0s) + + + + + + + Given I have entered 50 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(50) (0.0s) + And I have entered 70 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(70) (0.0s) + When I press add + -> done: Steps.WhenIPressAdd() (0.0s) + Then the result should be 120 on the screen + -> done: Steps.ThenTheResultShouldBePass(120) (0.0s) + + + + + + + Given I have entered 50 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(50) (0.0s) + And I have entered -1 into the calculator + -> done: Steps.GivenIHaveEnteredSomethingIntoTheCalculator(-1) (0.0s) + When I press add + -> done: Steps.WhenIPressAdd() (0.0s) + Then the result should be -50 on the screen + -> error: Assert.NotEqual() Failure + + + + Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception: + Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure + + + at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Steps.cs:line 28 + at lambda_method(Closure , IContextManager , Int32 ) + at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Addition.feature.cs:line 0 + at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Addition.feature:line 18 + + + + + + diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index fbb5a3ec..594c4808 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -1,6 +1,7 @@ import json import logging import os +import pathlib import sys import tempfile import unittest @@ -13,9 +14,11 @@ from publish.github_action import GithubAction from publish.unittestresults import ParsedUnitTestResults, ParseError from publish_unit_test_results import get_conclusion, get_commit_sha, get_var, \ - get_settings, get_annotations_config, Settings, get_files, throttle_gh_request_raw, is_float, main + get_settings, get_annotations_config, Settings, get_files, throttle_gh_request_raw, is_float, parse_files, main from test import chdir +test_files_path = pathlib.Path(__file__).parent / 'files' + event = dict(pull_request=dict(head=dict(sha='event_sha'))) @@ -791,6 +794,46 @@ def test_get_files_with_mock(self): self.assertEqual([], files) self.assertEqual([mock.call('*.txt', recursive=True), mock.call('file1.txt', recursive=True)], m.call_args_list) + def test_parse_files(self): + gha = mock.MagicMock() + settings = self.get_settings(junit_files_glob=str(test_files_path / '*.xml'), + trx_files_glob=str(test_files_path / '*.trx')) + actual = parse_files(settings, gha) + self.assertEqual(27, actual.files) + self.assertEqual(4, len(actual.errors)) + self.assertEqual(24, actual.suites) + self.assertEqual(454, actual.suite_tests) + self.assertEqual(57, actual.suite_skipped) + self.assertEqual(29, actual.suite_failures) + self.assertEqual(7, actual.suite_errors) + self.assertEqual(2361, actual.suite_time) + self.assertEqual(444, len(actual.cases)) + self.assertEqual('commit', actual.commit) + gha.warning.assert_not_called() + gha.error.assert_not_called() + + def test_parse_files_no_matches(self): + gha = mock.MagicMock() + with tempfile.TemporaryDirectory() as path: + settings = self.get_settings(junit_files_glob=str(pathlib.Path(path) / 'junit-not-there'), + trx_files_glob=str(pathlib.Path(path) / 'trx-not-there')) + actual = parse_files(settings, gha) + self.assertEqual(0, actual.files) + self.assertEqual(0, len(actual.errors)) + self.assertEqual(0, actual.suites) + self.assertEqual(0, actual.suite_tests) + self.assertEqual(0, actual.suite_skipped) + self.assertEqual(0, actual.suite_failures) + self.assertEqual(0, actual.suite_errors) + self.assertEqual(0, actual.suite_time) + self.assertEqual(0, len(actual.cases)) + self.assertEqual('commit', actual.commit) + gha.warning.assert_has_calls([ + mock.call(f'Could not find any files for {path}/junit-not-there'), + mock.call(f'Could not find any files for {path}/trx-not-there') + ]) + gha.error.assert_not_called() + def test_throttle_gh_request_raw(self): logging.root.level = logging.getLevelName('INFO') logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)5s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S %z') diff --git a/python/test/test_junit.py b/python/test/test_junit.py index 11a21574..f8d640bd 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -5,7 +5,7 @@ from junitparser import JUnitXml, Element, version -from publish.junit import parse_junit_xml_files, get_results, get_result, get_content, get_message, Disabled +from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, get_message, Disabled from publish.unittestresults import ParsedUnitTestResults, UnitTestCase, ParseError test_files_path = pathlib.Path(__file__).parent / 'files' @@ -27,9 +27,9 @@ def text(self): class TestJunit(unittest.TestCase): - def test_parse_junit_xml_files_with_no_files(self): + def test_process_parse_junit_xml_files_with_no_files(self): self.assertEqual( - parse_junit_xml_files([]), + process_junit_xml_elems(parse_junit_xml_files([])), ParsedUnitTestResults( files=0, errors=[], @@ -42,10 +42,10 @@ def test_parse_junit_xml_files_with_no_files(self): cases=[] )) - def test_parse_junit_xml_files_with_spark_diff_file(self): + def test_process_parse_junit_xml_files_with_spark_diff_file(self): result_file = str(test_files_path / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( files=1, errors=[], @@ -114,10 +114,10 @@ def test_parse_junit_xml_files_with_spark_diff_file(self): ] )) - def test_parse_junit_xml_files_with_horovod_file(self): + def test_process_parse_junit_xml_files_with_horovod_file(self): result_file = str(test_files_path / 'junit.mpi.integration.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( files=1, errors=[], @@ -164,10 +164,10 @@ def test_parse_junit_xml_files_with_horovod_file(self): ] )) - def test_parse_junit_xml_files_with_spark_extension_file(self): + def test_process_parse_junit_xml_files_with_spark_extension_file(self): result_file = str(test_files_path / 'junit.fail.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( files=1, errors=[], @@ -261,10 +261,10 @@ def test_parse_junit_xml_files_with_spark_extension_file(self): ] )) - def test_parse_junit_xml_files_with_minimal_attributes_file(self): + def test_process_parse_junit_xml_files_with_minimal_attributes_file(self): result_file = str(test_files_path / 'minimal-attributes.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( cases=[ UnitTestCase( @@ -325,7 +325,7 @@ def test_parse_junit_xml_files_with_minimal_attributes_file(self): def test_parse_xunit_xml_file(self): result_file = str(test_files_path / 'xunit.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( cases=[ UnitTestCase( @@ -361,10 +361,10 @@ def test_parse_xunit_xml_file(self): suites=1 )) - def test_parse_junit_xml_files_with_no_attributes_file(self): + def test_process_parse_junit_xml_files_with_no_attributes_file(self): result_file = str(test_files_path / 'no-attributes.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( cases=[], files=1, @@ -377,10 +377,10 @@ def test_parse_junit_xml_files_with_no_attributes_file(self): suites=1 )) - def test_parse_junit_xml_files_with_empty_file(self): + def test_process_parse_junit_xml_files_with_empty_file(self): result_file = str(test_files_path / 'empty.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( cases=[], files=1, @@ -393,12 +393,12 @@ def test_parse_junit_xml_files_with_empty_file(self): suites=0 )) - def test_parse_junit_xml_files_with_non_xml_file(self): + def test_process_parse_junit_xml_files_with_non_xml_file(self): result_file = test_files_path / 'non-xml.xml' result_filename = str(result_file) expected_filename = ('file:/' + result_file.absolute().as_posix()) if result_file.drive else result_file.name self.assertEqual( - parse_junit_xml_files([result_filename]), + process_junit_xml_elems(parse_junit_xml_files([result_filename])), ParsedUnitTestResults( files=1, errors=[ParseError(file=result_filename, message=f"Start tag expected, '<' not found, line 1, column 1 ({expected_filename}, line 1)")], @@ -411,12 +411,12 @@ def test_parse_junit_xml_files_with_non_xml_file(self): cases=[] )) - def test_parse_junit_xml_files_with_corrupt_xml_file(self): + def test_process_parse_junit_xml_files_with_corrupt_xml_file(self): result_file = test_files_path / 'corrupt-xml.xml' result_filename = str(result_file) expected_filename = ('file:/' + result_file.absolute().as_posix()) if result_file.drive else result_file.name self.assertEqual( - parse_junit_xml_files([result_filename]), + process_junit_xml_elems(parse_junit_xml_files([result_filename])), ParsedUnitTestResults( files=1, errors=[ParseError(file=result_filename, message=f'Premature end of data in tag skipped line 9, line 11, column 22 ({expected_filename}, line 11)')], @@ -429,10 +429,10 @@ def test_parse_junit_xml_files_with_corrupt_xml_file(self): cases=[] )) - def test_parse_junit_xml_files_with_non_junit_file(self): + def test_process_parse_junit_xml_files_with_non_junit_file(self): result_file = str(test_files_path / 'non-junit.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( files=1, errors=[ParseError(file=result_file, message='Invalid format.')], @@ -445,9 +445,9 @@ def test_parse_junit_xml_files_with_non_junit_file(self): cases=[] )) - def test_parse_junit_xml_files_with_non_existing_file(self): + def test_process_parse_junit_xml_files_with_non_existing_file(self): self.assertEqual( - parse_junit_xml_files(['files/does_not_exist.xml']), + process_junit_xml_elems(parse_junit_xml_files(['files/does_not_exist.xml'])), ParsedUnitTestResults( cases=[], files=1, @@ -468,17 +468,17 @@ def test_junitparser_locale(self): @unittest.skipIf(LooseVersion(version) < LooseVersion('2.0.0'), 'multiple results per test case not supported by junitparser') def test_parse_junit_xml_file_with_multiple_results(self): - junit = parse_junit_xml_files([str(test_files_path / 'junit.multiresult.xml')]) + junit = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'junit.multiresult.xml')])) self.assertEqual(4, len(junit.cases)) self.assertEqual("error", junit.cases[0].result) self.assertEqual("failure", junit.cases[1].result) self.assertEqual("skipped", junit.cases[2].result) self.assertEqual("success", junit.cases[3].result) - def test_parse_junit_xml_file_with_disabled_tests(self): + def test_process_parse_junit_xml_file_with_disabled_tests(self): result_file = str(test_files_path / 'disabled.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( cases=[UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result[0]', result='success', message=None, content=None, time=0.0), UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:72: error: check_eq(3628800, 3628801)', content=None, time=0.0), @@ -521,10 +521,10 @@ def test_parse_junit_xml_file_with_disabled_tests(self): suites=2 )) - def test_parse_junit_xml_files_xml_entities_in_test_names(self): + def test_process_parse_junit_xml_files_xml_entities_in_test_names(self): result_file = str(test_files_path / 'with-xml-entities.xml') self.assertEqual( - parse_junit_xml_files([result_file]), + process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( files=1, errors=[], @@ -542,12 +542,12 @@ def test_parse_junit_xml_files_xml_entities_in_test_names(self): ] )) - def test_parse_junit_xml_files_with_time_factor(self): + def test_process_parse_junit_xml_files_with_time_factor(self): result_file = str(test_files_path / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: with self.subTest(time_factor=time_factor): self.assertEqual( - parse_junit_xml_files([result_file], time_factor), + process_junit_xml_elems(parse_junit_xml_files([result_file]), time_factor), ParsedUnitTestResults( files=1, errors=[], diff --git a/python/test/test_publish.py b/python/test/test_publish.py index 7526c875..3200b010 100644 --- a/python/test/test_publish.py +++ b/python/test/test_publish.py @@ -18,7 +18,7 @@ get_test_changes_md, get_test_changes_list_md, get_test_changes_summary_md, \ get_case_annotations, get_case_annotation, get_all_tests_list_annotation, \ get_skipped_tests_list_annotation, get_case_messages, chunk_test_list -from publish.junit import parse_junit_xml_files +from publish.junit import parse_junit_xml_files, process_junit_xml_elems from publish.unittestresults import get_stats, UnitTestCase, ParseError from publish.unittestresults import get_test_results from test import d, n @@ -2007,16 +2007,17 @@ def test_chunk(self): chunks) def test_files(self): - parsed = parse_junit_xml_files([str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), - str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), - str(test_files_path / 'junit.gloo.elastic.xml'), - str(test_files_path / 'junit.gloo.standalone.xml'), - str(test_files_path / 'junit.gloo.static.xml'), - str(test_files_path / 'junit.mpi.integration.xml'), - str(test_files_path / 'junit.mpi.standalone.xml'), - str(test_files_path / 'junit.mpi.static.xml'), - str(test_files_path / 'junit.spark.integration.1.xml'), - str(test_files_path / 'junit.spark.integration.2.xml')]).with_commit('example') + parsed = process_junit_xml_elems( + parse_junit_xml_files([str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), + str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), + str(test_files_path / 'junit.gloo.elastic.xml'), + str(test_files_path / 'junit.gloo.standalone.xml'), + str(test_files_path / 'junit.gloo.static.xml'), + str(test_files_path / 'junit.mpi.integration.xml'), + str(test_files_path / 'junit.mpi.standalone.xml'), + str(test_files_path / 'junit.mpi.static.xml'), + str(test_files_path / 'junit.spark.integration.1.xml'), + str(test_files_path / 'junit.spark.integration.2.xml')])).with_commit('example') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2027,7 +2028,7 @@ def test_files(self): f'Results for commit example.\n')) def test_file_without_cases(self): - parsed = parse_junit_xml_files([str(test_files_path / 'no-cases.xml')]).with_commit('a commit sha') + parsed = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'no-cases.xml')])).with_commit('a commit sha') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2038,7 +2039,7 @@ def test_file_without_cases(self): f'Results for commit a commit.\n')) def test_file_without_cases_but_with_tests(self): - parsed = parse_junit_xml_files([str(test_files_path / 'no-cases-but-tests.xml')]).with_commit('a commit sha') + parsed = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'no-cases-but-tests.xml')])).with_commit('a commit sha') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2049,7 +2050,7 @@ def test_file_without_cases_but_with_tests(self): f'Results for commit a commit.\n')) def test_non_parsable_file(self): - parsed = parse_junit_xml_files(['files/empty.xml']).with_commit('a commit sha') + parsed = process_junit_xml_elems(parse_junit_xml_files(['files/empty.xml'])).with_commit('a commit sha') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2061,7 +2062,7 @@ def test_non_parsable_file(self): f'Results for commit a commit.\n')) def test_files_with_testcase_in_testcase(self): - parsed = parse_junit_xml_files([str(test_files_path / 'testcase-in-testcase.xml')]).with_commit('example') + parsed = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'testcase-in-testcase.xml')])).with_commit('example') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2072,17 +2073,21 @@ def test_files_with_testcase_in_testcase(self): f'Results for commit example.\n')) def test_files_without_annotations(self): - parsed = parse_junit_xml_files([str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), - str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), - str(test_files_path / 'junit.gloo.elastic.xml'), - str(test_files_path / 'junit.gloo.standalone.xml'), - str(test_files_path / 'junit.gloo.static.xml'), - str(test_files_path / 'junit.mpi.integration.xml'), - str(test_files_path / 'junit.mpi.standalone.xml'), - str(test_files_path / 'junit.mpi.static.xml'), - str(test_files_path / 'junit.spark.integration.1.xml'), - str(test_files_path / 'junit.spark.integration.2.xml')], - drop_testcases=True).with_commit('example') + parsed = process_junit_xml_elems( + parse_junit_xml_files( + [str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), + str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), + str(test_files_path / 'junit.gloo.elastic.xml'), + str(test_files_path / 'junit.gloo.standalone.xml'), + str(test_files_path / 'junit.gloo.static.xml'), + str(test_files_path / 'junit.mpi.integration.xml'), + str(test_files_path / 'junit.mpi.standalone.xml'), + str(test_files_path / 'junit.mpi.static.xml'), + str(test_files_path / 'junit.spark.integration.1.xml'), + str(test_files_path / 'junit.spark.integration.2.xml')], + drop_testcases=True + ) + ).with_commit('example') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) From 2ac64d00e42a0cb5f8adcf7707b5204843f4348e Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 18:10:27 +0200 Subject: [PATCH 03/32] Remove useage of pkg_resources --- python/publish/trx.py | 10 ++-------- python/requirements.txt | 2 -- python/test/test_action_script.py | 18 +++++++++++------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/python/publish/trx.py b/python/publish/trx.py index 998a7cb3..b0891338 100644 --- a/python/publish/trx.py +++ b/python/publish/trx.py @@ -1,17 +1,11 @@ import os +import pathlib from typing import Iterable, Tuple, Union, Callable from junitparser import JUnitXml from lxml import etree -from . import xslt - -try: - import importlib.resources as pkg_resources -except ImportError: - import importlib_resources as pkg_resources - -with pkg_resources.open_text(xslt, 'trx-to-junit.xslt') as r: +with (pathlib.Path(__file__).parent / 'xslt' / 'trx-to-junit.xslt').open('r', encoding='utf-8') as r: transform_trx_to_junit = etree.XSLT(etree.parse(r)) diff --git a/python/requirements.txt b/python/requirements.txt index de2d2e53..31a99ee4 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -1,8 +1,6 @@ # dataclasses does not exist before Python3.7, needed as dependency dataclasses;python_version<"3.7" humanize==3.14.0 -# importlib.resources does not exist before Python3.7, needed as dependency -importlib_resources;python_version<"3.7" junitparser==2.5.0 lxml==4.8.0 psutil==5.9.1 diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index 594c4808..e8a6353c 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -799,6 +799,10 @@ def test_parse_files(self): settings = self.get_settings(junit_files_glob=str(test_files_path / '*.xml'), trx_files_glob=str(test_files_path / '*.trx')) actual = parse_files(settings, gha) + + gha.warning.assert_not_called() + gha.error.assert_not_called() + self.assertEqual(27, actual.files) self.assertEqual(4, len(actual.errors)) self.assertEqual(24, actual.suites) @@ -809,8 +813,6 @@ def test_parse_files(self): self.assertEqual(2361, actual.suite_time) self.assertEqual(444, len(actual.cases)) self.assertEqual('commit', actual.commit) - gha.warning.assert_not_called() - gha.error.assert_not_called() def test_parse_files_no_matches(self): gha = mock.MagicMock() @@ -818,6 +820,13 @@ def test_parse_files_no_matches(self): settings = self.get_settings(junit_files_glob=str(pathlib.Path(path) / 'junit-not-there'), trx_files_glob=str(pathlib.Path(path) / 'trx-not-there')) actual = parse_files(settings, gha) + + gha.warning.assert_has_calls([ + mock.call(f'Could not find any files for {path}/junit-not-there'), + mock.call(f'Could not find any files for {path}/trx-not-there') + ]) + gha.error.assert_not_called() + self.assertEqual(0, actual.files) self.assertEqual(0, len(actual.errors)) self.assertEqual(0, actual.suites) @@ -828,11 +837,6 @@ def test_parse_files_no_matches(self): self.assertEqual(0, actual.suite_time) self.assertEqual(0, len(actual.cases)) self.assertEqual('commit', actual.commit) - gha.warning.assert_has_calls([ - mock.call(f'Could not find any files for {path}/junit-not-there'), - mock.call(f'Could not find any files for {path}/trx-not-there') - ]) - gha.error.assert_not_called() def test_throttle_gh_request_raw(self): logging.root.level = logging.getLevelName('INFO') From 78e8387a18b45523222ee22f4d111d59a03fcacc Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 18:14:24 +0200 Subject: [PATCH 04/32] Fix tests for Windows --- python/test/test_action_script.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index e8a6353c..98334219 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -817,13 +817,15 @@ def test_parse_files(self): def test_parse_files_no_matches(self): gha = mock.MagicMock() with tempfile.TemporaryDirectory() as path: - settings = self.get_settings(junit_files_glob=str(pathlib.Path(path) / 'junit-not-there'), - trx_files_glob=str(pathlib.Path(path) / 'trx-not-there')) + missing_junit = str(pathlib.Path(path) / 'junit-not-there') + missing_trx = str(pathlib.Path(path) / 'trx-not-there') + settings = self.get_settings(junit_files_glob=missing_junit, + trx_files_glob=missing_trx) actual = parse_files(settings, gha) gha.warning.assert_has_calls([ - mock.call(f'Could not find any files for {path}/junit-not-there'), - mock.call(f'Could not find any files for {path}/trx-not-there') + mock.call(f'Could not find any files for {missing_junit}'), + mock.call(f'Could not find any files for {missing_trx}') ]) gha.error.assert_not_called() From a956ab09c4f7f1ef5b67f3a6493df4d258bd66de Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 20:28:44 +0200 Subject: [PATCH 05/32] Add credits for xslt and example trx files --- python/publish/xslt/trx-to-junit.xslt | 3 ++- python/test/files/mstest.trx | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index fd17a998..7fdc0917 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -1,5 +1,6 @@ - + + diff --git a/python/test/files/mstest.trx b/python/test/files/mstest.trx index 3da7428b..f9974d25 100644 --- a/python/test/files/mstest.trx +++ b/python/test/files/mstest.trx @@ -1,4 +1,5 @@ + From 7f84b6c87a2099410b76261ad69e401f3836dc0d Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Tue, 24 May 2022 09:34:00 +0200 Subject: [PATCH 06/32] More README.md and actions.yml changes --- README.md | 9 ++++----- action.yml | 4 ++-- composite/action.yml | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0478d82a..e413c0a7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [![Test Results](https://gist.githubusercontent.com/EnricoMi/612cb538c14731f1a8fefe504f519395/raw/badge.svg)](https://gist.githubusercontent.com/EnricoMi/612cb538c14731f1a8fefe504f519395/raw/badge.svg) This [GitHub Action](https://github.com/actions) analyses test result files and -publishes the results on GitHub. It supports the JUnit XML file format and runs on Linux, macOS and Windows. +publishes the results on GitHub. It supports the JUnit XML and TRX file formats, and runs on Linux, macOS and Windows. You can add this action to your GitHub workflow for ![Ubuntu Linux](https://badgen.net/badge/icon/Ubuntu?icon=terminal&label) (e.g. `runs-on: ubuntu-latest`) runners: @@ -202,12 +202,11 @@ The list of most notable options: |Option|Default Value|Description| |:-----|:-----:|:----------| -|`junit_files`|One of `*_files` must be set|File patterns of JUnit XML test result files. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| -|`trx_files`|One of `*_files` must be set|File patterns of TRX test result files. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| +|`junit_files`
`trx_files`| |At least one of these `*_files` must be set. File patterns of JUnit XML and TRX test result files, respectively. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| |`check_name`|`"Test Results"`|An alternative name for the check result.| |`comment_title`|same as `check_name`|An alternative name for the pull request comment.| |`comment_mode`|`always`|The action posts comments to pull requests that are associated with the commit. Set to:
`always` - always comment
`changes` - comment when changes w.r.t. the target branch exist
`changes in failures` - when changes in the number of failures and errors exist
`changes in errors` - when changes in the number of (only) errors exist
`failures` - when failures or errors exist
`errors` - when (only) errors exist
`off` - to not create pull request comments.| -|`ignore_runs`|`false`|Does not process test run information by ignoring `` elements in the XML files, which is useful for very large XML files. This disables any check run annotations.| +|`ignore_runs`|`false`|Does not collect test run information from the test result files, which is useful for very large files. This disables any check run annotations.|
Options related to Git and GitHub @@ -656,7 +655,7 @@ If this conflicts with actions that later run Python in the same workflow (which it is recommended to run this action as the last step in your workflow, or to run it in an isolated workflow. Running it in an isolated workflow is similar to the workflows shown in [Use with matrix strategy](#use-with-matrix-strategy). -To run the composite action in an isolated workflow, your CI workflow should upload all test result XML files: +To run the composite action in an isolated workflow, your CI workflow should upload all test result files: ```yaml build-and-test: diff --git a/action.yml b/action.yml index e9c0e89c..9a286de9 100644 --- a/action.yml +++ b/action.yml @@ -36,7 +36,7 @@ inputs: description: 'File patterns of TRX test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' required: false time_unit: - description: 'Time values in the XML files have this unit. Supports "seconds" and "milliseconds".' + description: 'Time values in the test result files have this unit. Supports "seconds" and "milliseconds".' default: 'seconds' required: false report_individual_runs: @@ -46,7 +46,7 @@ inputs: description: 'De-duplicates classes with same name by their file name when set "true", combines test results for those classes otherwise' required: false ignore_runs: - description: 'Does not process test run information by ignoring elements in the XML files, which is useful for very large XML files. This disables any check run annotations' + description: 'Does not collect test run information from the test result files, which is useful for very large files. This disables any check run annotations' default: 'false' required: false hide_comments: diff --git a/composite/action.yml b/composite/action.yml index 39c19515..38481a3e 100644 --- a/composite/action.yml +++ b/composite/action.yml @@ -36,7 +36,7 @@ inputs: description: 'File patterns of TRX test result files. Supports *, **, ?, and []. Use multiline string for multiple patterns. Patterns starting with ! exclude the matching files. There have to be at least one pattern starting without a `!`.' required: false time_unit: - description: 'Time values in the XML files have this unit. Supports "seconds" and "milliseconds".' + description: 'Time values in the test result files have this unit. Supports "seconds" and "milliseconds".' default: 'seconds' required: false report_individual_runs: @@ -46,7 +46,7 @@ inputs: description: 'De-duplicates classes with same name by their file name when set "true", combines test results for those classes otherwise' required: false ignore_runs: - description: 'Does not process test run information by ignoring elements in the XML files, which is useful for very large XML files. This disables any check run annotations' + description: 'Does not collect test run information from the test result files, which is useful for very large files. This disables any check run annotations' default: 'false' required: false hide_comments: From b4802920f44a5241b2b153b8609715c29704b683 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Tue, 24 May 2022 14:11:00 +0200 Subject: [PATCH 07/32] Add TRX test --- python/test/test_trx.py | 133 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 python/test/test_trx.py diff --git a/python/test/test_trx.py b/python/test/test_trx.py new file mode 100644 index 00000000..00615557 --- /dev/null +++ b/python/test/test_trx.py @@ -0,0 +1,133 @@ +import pathlib +import unittest + +from lxml import etree + +from publish.junit import process_junit_xml_elems, ParsedUnitTestResults, UnitTestCase +from publish.trx import parse_trx_files, transform_trx_to_junit + +test_files_path = pathlib.Path(__file__).parent / 'files' + + +class TestTrx(unittest.TestCase): + + def test_transform(self): + result_file = str(test_files_path / 'mstest.trx') + trx = etree.parse(str(result_file)) + junit = transform_trx_to_junit(trx) + + self.assertEqual( + str(junit), + '\n' + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' MESSAGE:\n' + ' \n' + ' Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception:\n' + ' Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure\n' + ' \n' + ' +++++++++++++++++++\n' + ' STACK TRACE:\n' + ' \n' + ' at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Steps.cs:line 28\n' + ' at lambda_method(Closure , IContextManager , Int32 )\n' + ' at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)\n' + ' at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()\n' + ' at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()\n' + ' at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature.cs:line 0\n' + ' at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature:line 18\n' + ' \n' + ' \n' + ' \n' + '\n' + ) + + def test_process_parse_trx_files_with_time_factor(self): + result_file = str(test_files_path / 'mstest.trx') + for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: + with self.subTest(time_factor=time_factor): + actual = process_junit_xml_elems(parse_trx_files([result_file]), time_factor=time_factor) + self.assertEqual(actual, + ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=0, + suite_failures=1, + suite_errors=0, + suite_time=int(0.1395124 * time_factor), + cases=[ + UnitTestCase( + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + result_file=result_file, + test_file=None, + line=None, + test_name='AddingSeveralNumbers_40', + result='success', + content=None, + message=None, + time=0.076891 * time_factor + ), + UnitTestCase( + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + result_file=result_file, + test_file=None, + line=None, + test_name='AddingSeveralNumbers_60', + result='success', + content=None, + message=None, + time=0.0111534 * time_factor + ), + UnitTestCase( + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + result_file=result_file, + test_file=None, + line=None, + test_name='AddTwoNumbers', + result='success', + content=None, + message=None, + time=0.0055623 * time_factor + ), + UnitTestCase( + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + result_file=result_file, + test_file=None, + line=None, + test_name='FailToAddTwoNumbers', + result='failure', + content='\n' + ' MESSAGE:\n' + ' \n' + ' Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception:\n' + ' Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure\n' + ' \n' + ' +++++++++++++++++++\n' + ' STACK TRACE:\n' + ' \n' + ' at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Steps.cs:line 28\n' + ' at lambda_method(Closure , IContextManager , Int32 )\n' + ' at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)\n' + ' at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs)\n' + ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()\n' + ' at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()\n' + ' at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature.cs:line 0\n' + ' at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature:line 18\n' + ' ', + message=None, + time=0.0459057 * time_factor + ) + ] + )) From e516c7d051e016e5ca699a4ccb1c676f117756ef Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Tue, 24 May 2022 16:08:48 +0200 Subject: [PATCH 08/32] Add trx files to publish-test-files --- .github/workflows/ci-cd.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 38cfdb8a..f5f3bf3f 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -410,9 +410,7 @@ jobs: uses: actions/checkout@v3 - name: Copy test junit xml files - run: | - mkdir -p test-files - cp -v python/test/files/*.xml test-files/ + run: cp -rv python/test/files test-files - name: Prepare publish action from this branch run: | @@ -424,7 +422,8 @@ jobs: with: check_name: Test Results (Test Files) fail_on: nothing - junit_files: "test-files/**.xml" + junit_files: "test-files/*.xml" + trx_files: "test-files/*.trx" json_file: "tests.json" log_level: DEBUG From 90aa3ecf7f566abc45fad5cd5e5c429c7e138fe8 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 23 May 2022 21:07:01 +0200 Subject: [PATCH 09/32] Move test files into sub-directories --- .github/workflows/ci-cd.yml | 4 +- python/test/files/{ => junit-xml}/empty.xml | 0 .../{ => junit-xml}/minimal-attributes.xml | 0 .../files/{ => junit-xml}/no-attributes.xml | 0 .../{ => junit-xml}/no-cases-but-tests.xml | 0 .../test/files/{ => junit-xml}/no-cases.xml | 0 python/test/files/{ => junit-xml}/non-xml.xml | 0 .../{ => junit-xml/pytest}/corrupt-xml.xml | 0 .../{ => junit-xml/pytest}/junit.fail.xml | 0 .../pytest}/junit.gloo.elastic.spark.tf.xml | 0 .../junit.gloo.elastic.spark.torch.xml | 0 .../pytest}/junit.gloo.elastic.xml | 0 .../pytest}/junit.gloo.standalone.xml | 0 .../pytest}/junit.gloo.static.xml | 0 .../pytest}/junit.mpi.integration.xml | 0 .../pytest}/junit.mpi.standalone.xml | 0 .../pytest}/junit.mpi.static.xml | 0 .../pytest}/junit.multiresult.xml | 0 .../pytest}/junit.spark.integration.1.xml | 0 .../pytest}/junit.spark.integration.2.xml | 0 .../pytest/small.xml} | 0 ....gresearch.spark.diff.DiffOptionsSuite.xml | 0 .../{ => junit-xml}/testcase-in-testcase.xml | 0 .../files/{ => junit-xml/tst}/disabled.xml | 0 .../{ => junit-xml}/unsupported-unicode.xml | 0 .../{ => junit-xml}/with-xml-entities.xml | 0 .../files/{ => junit-xml/xunit}/xunit.xml | 0 .../{mstest.trx => trx/mstest/pickles.trx} | 0 python/test/test_action_script.py | 4 +- python/test/test_junit.py | 59 ++++--------------- python/test/test_publish.py | 43 +++++++------- python/test/test_trx.py | 6 +- 32 files changed, 39 insertions(+), 77 deletions(-) rename python/test/files/{ => junit-xml}/empty.xml (100%) rename python/test/files/{ => junit-xml}/minimal-attributes.xml (100%) rename python/test/files/{ => junit-xml}/no-attributes.xml (100%) rename python/test/files/{ => junit-xml}/no-cases-but-tests.xml (100%) rename python/test/files/{ => junit-xml}/no-cases.xml (100%) rename python/test/files/{ => junit-xml}/non-xml.xml (100%) rename python/test/files/{ => junit-xml/pytest}/corrupt-xml.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.fail.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.gloo.elastic.spark.tf.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.gloo.elastic.spark.torch.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.gloo.elastic.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.gloo.standalone.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.gloo.static.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.mpi.integration.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.mpi.standalone.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.mpi.static.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.multiresult.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.spark.integration.1.xml (100%) rename python/test/files/{ => junit-xml/pytest}/junit.spark.integration.2.xml (100%) rename python/test/files/{non-junit.xml => junit-xml/pytest/small.xml} (100%) rename python/test/files/{ => junit-xml/scalatest}/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml (100%) rename python/test/files/{ => junit-xml}/testcase-in-testcase.xml (100%) rename python/test/files/{ => junit-xml/tst}/disabled.xml (100%) rename python/test/files/{ => junit-xml}/unsupported-unicode.xml (100%) rename python/test/files/{ => junit-xml}/with-xml-entities.xml (100%) rename python/test/files/{ => junit-xml/xunit}/xunit.xml (100%) rename python/test/files/{mstest.trx => trx/mstest/pickles.trx} (100%) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index f5f3bf3f..7999b3df 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -422,8 +422,8 @@ jobs: with: check_name: Test Results (Test Files) fail_on: nothing - junit_files: "test-files/*.xml" - trx_files: "test-files/*.trx" + junit_files: "test-files/junit-xml/**/*.xml" + trx_files: "test-files/trx/**/*.trx" json_file: "tests.json" log_level: DEBUG diff --git a/python/test/files/empty.xml b/python/test/files/junit-xml/empty.xml similarity index 100% rename from python/test/files/empty.xml rename to python/test/files/junit-xml/empty.xml diff --git a/python/test/files/minimal-attributes.xml b/python/test/files/junit-xml/minimal-attributes.xml similarity index 100% rename from python/test/files/minimal-attributes.xml rename to python/test/files/junit-xml/minimal-attributes.xml diff --git a/python/test/files/no-attributes.xml b/python/test/files/junit-xml/no-attributes.xml similarity index 100% rename from python/test/files/no-attributes.xml rename to python/test/files/junit-xml/no-attributes.xml diff --git a/python/test/files/no-cases-but-tests.xml b/python/test/files/junit-xml/no-cases-but-tests.xml similarity index 100% rename from python/test/files/no-cases-but-tests.xml rename to python/test/files/junit-xml/no-cases-but-tests.xml diff --git a/python/test/files/no-cases.xml b/python/test/files/junit-xml/no-cases.xml similarity index 100% rename from python/test/files/no-cases.xml rename to python/test/files/junit-xml/no-cases.xml diff --git a/python/test/files/non-xml.xml b/python/test/files/junit-xml/non-xml.xml similarity index 100% rename from python/test/files/non-xml.xml rename to python/test/files/junit-xml/non-xml.xml diff --git a/python/test/files/corrupt-xml.xml b/python/test/files/junit-xml/pytest/corrupt-xml.xml similarity index 100% rename from python/test/files/corrupt-xml.xml rename to python/test/files/junit-xml/pytest/corrupt-xml.xml diff --git a/python/test/files/junit.fail.xml b/python/test/files/junit-xml/pytest/junit.fail.xml similarity index 100% rename from python/test/files/junit.fail.xml rename to python/test/files/junit-xml/pytest/junit.fail.xml diff --git a/python/test/files/junit.gloo.elastic.spark.tf.xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.xml similarity index 100% rename from python/test/files/junit.gloo.elastic.spark.tf.xml rename to python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.xml diff --git a/python/test/files/junit.gloo.elastic.spark.torch.xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.xml similarity index 100% rename from python/test/files/junit.gloo.elastic.spark.torch.xml rename to python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.xml diff --git a/python/test/files/junit.gloo.elastic.xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.xml similarity index 100% rename from python/test/files/junit.gloo.elastic.xml rename to python/test/files/junit-xml/pytest/junit.gloo.elastic.xml diff --git a/python/test/files/junit.gloo.standalone.xml b/python/test/files/junit-xml/pytest/junit.gloo.standalone.xml similarity index 100% rename from python/test/files/junit.gloo.standalone.xml rename to python/test/files/junit-xml/pytest/junit.gloo.standalone.xml diff --git a/python/test/files/junit.gloo.static.xml b/python/test/files/junit-xml/pytest/junit.gloo.static.xml similarity index 100% rename from python/test/files/junit.gloo.static.xml rename to python/test/files/junit-xml/pytest/junit.gloo.static.xml diff --git a/python/test/files/junit.mpi.integration.xml b/python/test/files/junit-xml/pytest/junit.mpi.integration.xml similarity index 100% rename from python/test/files/junit.mpi.integration.xml rename to python/test/files/junit-xml/pytest/junit.mpi.integration.xml diff --git a/python/test/files/junit.mpi.standalone.xml b/python/test/files/junit-xml/pytest/junit.mpi.standalone.xml similarity index 100% rename from python/test/files/junit.mpi.standalone.xml rename to python/test/files/junit-xml/pytest/junit.mpi.standalone.xml diff --git a/python/test/files/junit.mpi.static.xml b/python/test/files/junit-xml/pytest/junit.mpi.static.xml similarity index 100% rename from python/test/files/junit.mpi.static.xml rename to python/test/files/junit-xml/pytest/junit.mpi.static.xml diff --git a/python/test/files/junit.multiresult.xml b/python/test/files/junit-xml/pytest/junit.multiresult.xml similarity index 100% rename from python/test/files/junit.multiresult.xml rename to python/test/files/junit-xml/pytest/junit.multiresult.xml diff --git a/python/test/files/junit.spark.integration.1.xml b/python/test/files/junit-xml/pytest/junit.spark.integration.1.xml similarity index 100% rename from python/test/files/junit.spark.integration.1.xml rename to python/test/files/junit-xml/pytest/junit.spark.integration.1.xml diff --git a/python/test/files/junit.spark.integration.2.xml b/python/test/files/junit-xml/pytest/junit.spark.integration.2.xml similarity index 100% rename from python/test/files/junit.spark.integration.2.xml rename to python/test/files/junit-xml/pytest/junit.spark.integration.2.xml diff --git a/python/test/files/non-junit.xml b/python/test/files/junit-xml/pytest/small.xml similarity index 100% rename from python/test/files/non-junit.xml rename to python/test/files/junit-xml/pytest/small.xml diff --git a/python/test/files/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml b/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml similarity index 100% rename from python/test/files/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml rename to python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml diff --git a/python/test/files/testcase-in-testcase.xml b/python/test/files/junit-xml/testcase-in-testcase.xml similarity index 100% rename from python/test/files/testcase-in-testcase.xml rename to python/test/files/junit-xml/testcase-in-testcase.xml diff --git a/python/test/files/disabled.xml b/python/test/files/junit-xml/tst/disabled.xml similarity index 100% rename from python/test/files/disabled.xml rename to python/test/files/junit-xml/tst/disabled.xml diff --git a/python/test/files/unsupported-unicode.xml b/python/test/files/junit-xml/unsupported-unicode.xml similarity index 100% rename from python/test/files/unsupported-unicode.xml rename to python/test/files/junit-xml/unsupported-unicode.xml diff --git a/python/test/files/with-xml-entities.xml b/python/test/files/junit-xml/with-xml-entities.xml similarity index 100% rename from python/test/files/with-xml-entities.xml rename to python/test/files/junit-xml/with-xml-entities.xml diff --git a/python/test/files/xunit.xml b/python/test/files/junit-xml/xunit/xunit.xml similarity index 100% rename from python/test/files/xunit.xml rename to python/test/files/junit-xml/xunit/xunit.xml diff --git a/python/test/files/mstest.trx b/python/test/files/trx/mstest/pickles.trx similarity index 100% rename from python/test/files/mstest.trx rename to python/test/files/trx/mstest/pickles.trx diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index 98334219..fc53e5db 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -796,8 +796,8 @@ def test_get_files_with_mock(self): def test_parse_files(self): gha = mock.MagicMock() - settings = self.get_settings(junit_files_glob=str(test_files_path / '*.xml'), - trx_files_glob=str(test_files_path / '*.trx')) + settings = self.get_settings(junit_files_glob=str(test_files_path / 'junit-xml' / '**' / '*.xml'), + trx_files_glob=str(test_files_path / 'trx' / '**' / '*.trx')) actual = parse_files(settings, gha) gha.warning.assert_not_called() diff --git a/python/test/test_junit.py b/python/test/test_junit.py index f8d640bd..c308fc3d 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -8,7 +8,7 @@ from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, get_message, Disabled from publish.unittestresults import ParsedUnitTestResults, UnitTestCase, ParseError -test_files_path = pathlib.Path(__file__).parent / 'files' +test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' class TestElement(Element): @@ -43,7 +43,7 @@ def test_process_parse_junit_xml_files_with_no_files(self): )) def test_process_parse_junit_xml_files_with_spark_diff_file(self): - result_file = str(test_files_path / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') + result_file = str(test_files_path / 'scalatest' / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') self.assertEqual( process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( @@ -115,7 +115,7 @@ def test_process_parse_junit_xml_files_with_spark_diff_file(self): )) def test_process_parse_junit_xml_files_with_horovod_file(self): - result_file = str(test_files_path / 'junit.mpi.integration.xml') + result_file = str(test_files_path / 'pytest' / 'junit.mpi.integration.xml') self.assertEqual( process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( @@ -165,7 +165,7 @@ def test_process_parse_junit_xml_files_with_horovod_file(self): )) def test_process_parse_junit_xml_files_with_spark_extension_file(self): - result_file = str(test_files_path / 'junit.fail.xml') + result_file = str(test_files_path / 'pytest' / 'junit.fail.xml') self.assertEqual( process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( @@ -322,45 +322,6 @@ def test_process_parse_junit_xml_files_with_minimal_attributes_file(self): suites=1 )) - def test_parse_xunit_xml_file(self): - result_file = str(test_files_path / 'xunit.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - cases=[ - UnitTestCase( - class_name=None, - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='success', - test_name='mytestapp.Tests.AttriubteTests.SetTestNoFeature', - time=0.4540354 - ), - UnitTestCase( - class_name=None, - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='success', - test_name='mytestapp.Tests.AttriubteTests.GetTestNoFeature', - time=0.0039778 - ) - ], - files=1, - errors=[], - suite_errors=0, - suite_failures=0, - suite_skipped=0, - suite_tests=2, - suite_time=0, - suites=1 - )) - def test_process_parse_junit_xml_files_with_no_attributes_file(self): result_file = str(test_files_path / 'no-attributes.xml') self.assertEqual( @@ -412,7 +373,7 @@ def test_process_parse_junit_xml_files_with_non_xml_file(self): )) def test_process_parse_junit_xml_files_with_corrupt_xml_file(self): - result_file = test_files_path / 'corrupt-xml.xml' + result_file = test_files_path / 'pytest' / 'corrupt-xml.xml' result_filename = str(result_file) expected_filename = ('file:/' + result_file.absolute().as_posix()) if result_file.drive else result_file.name self.assertEqual( @@ -430,7 +391,7 @@ def test_process_parse_junit_xml_files_with_corrupt_xml_file(self): )) def test_process_parse_junit_xml_files_with_non_junit_file(self): - result_file = str(test_files_path / 'non-junit.xml') + result_file = str(test_files_path / 'pytest' / 'small.xml') self.assertEqual( process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( @@ -462,13 +423,13 @@ def test_process_parse_junit_xml_files_with_non_existing_file(self): # tests https://github.com/weiwei/junitparser/issues/64 def test_junitparser_locale(self): - junit = JUnitXml.fromfile(str(test_files_path / 'junit.spark.integration.1.xml')) + junit = JUnitXml.fromfile(str(test_files_path / 'pytest' / 'junit.spark.integration.1.xml')) self.assertAlmostEqual(162.933, junit.time, 3) @unittest.skipIf(LooseVersion(version) < LooseVersion('2.0.0'), 'multiple results per test case not supported by junitparser') def test_parse_junit_xml_file_with_multiple_results(self): - junit = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'junit.multiresult.xml')])) + junit = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'pytest' / 'junit.multiresult.xml')])) self.assertEqual(4, len(junit.cases)) self.assertEqual("error", junit.cases[0].result) self.assertEqual("failure", junit.cases[1].result) @@ -476,7 +437,7 @@ def test_parse_junit_xml_file_with_multiple_results(self): self.assertEqual("success", junit.cases[3].result) def test_process_parse_junit_xml_file_with_disabled_tests(self): - result_file = str(test_files_path / 'disabled.xml') + result_file = str(test_files_path / 'tst' / 'disabled.xml') self.assertEqual( process_junit_xml_elems(parse_junit_xml_files([result_file])), ParsedUnitTestResults( @@ -543,7 +504,7 @@ def test_process_parse_junit_xml_files_xml_entities_in_test_names(self): )) def test_process_parse_junit_xml_files_with_time_factor(self): - result_file = str(test_files_path / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') + result_file = str(test_files_path / 'scalatest' / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: with self.subTest(time_factor=time_factor): self.assertEqual( diff --git a/python/test/test_publish.py b/python/test/test_publish.py index 3200b010..58d12cf6 100644 --- a/python/test/test_publish.py +++ b/python/test/test_publish.py @@ -23,7 +23,8 @@ from publish.unittestresults import get_test_results from test import d, n -test_files_path = pathlib.Path(__file__).parent / 'files' +test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' + @contextlib.contextmanager @@ -2008,16 +2009,16 @@ def test_chunk(self): def test_files(self): parsed = process_junit_xml_elems( - parse_junit_xml_files([str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), - str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), - str(test_files_path / 'junit.gloo.elastic.xml'), - str(test_files_path / 'junit.gloo.standalone.xml'), - str(test_files_path / 'junit.gloo.static.xml'), - str(test_files_path / 'junit.mpi.integration.xml'), - str(test_files_path / 'junit.mpi.standalone.xml'), - str(test_files_path / 'junit.mpi.static.xml'), - str(test_files_path / 'junit.spark.integration.1.xml'), - str(test_files_path / 'junit.spark.integration.2.xml')])).with_commit('example') + parse_junit_xml_files([str(test_files_path / 'pytest' / 'junit.gloo.elastic.spark.tf.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.elastic.spark.torch.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.elastic.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.standalone.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.static.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.integration.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.standalone.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.static.xml'), + str(test_files_path / 'pytest' / 'junit.spark.integration.1.xml'), + str(test_files_path / 'pytest' / 'junit.spark.integration.2.xml')])).with_commit('example') results = get_test_results(parsed, False) stats = get_stats(results) md = get_long_summary_md(stats) @@ -2075,16 +2076,16 @@ def test_files_with_testcase_in_testcase(self): def test_files_without_annotations(self): parsed = process_junit_xml_elems( parse_junit_xml_files( - [str(test_files_path / 'junit.gloo.elastic.spark.tf.xml'), - str(test_files_path / 'junit.gloo.elastic.spark.torch.xml'), - str(test_files_path / 'junit.gloo.elastic.xml'), - str(test_files_path / 'junit.gloo.standalone.xml'), - str(test_files_path / 'junit.gloo.static.xml'), - str(test_files_path / 'junit.mpi.integration.xml'), - str(test_files_path / 'junit.mpi.standalone.xml'), - str(test_files_path / 'junit.mpi.static.xml'), - str(test_files_path / 'junit.spark.integration.1.xml'), - str(test_files_path / 'junit.spark.integration.2.xml')], + [str(test_files_path / 'pytest' / 'junit.gloo.elastic.spark.tf.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.elastic.spark.torch.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.elastic.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.standalone.xml'), + str(test_files_path / 'pytest' / 'junit.gloo.static.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.integration.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.standalone.xml'), + str(test_files_path / 'pytest' / 'junit.mpi.static.xml'), + str(test_files_path / 'pytest' / 'junit.spark.integration.1.xml'), + str(test_files_path / 'pytest' / 'junit.spark.integration.2.xml')], drop_testcases=True ) ).with_commit('example') diff --git a/python/test/test_trx.py b/python/test/test_trx.py index 00615557..4b351a23 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -6,13 +6,13 @@ from publish.junit import process_junit_xml_elems, ParsedUnitTestResults, UnitTestCase from publish.trx import parse_trx_files, transform_trx_to_junit -test_files_path = pathlib.Path(__file__).parent / 'files' +test_files_path = pathlib.Path(__file__).parent / 'files' / 'trx' class TestTrx(unittest.TestCase): def test_transform(self): - result_file = str(test_files_path / 'mstest.trx') + result_file = str(test_files_path / 'mstest' / 'pickles.trx') trx = etree.parse(str(result_file)) junit = transform_trx_to_junit(trx) @@ -51,7 +51,7 @@ def test_transform(self): ) def test_process_parse_trx_files_with_time_factor(self): - result_file = str(test_files_path / 'mstest.trx') + result_file = str(test_files_path / 'mstest' / 'pickles.trx') for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: with self.subTest(time_factor=time_factor): actual = process_junit_xml_elems(parse_trx_files([result_file]), time_factor=time_factor) From e896c0ac4183aaf7f68d9a3e1d4da1aa4e7882e1 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 14:06:16 +0200 Subject: [PATCH 10/32] Parse all example files and compare to expectations --- python/publish_unit_test_results.py | 1 - python/test/test_junit.py | 70 +++++++++++++++++++++++++++-- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/python/publish_unit_test_results.py b/python/publish_unit_test_results.py index cbf665ad..3174a16d 100644 --- a/python/publish_unit_test_results.py +++ b/python/publish_unit_test_results.py @@ -1,4 +1,3 @@ -import itertools import json import logging import os diff --git a/python/test/test_junit.py b/python/test/test_junit.py index c308fc3d..682f024d 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -1,11 +1,15 @@ import pathlib +import pathlib import unittest from distutils.version import LooseVersion -from typing import Optional +from glob import glob +from typing import Optional, Union, List +from xml.etree import ElementTree from junitparser import JUnitXml, Element, version -from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, get_message, Disabled +from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, \ + get_message, Disabled from publish.unittestresults import ParsedUnitTestResults, UnitTestCase, ParseError test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' @@ -25,7 +29,63 @@ def text(self): return self._elem.text -class TestJunit(unittest.TestCase): +class JUnitXmlParseTest: + @property + def test(self): + raise NotImplementedError() + + @staticmethod + def get_test_files() -> List[str]: + raise NotImplementedError() + + @staticmethod + def parse_file(filename) -> Union[JUnitXml, BaseException]: + raise NotImplementedError() + + def do_test_parse_file(self, filename: str): + actual = self.parse_file(filename) + path = pathlib.Path(filename) + if isinstance(actual, BaseException): + with open(path.parent / (path.stem + '.exception'), 'r', encoding='utf-8') as r: + expected = r.read() + self.test.assertEqual(expected, actual) + else: + with open(path.parent / (path.stem + '.junit-xml'), 'r', encoding='utf-8') as r: + expected = r.read() + self.test.assertEqual(expected, ElementTree.tostring(actual._elem, encoding='unicode')) + + def test_parse_junit_xml_files(self): + for file in self.get_test_files(): + with self.test.subTest(file=file[len(str(test_files_path))+1:]): + self.do_test_parse_file(file) + + @classmethod + def update_expectations(cls): + print('updating expectations') + for filename in cls.get_test_files(): + actual = cls.parse_file(filename) + path = pathlib.Path(filename) + if isinstance(actual, BaseException): + with open(path.parent / (path.stem + '.exception'), 'w', encoding='utf-8') as w: + w.write(str(actual)) + else: + with open(path.parent / (path.stem + '.junit-xml'), 'w', encoding='utf-8') as w: + w.write(actual) + + +class TestJunit(JUnitXmlParseTest, unittest.TestCase): + + @property + def test(self): + return self + + @staticmethod + def get_test_files() -> List[str]: + return glob(str(test_files_path / '**' / '*.xml'), recursive=True) + + @staticmethod + def parse_file(filename): + return list(parse_junit_xml_files([filename]))[0][1] def test_process_parse_junit_xml_files_with_no_files(self): self.assertEqual( @@ -671,3 +731,7 @@ def test_get_content(self): with self.subTest(results=results): actual = get_content(results) self.assertEqual(expected, actual) + + +if __name__ == "__main__": + TestJunit.update_expectations() From 82a4129748758fb2889896992e03b23c39efa878 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 16:46:14 +0200 Subject: [PATCH 11/32] Run tests on all example test result files --- python/publish/junit.py | 34 +- python/publish/trx.py | 10 +- python/test/files/junit-xml/empty.exception | 1 + .../junit-xml/junit.multiresult.junit-xml | 19 + .../files/junit-xml/junit.multiresult.results | 56 + .../{pytest => }/junit.multiresult.xml | 0 .../junit-xml/minimal-attributes.junit-xml | 15 + .../junit-xml/minimal-attributes.results | 56 + .../files/junit-xml/no-attributes.junit-xml | 15 + .../files/junit-xml/no-attributes.results | 11 + .../junit-xml/no-cases-but-tests.junit-xml | 4 + .../junit-xml/no-cases-but-tests.results | 11 + .../test/files/junit-xml/no-cases.junit-xml | 4 + python/test/files/junit-xml/no-cases.results | 11 + .../test/files/junit-xml/non-junit.exception | 1 + .../test/files/junit-xml/non-junit.junit-xml | 6 + .../{pytest/small.xml => non-junit.xml} | 0 python/test/files/junit-xml/non-xml.exception | 1 + .../junit-xml/pytest/corrupt-xml.exception | 1 + .../junit-xml/pytest/junit.fail.junit-xml | 28 + .../files/junit-xml/pytest/junit.fail.results | 82 ++ .../pytest/junit.gloo.elastic.junit-xml | 27 + .../pytest/junit.gloo.elastic.results | 170 +++ .../junit.gloo.elastic.spark.tf.junit-xml | 31 + .../junit.gloo.elastic.spark.tf.results | 278 +++++ .../junit.gloo.elastic.spark.torch.junit-xml | 27 + .../junit.gloo.elastic.spark.torch.results | 254 ++++ .../pytest/junit.gloo.standalone.junit-xml | 136 +++ .../pytest/junit.gloo.standalone.results | 1080 +++++++++++++++++ .../pytest/junit.gloo.static.junit-xml | 53 + .../pytest/junit.gloo.static.results | 288 +++++ .../pytest/junit.mpi.integration.junit-xml | 8 + .../pytest/junit.mpi.integration.results | 45 + .../pytest/junit.mpi.standalone.junit-xml | 104 ++ .../pytest/junit.mpi.standalone.results | 1080 +++++++++++++++++ .../pytest/junit.mpi.static.junit-xml | 29 + .../junit-xml/pytest/junit.mpi.static.results | 276 +++++ .../junit.spark.integration.1.junit-xml | 44 + .../pytest/junit.spark.integration.1.results | 402 ++++++ .../junit.spark.integration.2.junit-xml | 44 + .../pytest/junit.spark.integration.2.results | 402 ++++++ ...arch.spark.diff.DiffOptionsSuite.junit-xml | 84 ++ ...search.spark.diff.DiffOptionsSuite.results | 67 + .../junit-xml/testcase-in-testcase.junit-xml | 16 + .../junit-xml/testcase-in-testcase.results | 67 + .../files/junit-xml/tst/disabled.junit-xml | 78 ++ .../test/files/junit-xml/tst/disabled.results | 368 ++++++ .../junit-xml/unsupported-unicode.junit-xml | 30 + .../junit-xml/unsupported-unicode.results | 89 ++ .../files/junit-xml/unsupported-unicode.xml | 2 +- .../junit-xml/with-xml-entities.junit-xml | 17 + .../files/junit-xml/with-xml-entities.results | 56 + .../files/junit-xml/xunit/xunit.junit-xml | 15 + .../test/files/junit-xml/xunit/xunit.results | 34 + .../test/files/trx/mstest/pickles.junit-xml | 30 + python/test/files/trx/mstest/pickles.results | 86 ++ python/test/files/update_expectations.sh | 7 + python/test/requirements.txt | 3 +- python/test/test_junit.py | 525 +------- python/test/test_trx.py | 34 +- 60 files changed, 6265 insertions(+), 487 deletions(-) create mode 100644 python/test/files/junit-xml/empty.exception create mode 100644 python/test/files/junit-xml/junit.multiresult.junit-xml create mode 100644 python/test/files/junit-xml/junit.multiresult.results rename python/test/files/junit-xml/{pytest => }/junit.multiresult.xml (100%) create mode 100644 python/test/files/junit-xml/minimal-attributes.junit-xml create mode 100644 python/test/files/junit-xml/minimal-attributes.results create mode 100644 python/test/files/junit-xml/no-attributes.junit-xml create mode 100644 python/test/files/junit-xml/no-attributes.results create mode 100644 python/test/files/junit-xml/no-cases-but-tests.junit-xml create mode 100644 python/test/files/junit-xml/no-cases-but-tests.results create mode 100644 python/test/files/junit-xml/no-cases.junit-xml create mode 100644 python/test/files/junit-xml/no-cases.results create mode 100644 python/test/files/junit-xml/non-junit.exception create mode 100644 python/test/files/junit-xml/non-junit.junit-xml rename python/test/files/junit-xml/{pytest/small.xml => non-junit.xml} (100%) create mode 100644 python/test/files/junit-xml/non-xml.exception create mode 100644 python/test/files/junit-xml/pytest/corrupt-xml.exception create mode 100644 python/test/files/junit-xml/pytest/junit.fail.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.fail.results create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.results create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.results create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.results create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.standalone.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.standalone.results create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.static.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.gloo.static.results create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.integration.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.integration.results create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.standalone.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.standalone.results create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.static.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.mpi.static.results create mode 100644 python/test/files/junit-xml/pytest/junit.spark.integration.1.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.spark.integration.1.results create mode 100644 python/test/files/junit-xml/pytest/junit.spark.integration.2.junit-xml create mode 100644 python/test/files/junit-xml/pytest/junit.spark.integration.2.results create mode 100644 python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.junit-xml create mode 100644 python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.results create mode 100644 python/test/files/junit-xml/testcase-in-testcase.junit-xml create mode 100644 python/test/files/junit-xml/testcase-in-testcase.results create mode 100644 python/test/files/junit-xml/tst/disabled.junit-xml create mode 100644 python/test/files/junit-xml/tst/disabled.results create mode 100644 python/test/files/junit-xml/unsupported-unicode.junit-xml create mode 100644 python/test/files/junit-xml/unsupported-unicode.results create mode 100644 python/test/files/junit-xml/with-xml-entities.junit-xml create mode 100644 python/test/files/junit-xml/with-xml-entities.results create mode 100644 python/test/files/junit-xml/xunit/xunit.junit-xml create mode 100644 python/test/files/junit-xml/xunit/xunit.results create mode 100644 python/test/files/trx/mstest/pickles.junit-xml create mode 100644 python/test/files/trx/mstest/pickles.results create mode 100755 python/test/files/update_expectations.sh diff --git a/python/publish/junit.py b/python/publish/junit.py index faa685e0..cd026dfb 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -3,7 +3,7 @@ from typing import Optional, Iterable, Union, Any, List, Dict, Callable, Tuple import junitparser -from junitparser import Element, JUnitXml, TestCase, TestSuite, Skipped +from junitparser import Element, JUnitXml, JUnitXmlError, TestCase, TestSuite, Skipped from junitparser.junitparser import etree from publish.unittestresults import ParsedUnitTestResults, UnitTestCase, ParseError @@ -118,9 +118,12 @@ def close(self) -> Element: return super().close() +JUnitTree = etree.ElementTree + + def parse_junit_xml_files(files: Iterable[str], drop_testcases: bool = False, - progress: Callable[[Tuple[str, Union[JUnitXml, BaseException]]], Tuple[str, Union[JUnitXml, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitXml, BaseException]]]: + progress: Callable[[Tuple[str, Union[JUnitTree, BaseException]]], Tuple[str, Union[JUnitTree, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitTree, BaseException]]]: """Parses junit xml files and returns aggregated statistics as a ParsedUnitTestResults.""" def parse(path: str) -> Union[JUnitXml, BaseException]: if not os.path.exists(path): @@ -131,21 +134,36 @@ def parse(path: str) -> Union[JUnitXml, BaseException]: try: if drop_testcases: builder = DropTestCaseBuilder() - return JUnitXml.fromfile(path, parse_func=builder.parse) - return JUnitXml.fromfile(path) + return etree.parse(path, parser=etree.XMLParser(target=builder, encoding='utf-8')) + return etree.parse(path) except BaseException as e: return e return [progress((result_file, parse(result_file))) for result_file in files] -def process_junit_xml_elems(elems: Iterable[Tuple[str, Union[JUnitXml, BaseException]]], +def process_junit_xml_elems(trees: Iterable[Tuple[str, Union[JUnitTree, BaseException]]], time_factor: float = 1.0) -> ParsedUnitTestResults: + # TODO: move upstream into JUnitTree + def create_junitxml(filepath: str, tree: JUnitTree) -> Union[JUnitXml, JUnitXmlError]: + root_elem = tree.getroot() + if root_elem.tag == "testsuites": + instance = JUnitXml() + elif root_elem.tag == "testsuite": + instance = TestSuite() + else: + return JUnitXmlError("Invalid format.") + instance._elem = root_elem + instance.filepath = filepath + return instance + + processed = [(result_file, create_junitxml(result_file, tree) if not isinstance(tree, BaseException) else tree) + for result_file, tree in trees] junits = [(result_file, junit) - for result_file, junit in elems + for result_file, junit in processed if not isinstance(junit, BaseException)] errors = [ParseError.from_exception(result_file, exception) - for result_file, exception in elems + for result_file, exception in processed if isinstance(exception, BaseException)] suites = [(result_file, suite) @@ -196,7 +214,7 @@ def get_cases(suite: TestSuite) -> List[TestCase]: ] return ParsedUnitTestResults( - files=len(list(elems)), + files=len(list(trees)), errors=errors, # test state counts from suites suites=len(suites), diff --git a/python/publish/trx.py b/python/publish/trx.py index b0891338..3a085f5a 100644 --- a/python/publish/trx.py +++ b/python/publish/trx.py @@ -2,17 +2,18 @@ import pathlib from typing import Iterable, Tuple, Union, Callable -from junitparser import JUnitXml from lxml import etree +from publish.junit import JUnitTree + with (pathlib.Path(__file__).parent / 'xslt' / 'trx-to-junit.xslt').open('r', encoding='utf-8') as r: transform_trx_to_junit = etree.XSLT(etree.parse(r)) def parse_trx_files(files: Iterable[str], - progress: Callable[[Tuple[str, Union[JUnitXml, BaseException]]], Tuple[str, Union[JUnitXml, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitXml, BaseException]]]: + progress: Callable[[Tuple[str, Union[JUnitTree, BaseException]]], Tuple[str, Union[JUnitTree, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitTree, BaseException]]]: """Parses trx files and returns aggregated statistics as a ParsedUnitTestResults.""" - def parse(path: str) -> Union[JUnitXml, BaseException]: + def parse(path: str) -> Union[JUnitTree, BaseException]: if not os.path.exists(path): return FileNotFoundError(f'File does not exist.') if os.stat(path).st_size == 0: @@ -20,8 +21,7 @@ def parse(path: str) -> Union[JUnitXml, BaseException]: try: trx = etree.parse(path) - junit = transform_trx_to_junit(trx) - return JUnitXml.fromelem(junit.getroot()) + return transform_trx_to_junit(trx) except BaseException as e: return e diff --git a/python/test/files/junit-xml/empty.exception b/python/test/files/junit-xml/empty.exception new file mode 100644 index 00000000..3b371865 --- /dev/null +++ b/python/test/files/junit-xml/empty.exception @@ -0,0 +1 @@ +Exception('File is empty.') \ No newline at end of file diff --git a/python/test/files/junit-xml/junit.multiresult.junit-xml b/python/test/files/junit-xml/junit.multiresult.junit-xml new file mode 100644 index 00000000..7136fe34 --- /dev/null +++ b/python/test/files/junit-xml/junit.multiresult.junit-xml @@ -0,0 +1,19 @@ + + + + + + Assertion failed + stdout + + + + Assertion failed + + + + + + + + diff --git a/python/test/files/junit-xml/junit.multiresult.results b/python/test/files/junit-xml/junit.multiresult.results new file mode 100644 index 00000000..d5a2468a --- /dev/null +++ b/python/test/files/junit-xml/junit.multiresult.results @@ -0,0 +1,56 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=3, + suite_failures=2, + suite_errors=1, + suite_time=1, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='junit.multiresult.xml', + test_file=None, + line=None, + class_name='test class', + test_name='test that errors', + result='error', + message='test teardown failure', + content='stdout', + time=0.123 + ), + publish.unittestresults.UnitTestCase( + result_file='junit.multiresult.xml', + test_file=None, + line=None, + class_name='test class', + test_name='test that fails', + result='failure', + message='test failure', + content='Assertion failed', + time=0.234 + ), + publish.unittestresults.UnitTestCase( + result_file='junit.multiresult.xml', + test_file=None, + line=None, + class_name='test class', + test_name='test that is skipped', + result='skipped', + message=None, + content=None, + time=0.345 + ), + publish.unittestresults.UnitTestCase( + result_file='junit.multiresult.xml', + test_file=None, + line=None, + class_name='test class', + test_name='test that succeeds', + result='success', + message=None, + content=None, + time=0.456 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.multiresult.xml b/python/test/files/junit-xml/junit.multiresult.xml similarity index 100% rename from python/test/files/junit-xml/pytest/junit.multiresult.xml rename to python/test/files/junit-xml/junit.multiresult.xml diff --git a/python/test/files/junit-xml/minimal-attributes.junit-xml b/python/test/files/junit-xml/minimal-attributes.junit-xml new file mode 100644 index 00000000..92ca2060 --- /dev/null +++ b/python/test/files/junit-xml/minimal-attributes.junit-xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/minimal-attributes.results b/python/test/files/junit-xml/minimal-attributes.results new file mode 100644 index 00000000..64237e1a --- /dev/null +++ b/python/test/files/junit-xml/minimal-attributes.results @@ -0,0 +1,56 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=1, + suite_failures=1, + suite_errors=1, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='minimal-attributes.xml', + test_file=None, + line=None, + class_name='ClassName', + test_name='test_name', + result='success', + message=None, + content=None, + time=None + ), + publish.unittestresults.UnitTestCase( + result_file='minimal-attributes.xml', + test_file=None, + line=None, + class_name='ClassName', + test_name='skipped_test', + result='skipped', + message=None, + content=None, + time=None + ), + publish.unittestresults.UnitTestCase( + result_file='minimal-attributes.xml', + test_file=None, + line=None, + class_name='ClassName', + test_name='failed_test', + result='failure', + message=None, + content=None, + time=None + ), + publish.unittestresults.UnitTestCase( + result_file='minimal-attributes.xml', + test_file=None, + line=None, + class_name='ClassName', + test_name='error_test', + result='error', + message=None, + content=None, + time=None + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/no-attributes.junit-xml b/python/test/files/junit-xml/no-attributes.junit-xml new file mode 100644 index 00000000..a14fca7f --- /dev/null +++ b/python/test/files/junit-xml/no-attributes.junit-xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/no-attributes.results b/python/test/files/junit-xml/no-attributes.results new file mode 100644 index 00000000..d64187fd --- /dev/null +++ b/python/test/files/junit-xml/no-attributes.results @@ -0,0 +1,11 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=1, + suite_failures=1, + suite_errors=1, + suite_time=0, + cases=[] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/no-cases-but-tests.junit-xml b/python/test/files/junit-xml/no-cases-but-tests.junit-xml new file mode 100644 index 00000000..c59bf562 --- /dev/null +++ b/python/test/files/junit-xml/no-cases-but-tests.junit-xml @@ -0,0 +1,4 @@ + + + + diff --git a/python/test/files/junit-xml/no-cases-but-tests.results b/python/test/files/junit-xml/no-cases-but-tests.results new file mode 100644 index 00000000..c9ae68e8 --- /dev/null +++ b/python/test/files/junit-xml/no-cases-but-tests.results @@ -0,0 +1,11 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=6, + suite_skipped=2, + suite_failures=1, + suite_errors=0, + suite_time=0, + cases=[] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/no-cases.junit-xml b/python/test/files/junit-xml/no-cases.junit-xml new file mode 100644 index 00000000..4e2bc81b --- /dev/null +++ b/python/test/files/junit-xml/no-cases.junit-xml @@ -0,0 +1,4 @@ + + + + diff --git a/python/test/files/junit-xml/no-cases.results b/python/test/files/junit-xml/no-cases.results new file mode 100644 index 00000000..87ab69c4 --- /dev/null +++ b/python/test/files/junit-xml/no-cases.results @@ -0,0 +1,11 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=0, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=0, + cases=[] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/non-junit.exception b/python/test/files/junit-xml/non-junit.exception new file mode 100644 index 00000000..8ab21ffc --- /dev/null +++ b/python/test/files/junit-xml/non-junit.exception @@ -0,0 +1 @@ +JUnitXmlError('Invalid format.') \ No newline at end of file diff --git a/python/test/files/junit-xml/non-junit.junit-xml b/python/test/files/junit-xml/non-junit.junit-xml new file mode 100644 index 00000000..de6d15a9 --- /dev/null +++ b/python/test/files/junit-xml/non-junit.junit-xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/python/test/files/junit-xml/pytest/small.xml b/python/test/files/junit-xml/non-junit.xml similarity index 100% rename from python/test/files/junit-xml/pytest/small.xml rename to python/test/files/junit-xml/non-junit.xml diff --git a/python/test/files/junit-xml/non-xml.exception b/python/test/files/junit-xml/non-xml.exception new file mode 100644 index 00000000..fb28099e --- /dev/null +++ b/python/test/files/junit-xml/non-xml.exception @@ -0,0 +1 @@ +XMLSyntaxError("Start tag expected, '<' not found, line 1, column 1") \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/corrupt-xml.exception b/python/test/files/junit-xml/pytest/corrupt-xml.exception new file mode 100644 index 00000000..cc45182b --- /dev/null +++ b/python/test/files/junit-xml/pytest/corrupt-xml.exception @@ -0,0 +1 @@ +XMLSyntaxError('Premature end of data in tag skipped line 9, line 11, column 22') \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.fail.junit-xml b/python/test/files/junit-xml/pytest/junit.fail.junit-xml new file mode 100644 index 00000000..8d246447 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.fail.junit-xml @@ -0,0 +1,28 @@ + + + + + + /horovod/test/test_spark.py:1642: get_available_devices only + supported in Spark 3.0 and above + + + + + self = <test_spark.SparkTests testMethod=test_rsh_events> + + def test_rsh_events(self): + > self.do_test_rsh_events(3) + + test_spark.py:821: + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + test_spark.py:836: in do_test_rsh_events + self.do_test_rsh(command, 143, events=events) + test_spark.py:852: in do_test_rsh + self.assertEqual(expected_result, res) + E AssertionError: 143 != 0 + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.fail.results b/python/test/files/junit-xml/pytest/junit.fail.results new file mode 100644 index 00000000..461a87e9 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.fail.results @@ -0,0 +1,82 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=5, + suite_skipped=1, + suite_failures=1, + suite_errors=0, + suite_time=2, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.fail.xml', + test_file='test/test_spark.py', + line=1412, + class_name='test.test_spark.SparkTests', + test_name='test_check_shape_compatibility', + result='success', + message=None, + content=None, + time=6.435 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.fail.xml', + test_file='test/test_spark.py', + line=1641, + class_name='test.test_spark.SparkTests', + test_name='test_get_available_devices', + result='skipped', + message='get_available_devices only supported in Spark 3.0 and above', + content='/horovod/test/test_spark.py:1642: get_available_devices only\n ' + ' supported in Spark 3.0 and above\n ', + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.fail.xml', + test_file='test/test_spark.py', + line=1102, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info', + result='success', + message=None, + content=None, + time=6.417 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.fail.xml', + test_file='test/test_spark.py', + line=819, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_events', + result='failure', + message='self = def ' + 'test_rsh_events(self): > self.do_test_rsh_events(3) ' + 'test_spark.py:821: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' + '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ test_spark.py:836: in ' + 'do_test_rsh_events self.do_test_rsh(command, 143, events=events) ' + 'test_spark.py:852: in do_test_rsh ' + 'self.assertEqual(expected_result, res) E AssertionError: 143 != 0', + content='self = \n\n ' + ' def test_rsh_events(self):\n > ' + 'self.do_test_rsh_events(3)\n\n test_spark.py:821:\n ' + ' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' + '_ _ _ _ _ _ _ _ _ _ _ _\n test_spark.py:836: in ' + 'do_test_rsh_events\n self.do_test_rsh(command, 143, ' + 'events=events)\n test_spark.py:852: in do_test_rsh\n ' + ' self.assertEqual(expected_result, res)\n ' + 'E AssertionError: 143 != 0\n ', + time=7.541 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.fail.xml', + test_file='test/test_spark.py', + line=813, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_with_non_zero_exit_code', + result='success', + message=None, + content=None, + time=1.514 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.junit-xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.junit-xml new file mode 100644 index 00000000..d7fc4c6f --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.junit-xml @@ -0,0 +1,27 @@ + + + + + /horovod/test/integration/test_elastic_torch.py:30: This test fails due to https://github.com/horovod/horovod/issues/2030 + + + + + + /horovod/test/integration/test_elastic_torch.py:35: This test fails due to https://github.com/horovod/horovod/issues/2030 + + + + + /horovod/test/integration/test_elastic_tensorflow.py:30: This test fails due to https://github.com/horovod/horovod/issues/2030 + + + + + + /horovod/test/integration/test_elastic_tensorflow.py:35: This test fails due to https://github.com/horovod/horovod/issues/2030 + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.results b/python/test/files/junit-xml/pytest/junit.gloo.elastic.results new file mode 100644 index 00000000..a118cda2 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.results @@ -0,0 +1,170 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=14, + suite_skipped=4, + suite_failures=0, + suite_errors=0, + suite_time=72, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/test_elastic_torch.py', + line=29, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_all_hosts_blacklisted', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/2030', + content='/horovod/test/integration/test_elastic_torch.py:30: This test fails ' + 'due to https://github.com/horovod/horovod/issues/2030', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=196, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_all_ranks_failure', + result='success', + message=None, + content=None, + time=2.874 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=170, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_fault_tolerance_without_scaling', + result='success', + message=None, + content=None, + time=4.28 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=115, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_hosts_added_and_removed', + result='success', + message=None, + content=None, + time=6.847 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/test_elastic_torch.py', + line=34, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_min_hosts_timeout', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/2030', + content='/horovod/test/integration/test_elastic_torch.py:35: This test fails ' + 'due to https://github.com/horovod/horovod/issues/2030', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=242, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_reset_limit', + result='success', + message=None, + content=None, + time=6.49 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=142, + class_name='test.integration.test_elastic_torch.ElasticTorchTests', + test_name='test_single_rank_failure', + result='success', + message=None, + content=None, + time=5.264 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/test_elastic_tensorflow.py', + line=29, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_all_hosts_blacklisted', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/2030', + content='/horovod/test/integration/test_elastic_tensorflow.py:30: This test ' + 'fails due to https://github.com/horovod/horovod/issues/2030', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=196, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_all_ranks_failure', + result='success', + message=None, + content=None, + time=4.603 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=170, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_fault_tolerance_without_scaling', + result='success', + message=None, + content=None, + time=8.349 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=115, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_hosts_added_and_removed', + result='success', + message=None, + content=None, + time=12.64 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/test_elastic_tensorflow.py', + line=34, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_min_hosts_timeout', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/2030', + content='/horovod/test/integration/test_elastic_tensorflow.py:35: This test ' + 'fails due to https://github.com/horovod/horovod/issues/2030', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=242, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_reset_limit', + result='success', + message=None, + content=None, + time=12.21 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.xml', + test_file='test/integration/elastic_common.py', + line=142, + class_name='test.integration.test_elastic_tensorflow.ElasticTensorFlowTests', + test_name='test_single_rank_failure', + result='success', + message=None, + content=None, + time=8.455 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.junit-xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.junit-xml new file mode 100644 index 00000000..ead436ea --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.junit-xml @@ -0,0 +1,31 @@ + + + + + /horovod/test/integration/test_elastic_spark_tensorflow.py:35: This test fails due to https://github.com/horovod/horovod/issues/1994 + + + + + + + + + + + + + + + /horovod/test/integration/test_elastic_spark_tensorflow.py:32: This test fails due to https://github.com/horovod/horovod/issues/1994 + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.results b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.results new file mode 100644 index 00000000..fba532dc --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.tf.results @@ -0,0 +1,278 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=22, + suite_skipped=2, + suite_failures=0, + suite_errors=0, + suite_time=627, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/test_elastic_spark_tensorflow.py', + line=34, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_down_by_discovery', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/1994', + content='/horovod/test/integration/test_elastic_spark_tensorflow.py:35: This ' + 'test fails due to https://github.com/horovod/horovod/issues/1994', + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=681, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_down_by_exception', + result='success', + message=None, + content=None, + time=22.073 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=710, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_no_spark_black_list', + result='success', + message=None, + content=None, + time=55.445 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse', + result='success', + message=None, + content=None, + time=49.354 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse_in_app', + result='success', + message=None, + content=None, + time=41.024 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse_same_task', + result='success', + message=None, + content=None, + time=40.743 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_spark_blacklist_no_node_reuse', + result='success', + message=None, + content=None, + time=40.671 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_spark_blacklist_no_node_reuse_in_app', + result='success', + message=None, + content=None, + time=40.612 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=626, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_auto_scale_up', + result='success', + message=None, + content=None, + time=30.312 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=613, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_all_hosts_lost', + result='success', + message=None, + content=None, + time=12.623 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=584, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_exception_all_ranks', + result='success', + message=None, + content=None, + time=15.757 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=558, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_exception_single_rank', + result='success', + message=None, + content=None, + time=26.113 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=598, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_exception_with_min_hosts_timeout', + result='success', + message=None, + content=None, + time=26.65 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/test_elastic_spark_tensorflow.py', + line=31, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_hosts_added_and_removed', + result='skipped', + message='This test fails due to https://github.com/horovod/horovod/issues/1994', + content='/horovod/test/integration/test_elastic_spark_tensorflow.py:32: This ' + 'test fails due to https://github.com/horovod/horovod/issues/1994', + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=503, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_no_spark_blacklist', + result='success', + message=None, + content=None, + time=25.879 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse', + result='success', + message=None, + content=None, + time=26.382 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse_in_app', + result='success', + message=None, + content=None, + time=26.381 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse_same_task', + result='success', + message=None, + content=None, + time=26.389 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_spark_blacklist_no_node_reuse', + result='success', + message=None, + content=None, + time=26.403 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_spark_blacklist_no_node_reuse_in_app', + result='success', + message=None, + content=None, + time=26.404 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=472, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_fault_tolerance_unused_hosts_added_and_removed', + result='success', + message=None, + content=None, + time=46.667 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.tf.xml', + test_file='test/integration/elastic_spark_common.py', + line=394, + class_name='test.integration.test_elastic_spark_tensorflow.' + 'ElasticSparkTensorflowTests', + test_name='test_happy_run', + result='success', + message=None, + content=None, + time=21.082 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.junit-xml b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.junit-xml new file mode 100644 index 00000000..c48929b0 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.junit-xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.results b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.results new file mode 100644 index 00000000..226fa5a0 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.elastic.spark.torch.results @@ -0,0 +1,254 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=22, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=670, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=653, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_down_by_discovery', + result='success', + message=None, + content=None, + time=26.583 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=681, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_down_by_exception', + result='success', + message=None, + content=None, + time=20.709 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=710, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_no_spark_black_list', + result='success', + message=None, + content=None, + time=58.313 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse', + result='success', + message=None, + content=None, + time=39.759 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse_in_app', + result='success', + message=None, + content=None, + time=39.508 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_spark_blacklist_no_executor_reuse_same_task', + result='success', + message=None, + content=None, + time=39.404 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_spark_blacklist_no_node_reuse', + result='success', + message=None, + content=None, + time=40.36 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_spark_blacklist_no_node_reuse_in_app', + result='success', + message=None, + content=None, + time=39.424 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=626, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_auto_scale_up', + result='success', + message=None, + content=None, + time=27.592 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=613, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_all_hosts_lost', + result='success', + message=None, + content=None, + time=11.068 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=584, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_exception_all_ranks', + result='success', + message=None, + content=None, + time=14.72 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=558, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_exception_single_rank', + result='success', + message=None, + content=None, + time=23.053 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=598, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_exception_with_min_hosts_timeout', + result='success', + message=None, + content=None, + time=25.401 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=414, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_hosts_added_and_removed', + result='success', + message=None, + content=None, + time=48.786 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=503, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_no_spark_blacklist', + result='success', + message=None, + content=None, + time=22.948 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse', + result='success', + message=None, + content=None, + time=25.312 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse_in_app', + result='success', + message=None, + content=None, + time=25.432 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_spark_blacklist_no_executor_reuse_same_task', + result='success', + message=None, + content=None, + time=25.427 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_spark_blacklist_no_node_reuse', + result='success', + message=None, + content=None, + time=25.592 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='../usr/local/lib/python3.6/dist-packages/mock/mock.py', + line=1363, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_spark_blacklist_no_node_reuse_in_app', + result='success', + message=None, + content=None, + time=25.494 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=472, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_fault_tolerance_unused_hosts_added_and_removed', + result='success', + message=None, + content=None, + time=45.176 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.elastic.spark.torch.xml', + test_file='test/integration/elastic_spark_common.py', + line=394, + class_name='test.integration.test_elastic_spark_torch.ElasticSparkTorchTests', + test_name='test_happy_run', + result='success', + message=None, + content=None, + time=19.518 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.gloo.standalone.junit-xml b/python/test/files/junit-xml/pytest/junit.gloo.standalone.junit-xml new file mode 100644 index 00000000..f3127afe --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.standalone.junit-xml @@ -0,0 +1,136 @@ + + + + + + + + + + + /horovod/test/test_spark.py:1638: get_available_devices only supported in Spark 3.0 and above + + + + + + + + + + + /horovod/test/test_spark.py:330: Open MPI is not available + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /horovod/test/test_spark.py:384: Open MPI is not available + + + + + + + + + + + + + + + + + + + /horovod/test/test_run.py:822: MPI is not available + + + + + /horovod/test/test_run.py:626: MPI is not available + + + /horovod/test/test_run.py:548: MPI is not available + + + /horovod/test/test_run.py:585: MPI is not available + + + /horovod/test/test_run.py:730: MPI is not available + + + /horovod/test/test_run.py:706: MPI is not available + + + /horovod/test/test_run.py:724: MPI is not available + + + /horovod/test/test_run.py:700: MPI is not available + + + /horovod/test/test_run.py:755: MPI is not available + + + /horovod/test/test_run.py:773: MPI is not available + + + /horovod/test/test_run.py:718: MPI is not available + + + /horovod/test/test_run.py:694: MPI is not available + + + /horovod/test/test_run.py:712: MPI is not available + + + /horovod/test/test_run.py:688: MPI is not available + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.gloo.standalone.results b/python/test/files/junit-xml/pytest/junit.gloo.standalone.results new file mode 100644 index 00000000..f5efb5e8 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.standalone.results @@ -0,0 +1,1080 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=97, + suite_skipped=17, + suite_failures=0, + suite_errors=0, + suite_time=205, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1408, + class_name='test.test_spark.SparkTests', + test_name='test_check_shape_compatibility', + result='success', + message=None, + content=None, + time=6.389 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1016, + class_name='test.test_spark.SparkTests', + test_name='test_df_cache', + result='success', + message=None, + content=None, + time=7.311 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=119, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces', + result='success', + message=None, + content=None, + time=0.508 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=140, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces_fails', + result='success', + message=None, + content=None, + time=0.509 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=127, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces_from_settings', + result='success', + message=None, + content=None, + time=0.507 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=152, + class_name='test.test_spark.SparkTests', + test_name='test_driver_set_local_rank_to_index', + result='success', + message=None, + content=None, + time=0.51 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1637, + class_name='test.test_spark.SparkTests', + test_name='test_get_available_devices', + result='skipped', + message='get_available_devices only supported in Spark 3.0 and above', + content='/horovod/test/test_spark.py:1638: get_available_devices only ' + 'supported in Spark 3.0 and above', + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1098, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info', + result='success', + message=None, + content=None, + time=5.967 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1147, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info_error_bad_shape', + result='success', + message=None, + content=None, + time=6.228 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1159, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info_error_bad_size', + result='success', + message=None, + content=None, + time=6.974 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1216, + class_name='test.test_spark.SparkTests', + test_name='test_get_metadata', + result='success', + message=None, + content=None, + time=6.566 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=921, + class_name='test.test_spark.SparkTests', + test_name='test_gloo_exec_fn', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=941, + class_name='test.test_spark.SparkTests', + test_name='test_gloo_exec_fn_provides_driver_with_local_rank', + result='success', + message=None, + content=None, + time=1.052 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=363, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_elastic', + result='success', + message=None, + content=None, + time=11.536 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=338, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_with_gloo', + result='success', + message=None, + content=None, + time=10.494 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=329, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_with_mpi', + result='skipped', + message='Open MPI is not available', + content='/horovod/test/test_spark.py:330: Open MPI is not available', + time=1.415 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1505, + class_name='test.test_spark.SparkTests', + test_name='test_hdfs_store_parse_url', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=91, + class_name='test.test_spark.SparkTests', + test_name='test_host_hash', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=936, + class_name='test.test_spark.SparkTests', + test_name='test_mpi_exec_fn_provides_driver_with_local_rank', + result='success', + message=None, + content=None, + time=1.034 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=849, + class_name='test.test_spark.SparkTests', + test_name='test_mpirun_exec_fn', + result='success', + message=None, + content=None, + time=0.011 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=414, + class_name='test.test_spark.SparkTests', + test_name='test_mpirun_not_found', + result='success', + message=None, + content=None, + time=4.391 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1336, + class_name='test.test_spark.SparkTests', + test_name='test_prepare_data_compress_sparse', + result='success', + message=None, + content=None, + time=6.877 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1265, + class_name='test.test_spark.SparkTests', + test_name='test_prepare_data_no_compression', + result='success', + message=None, + content=None, + time=6.206 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=812, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_event', + result='success', + message=None, + content=None, + time=2.517 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=815, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_events', + result='success', + message=None, + content=None, + time=7.539 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=809, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_with_non_zero_exit_code', + result='success', + message=None, + content=None, + time=1.513 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=806, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_with_zero_exit_code', + result='success', + message=None, + content=None, + time=1.513 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=993, + class_name='test.test_spark.SparkTests', + test_name='test_spark_driver_host_discovery', + result='success', + message=None, + content=None, + time=0.509 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=492, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_defaults_num_proc_to_spark_cores_with_gloo', + result='success', + message=None, + content=None, + time=3.829 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=485, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_defaults_num_proc_to_spark_cores_with_mpi', + result='success', + message=None, + content=None, + time=3.723 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=512, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_does_not_default_env_to_os_env_with_gloo', + result='success', + message=None, + content=None, + time=3.823 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=505, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_does_not_default_env_to_os_env_with_mpi', + result='success', + message=None, + content=None, + time=3.85 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=459, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_num_proc_precedes_spark_cores_with_gloo', + result='success', + message=None, + content=None, + time=3.875 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=452, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_num_proc_precedes_spark_cores_with_mpi', + result='success', + message=None, + content=None, + time=3.889 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=433, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_gloo', + result='success', + message=None, + content=None, + time=3.972 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=426, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_mpi', + result='success', + message=None, + content=None, + time=3.948 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=548, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_non_zero_exit_with_gloo', + result='success', + message=None, + content=None, + time=3.733 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=539, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_non_zero_exit_with_mpi', + result='success', + message=None, + content=None, + time=3.84 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=529, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_os_environ_with_mpi', + result='success', + message=None, + content=None, + time=3.87 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=472, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_path_with_mpi', + result='success', + message=None, + content=None, + time=3.828 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1614, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_abort_command', + result='success', + message=None, + content=None, + time=0.514 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1630, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_abort_no_command', + result='success', + message=None, + content=None, + time=0.713 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1568, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_env', + result='success', + message=None, + content=None, + time=1.011 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1608, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_execute_command', + result='success', + message=None, + content=None, + time=0.711 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1466, + class_name='test.test_spark.SparkTests', + test_name='test_sync_hdfs_store', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=262, + class_name='test.test_spark.SparkTests', + test_name='test_task_fn_run_commands', + result='success', + message=None, + content=None, + time=6.407 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=295, + class_name='test.test_spark.SparkTests', + test_name='test_task_fn_run_gloo_exec', + result='success', + message=None, + content=None, + time=6.347 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=205, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_check_for_command_start', + result='success', + message=None, + content=None, + time=6.029 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=183, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_wait_for_command_start_with_timeout', + result='success', + message=None, + content=None, + time=3.017 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=175, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_wait_for_command_start_without_timeout', + result='success', + message=None, + content=None, + time=1.509 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=392, + class_name='test.test_spark.SparkTests', + test_name='test_timeout_with_gloo', + result='success', + message=None, + content=None, + time=9.259 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=383, + class_name='test.test_spark.SparkTests', + test_name='test_timeout_with_mpi', + result='skipped', + message='Open MPI is not available', + content='/horovod/test/test_spark.py:384: Open MPI is not available', + time=1.325 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1649, + class_name='test.test_spark.SparkTests', + test_name='test_to_list', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1201, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_col_boolean', + result='success', + message=None, + content=None, + time=6.255 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1186, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_col_integer', + result='success', + message=None, + content=None, + time=6.333 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_spark.py', + line=1171, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_ratio', + result='success', + message=None, + content=None, + time=3.86 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=74, + class_name='test.test_run.RunTests', + test_name='test_autotune_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=93, + class_name='test.test_run.RunTests', + test_name='test_autotuning_with_fixed_param', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=165, + class_name='test.test_run.RunTests', + test_name='test_config_file', + result='success', + message=None, + content=None, + time=0.009 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=207, + class_name='test.test_run.RunTests', + test_name='test_config_file_override_args', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=864, + class_name='test.test_run.RunTests', + test_name='test_generate_jsrun_rankfile', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=427, + class_name='test.test_run.RunTests', + test_name='test_get_mpi_implementation', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=790, + class_name='test.test_run.RunTests', + test_name='test_gloo_run_minimal', + result='success', + message=None, + content=None, + time=0.194 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=801, + class_name='test.test_run.RunTests', + test_name='test_gloo_run_with_os_environ', + result='success', + message=None, + content=None, + time=0.2 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=415, + class_name='test.test_run.RunTests', + test_name='test_hash', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=809, + class_name='test.test_run.RunTests', + test_name='test_horovodrun_hostfile', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=419, + class_name='test.test_run.RunTests', + test_name='test_host_hash', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=224, + class_name='test.test_run.RunTests', + test_name='test_in_thread_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=821, + class_name='test.test_run.RunTests', + test_name='test_js_run', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:822: MPI is not available', + time=0.537 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=139, + class_name='test.test_run.RunTests', + test_name='test_library_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=154, + class_name='test.test_run.RunTests', + test_name='test_logging_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=625, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_full', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:626: MPI is not available', + time=0.175 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=547, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_minimal', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:548: MPI is not available', + time=0.171 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=584, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_on_large_cluster', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:585: MPI is not available', + time=0.172 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=729, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_both_paths', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:730: MPI is not available', + time=0.171 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=705, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_both_pythonpaths', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:706: MPI is not available', + time=0.177 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=723, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_env_path', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:724: MPI is not available', + time=0.18 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=699, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_env_pythonpath', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:700: MPI is not available', + time=0.181 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=754, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_non_zero_exit', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:755: MPI is not available', + time=0.189 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=772, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_os_environ', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:773: MPI is not available', + time=0.184 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=717, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_sys_path', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:718: MPI is not available', + time=0.182 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=693, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_sys_pythonpath', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:694: MPI is not available', + time=0.188 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=711, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_without_path', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:712: MPI is not available', + time=0.194 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=687, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_without_pythonpath', + result='skipped', + message='MPI is not available', + content='/horovod/test/test_run.py:688: MPI is not available', + time=0.192 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=249, + class_name='test.test_run.RunTests', + test_name='test_on_event', + result='success', + message=None, + content=None, + time=0.218 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=57, + class_name='test.test_run.RunTests', + test_name='test_params_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=453, + class_name='test.test_run.RunTests', + test_name='test_run_controller', + result='success', + message=None, + content=None, + time=0.706 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=896, + class_name='test.test_run.RunTests', + test_name='test_run_with_jsrun', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=350, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_last_line_wo_eol', + result='success', + message=None, + content=None, + time=0.181 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=347, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_stderr', + result='success', + message=None, + content=None, + time=0.177 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=344, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_stdout', + result='success', + message=None, + content=None, + time=0.182 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=357, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_interrupts_on_event', + result='success', + message=None, + content=None, + time=1.029 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=371, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_interrupts_on_parent_shutdown', + result='success', + message=None, + content=None, + time=0.209 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=354, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_returns_exit_code', + result='success', + message=None, + content=None, + time=0.209 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=119, + class_name='test.test_run.RunTests', + test_name='test_stall_check_args', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=108, + class_name='test.test_run.RunTests', + test_name='test_timeline_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.standalone.xml', + test_file='test/test_run.py', + line=217, + class_name='test.test_run.RunTests', + test_name='test_validate_config_args', + result='success', + message=None, + content=None, + time=0.005 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.gloo.static.junit-xml b/python/test/files/junit-xml/pytest/junit.gloo.static.junit-xml new file mode 100644 index 00000000..47f7f43c --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.static.junit-xml @@ -0,0 +1,53 @@ + + + + + + + + + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + /horovod/test/integration/test_static_run.py:149: MPI is not available + + + + + + + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + /horovod/test/integration/test_static_run.py:136: MPI is not available + + + diff --git a/python/test/files/junit-xml/pytest/junit.gloo.static.results b/python/test/files/junit-xml/pytest/junit.gloo.static.results new file mode 100644 index 00000000..04628346 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.gloo.static.results @@ -0,0 +1,288 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=24, + suite_skipped=12, + suite_failures=0, + suite_errors=0, + suite_time=69, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_local_cmd', + result='success', + message=None, + content=None, + time=3.284 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_local_func', + result='success', + message=None, + content=None, + time=3.885 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_mixed_cmd', + result='success', + message=None, + content=None, + time=4.615 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_mixed_func', + result='success', + message=None, + content=None, + time=5.338 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_remote_cmd', + result='success', + message=None, + content=None, + time=4.68 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_remote_func', + result='success', + message=None, + content=None, + time=5.279 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_local_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.422 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_local_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.329 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_mixed_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.32 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_mixed_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.324 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_remote_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.318 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_remote_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:149: MPI is not ' + 'available', + time=1.321 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_local_cmd', + result='success', + message=None, + content=None, + time=2.914 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_local_func', + result='success', + message=None, + content=None, + time=3.739 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_mixed_cmd', + result='success', + message=None, + content=None, + time=4.611 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_mixed_func', + result='success', + message=None, + content=None, + time=4.809 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_remote_cmd', + result='success', + message=None, + content=None, + time=4.597 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_remote_func', + result='success', + message=None, + content=None, + time=4.788 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_local_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.377 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_local_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.361 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_mixed_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.373 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_mixed_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.436 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_remote_cmd', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.351 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.gloo.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_remote_func', + result='skipped', + message='MPI is not available', + content='/horovod/test/integration/test_static_run.py:136: MPI is not ' + 'available', + time=1.425 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.mpi.integration.junit-xml b/python/test/files/junit-xml/pytest/junit.mpi.integration.junit-xml new file mode 100644 index 00000000..44ac603e --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.integration.junit-xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.mpi.integration.results b/python/test/files/junit-xml/pytest/junit.mpi.integration.results new file mode 100644 index 00000000..98cdb552 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.integration.results @@ -0,0 +1,45 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=3, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=15, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.integration.xml', + test_file='test/test_interactiverun.py', + line=78, + class_name='test.test_interactiverun.InteractiveRunTests', + test_name='test_failed_run', + result='success', + message=None, + content=None, + time=9.386 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.integration.xml', + test_file='test/test_interactiverun.py', + line=35, + class_name='test.test_interactiverun.InteractiveRunTests', + test_name='test_happy_run', + result='success', + message=None, + content=None, + time=4.012 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.integration.xml', + test_file='test/test_interactiverun.py', + line=63, + class_name='test.test_interactiverun.InteractiveRunTests', + test_name='test_happy_run_elastic', + result='success', + message=None, + content=None, + time=1.898 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.mpi.standalone.junit-xml b/python/test/files/junit-xml/pytest/junit.mpi.standalone.junit-xml new file mode 100644 index 00000000..63bfd1d5 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.standalone.junit-xml @@ -0,0 +1,104 @@ + + + + + + + + + + + /horovod/test/test_spark.py:1638: get_available_devices only supported in Spark 3.0 and above + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.mpi.standalone.results b/python/test/files/junit-xml/pytest/junit.mpi.standalone.results new file mode 100644 index 00000000..e04ecb22 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.standalone.results @@ -0,0 +1,1080 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=97, + suite_skipped=1, + suite_failures=0, + suite_errors=0, + suite_time=219, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1408, + class_name='test.test_spark.SparkTests', + test_name='test_check_shape_compatibility', + result='success', + message=None, + content=None, + time=7.035 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1016, + class_name='test.test_spark.SparkTests', + test_name='test_df_cache', + result='success', + message=None, + content=None, + time=7.226 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=119, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces', + result='success', + message=None, + content=None, + time=0.508 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=140, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces_fails', + result='success', + message=None, + content=None, + time=0.508 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=127, + class_name='test.test_spark.SparkTests', + test_name='test_driver_common_interfaces_from_settings', + result='success', + message=None, + content=None, + time=0.507 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=152, + class_name='test.test_spark.SparkTests', + test_name='test_driver_set_local_rank_to_index', + result='success', + message=None, + content=None, + time=0.51 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1637, + class_name='test.test_spark.SparkTests', + test_name='test_get_available_devices', + result='skipped', + message='get_available_devices only supported in Spark 3.0 and above', + content='/horovod/test/test_spark.py:1638: get_available_devices only ' + 'supported in Spark 3.0 and above', + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1098, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info', + result='success', + message=None, + content=None, + time=6.198 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1147, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info_error_bad_shape', + result='success', + message=None, + content=None, + time=6.138 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1159, + class_name='test.test_spark.SparkTests', + test_name='test_get_col_info_error_bad_size', + result='success', + message=None, + content=None, + time=6.161 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1216, + class_name='test.test_spark.SparkTests', + test_name='test_get_metadata', + result='success', + message=None, + content=None, + time=6.009 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=921, + class_name='test.test_spark.SparkTests', + test_name='test_gloo_exec_fn', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=941, + class_name='test.test_spark.SparkTests', + test_name='test_gloo_exec_fn_provides_driver_with_local_rank', + result='success', + message=None, + content=None, + time=1.034 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=363, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_elastic', + result='success', + message=None, + content=None, + time=11.495 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=338, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_with_gloo', + result='success', + message=None, + content=None, + time=10.036 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=329, + class_name='test.test_spark.SparkTests', + test_name='test_happy_run_with_mpi', + result='success', + message=None, + content=None, + time=9.208 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1505, + class_name='test.test_spark.SparkTests', + test_name='test_hdfs_store_parse_url', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=91, + class_name='test.test_spark.SparkTests', + test_name='test_host_hash', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=936, + class_name='test.test_spark.SparkTests', + test_name='test_mpi_exec_fn_provides_driver_with_local_rank', + result='success', + message=None, + content=None, + time=1.033 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=849, + class_name='test.test_spark.SparkTests', + test_name='test_mpirun_exec_fn', + result='success', + message=None, + content=None, + time=0.011 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=414, + class_name='test.test_spark.SparkTests', + test_name='test_mpirun_not_found', + result='success', + message=None, + content=None, + time=3.869 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1336, + class_name='test.test_spark.SparkTests', + test_name='test_prepare_data_compress_sparse', + result='success', + message=None, + content=None, + time=6.896 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1265, + class_name='test.test_spark.SparkTests', + test_name='test_prepare_data_no_compression', + result='success', + message=None, + content=None, + time=6.362 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=812, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_event', + result='success', + message=None, + content=None, + time=2.517 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=815, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_events', + result='success', + message=None, + content=None, + time=7.534 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=809, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_with_non_zero_exit_code', + result='success', + message=None, + content=None, + time=1.512 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=806, + class_name='test.test_spark.SparkTests', + test_name='test_rsh_with_zero_exit_code', + result='success', + message=None, + content=None, + time=2.013 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=993, + class_name='test.test_spark.SparkTests', + test_name='test_spark_driver_host_discovery', + result='success', + message=None, + content=None, + time=0.508 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=492, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_defaults_num_proc_to_spark_cores_with_gloo', + result='success', + message=None, + content=None, + time=3.972 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=485, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_defaults_num_proc_to_spark_cores_with_mpi', + result='success', + message=None, + content=None, + time=3.868 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=512, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_does_not_default_env_to_os_env_with_gloo', + result='success', + message=None, + content=None, + time=3.865 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=505, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_does_not_default_env_to_os_env_with_mpi', + result='success', + message=None, + content=None, + time=3.955 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=459, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_num_proc_precedes_spark_cores_with_gloo', + result='success', + message=None, + content=None, + time=3.872 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=452, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_num_proc_precedes_spark_cores_with_mpi', + result='success', + message=None, + content=None, + time=3.868 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=433, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_gloo', + result='success', + message=None, + content=None, + time=3.975 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=426, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_mpi', + result='success', + message=None, + content=None, + time=3.946 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=548, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_non_zero_exit_with_gloo', + result='success', + message=None, + content=None, + time=3.868 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=539, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_non_zero_exit_with_mpi', + result='success', + message=None, + content=None, + time=3.962 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=529, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_os_environ_with_mpi', + result='success', + message=None, + content=None, + time=3.863 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=472, + class_name='test.test_spark.SparkTests', + test_name='test_spark_run_with_path_with_mpi', + result='success', + message=None, + content=None, + time=3.822 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1614, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_abort_command', + result='success', + message=None, + content=None, + time=0.511 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1630, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_abort_no_command', + result='success', + message=None, + content=None, + time=0.712 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1568, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_env', + result='success', + message=None, + content=None, + time=1.011 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1608, + class_name='test.test_spark.SparkTests', + test_name='test_spark_task_service_execute_command', + result='success', + message=None, + content=None, + time=0.712 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1466, + class_name='test.test_spark.SparkTests', + test_name='test_sync_hdfs_store', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=262, + class_name='test.test_spark.SparkTests', + test_name='test_task_fn_run_commands', + result='success', + message=None, + content=None, + time=6.289 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=295, + class_name='test.test_spark.SparkTests', + test_name='test_task_fn_run_gloo_exec', + result='success', + message=None, + content=None, + time=6.251 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=205, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_check_for_command_start', + result='success', + message=None, + content=None, + time=6.022 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=183, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_wait_for_command_start_with_timeout', + result='success', + message=None, + content=None, + time=3.013 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=175, + class_name='test.test_spark.SparkTests', + test_name='test_task_service_wait_for_command_start_without_timeout', + result='success', + message=None, + content=None, + time=1.509 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=392, + class_name='test.test_spark.SparkTests', + test_name='test_timeout_with_gloo', + result='success', + message=None, + content=None, + time=9.096 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=383, + class_name='test.test_spark.SparkTests', + test_name='test_timeout_with_mpi', + result='success', + message=None, + content=None, + time=9.264 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1649, + class_name='test.test_spark.SparkTests', + test_name='test_to_list', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1201, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_col_boolean', + result='success', + message=None, + content=None, + time=6.052 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1186, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_col_integer', + result='success', + message=None, + content=None, + time=6.158 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_spark.py', + line=1171, + class_name='test.test_spark.SparkTests', + test_name='test_train_val_split_ratio', + result='success', + message=None, + content=None, + time=3.948 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=74, + class_name='test.test_run.RunTests', + test_name='test_autotune_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=93, + class_name='test.test_run.RunTests', + test_name='test_autotuning_with_fixed_param', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=165, + class_name='test.test_run.RunTests', + test_name='test_config_file', + result='success', + message=None, + content=None, + time=0.008 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=207, + class_name='test.test_run.RunTests', + test_name='test_config_file_override_args', + result='success', + message=None, + content=None, + time=0.008 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=864, + class_name='test.test_run.RunTests', + test_name='test_generate_jsrun_rankfile', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=427, + class_name='test.test_run.RunTests', + test_name='test_get_mpi_implementation', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=790, + class_name='test.test_run.RunTests', + test_name='test_gloo_run_minimal', + result='success', + message=None, + content=None, + time=0.187 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=801, + class_name='test.test_run.RunTests', + test_name='test_gloo_run_with_os_environ', + result='success', + message=None, + content=None, + time=0.188 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=415, + class_name='test.test_run.RunTests', + test_name='test_hash', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=809, + class_name='test.test_run.RunTests', + test_name='test_horovodrun_hostfile', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=419, + class_name='test.test_run.RunTests', + test_name='test_host_hash', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=224, + class_name='test.test_run.RunTests', + test_name='test_in_thread_args', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=821, + class_name='test.test_run.RunTests', + test_name='test_js_run', + result='success', + message=None, + content=None, + time=0.181 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=139, + class_name='test.test_run.RunTests', + test_name='test_library_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=154, + class_name='test.test_run.RunTests', + test_name='test_logging_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=625, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_full', + result='success', + message=None, + content=None, + time=0.181 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=547, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_minimal', + result='success', + message=None, + content=None, + time=0.197 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=584, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_on_large_cluster', + result='success', + message=None, + content=None, + time=0.178 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=729, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_both_paths', + result='success', + message=None, + content=None, + time=0.177 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=705, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_both_pythonpaths', + result='success', + message=None, + content=None, + time=0.179 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=723, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_env_path', + result='success', + message=None, + content=None, + time=0.184 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=699, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_env_pythonpath', + result='success', + message=None, + content=None, + time=0.207 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=754, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_non_zero_exit', + result='success', + message=None, + content=None, + time=0.179 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=772, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_os_environ', + result='success', + message=None, + content=None, + time=0.18 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=717, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_sys_path', + result='success', + message=None, + content=None, + time=0.186 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=693, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_with_sys_pythonpath', + result='success', + message=None, + content=None, + time=0.179 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=711, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_without_path', + result='success', + message=None, + content=None, + time=0.179 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=687, + class_name='test.test_run.RunTests', + test_name='test_mpi_run_without_pythonpath', + result='success', + message=None, + content=None, + time=0.179 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=249, + class_name='test.test_run.RunTests', + test_name='test_on_event', + result='success', + message=None, + content=None, + time=0.218 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=57, + class_name='test.test_run.RunTests', + test_name='test_params_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=453, + class_name='test.test_run.RunTests', + test_name='test_run_controller', + result='success', + message=None, + content=None, + time=0.715 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=896, + class_name='test.test_run.RunTests', + test_name='test_run_with_jsrun', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=350, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_last_line_wo_eol', + result='success', + message=None, + content=None, + time=0.174 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=347, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_stderr', + result='success', + message=None, + content=None, + time=0.177 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=344, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_captures_stdout', + result='success', + message=None, + content=None, + time=0.174 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=357, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_interrupts_on_event', + result='success', + message=None, + content=None, + time=1.028 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=371, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_interrupts_on_parent_shutdown', + result='success', + message=None, + content=None, + time=0.208 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=354, + class_name='test.test_run.RunTests', + test_name='test_safe_shell_exec_returns_exit_code', + result='success', + message=None, + content=None, + time=0.178 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=119, + class_name='test.test_run.RunTests', + test_name='test_stall_check_args', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=108, + class_name='test.test_run.RunTests', + test_name='test_timeline_args', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.standalone.xml', + test_file='test/test_run.py', + line=217, + class_name='test.test_run.RunTests', + test_name='test_validate_config_args', + result='success', + message=None, + content=None, + time=0.005 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.mpi.static.junit-xml b/python/test/files/junit-xml/pytest/junit.mpi.static.junit-xml new file mode 100644 index 00000000..7458c664 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.static.junit-xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.mpi.static.results b/python/test/files/junit-xml/pytest/junit.mpi.static.results new file mode 100644 index 00000000..dc7fcbba --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.mpi.static.results @@ -0,0 +1,276 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=24, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=124, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_local_cmd', + result='success', + message=None, + content=None, + time=3.067 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_local_func', + result='success', + message=None, + content=None, + time=3.856 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_mixed_cmd', + result='success', + message=None, + content=None, + time=4.578 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_mixed_func', + result='success', + message=None, + content=None, + time=5.311 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_remote_cmd', + result='success', + message=None, + content=None, + time=4.867 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_gloo_remote_func', + result='success', + message=None, + content=None, + time=6.054 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_local_cmd', + result='success', + message=None, + content=None, + time=6.032 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_local_func', + result='success', + message=None, + content=None, + time=6.664 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_mixed_cmd', + result='success', + message=None, + content=None, + time=6.398 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_mixed_func', + result='success', + message=None, + content=None, + time=7.151 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_remote_cmd', + result='success', + message=None, + content=None, + time=7.365 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=148, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_failure_mpi_remote_func', + result='success', + message=None, + content=None, + time=6.825 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_local_cmd', + result='success', + message=None, + content=None, + time=3.439 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_local_func', + result='success', + message=None, + content=None, + time=3.429 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_mixed_cmd', + result='success', + message=None, + content=None, + time=4.804 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_mixed_func', + result='success', + message=None, + content=None, + time=5.134 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_remote_cmd', + result='success', + message=None, + content=None, + time=4.886 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_gloo_remote_func', + result='success', + message=None, + content=None, + time=5.585 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_local_cmd', + result='success', + message=None, + content=None, + time=3.761 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_local_func', + result='success', + message=None, + content=None, + time=4.591 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_mixed_cmd', + result='success', + message=None, + content=None, + time=5.203 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_mixed_func', + result='success', + message=None, + content=None, + time=5.504 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_remote_cmd', + result='success', + message=None, + content=None, + time=5.238 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.mpi.static.xml', + test_file='test/integration/test_static_run.py', + line=135, + class_name='test.integration.test_static_run.StaticRunTests', + test_name='test_run_success_mpi_remote_func', + result='success', + message=None, + content=None, + time=4.697 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.spark.integration.1.junit-xml b/python/test/files/junit-xml/pytest/junit.spark.integration.1.junit-xml new file mode 100644 index 00000000..3e67db17 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.spark.integration.1.junit-xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/test_util.py:2076: Not a test. + + + + + + + + + + + + /horovod/test/test_spark_torch.py:469: elastic horovod does not support shutdown from the spark driver while elastic driver is waiting for hosts to come up + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.spark.integration.1.results b/python/test/files/junit-xml/pytest/junit.spark.integration.1.results new file mode 100644 index 00000000..4186d4cb --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.spark.integration.1.results @@ -0,0 +1,402 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=35, + suite_skipped=2, + suite_failures=0, + suite_errors=0, + suite_time=165, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=454, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_batch_generator_fn', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=385, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_calculate_shuffle_buffer_size', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=371, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_calculate_shuffle_buffer_size_small_row_size', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=410, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_convert_custom_sparse_to_dense_bare_keras_fn', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=399, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_custom_sparse_to_dense_fn', + result='success', + message=None, + content=None, + time=0.041 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=75, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_fit_model', + result='success', + message=None, + content=None, + time=14.352 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=103, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_fit_model_multiclass', + result='success', + message=None, + content=None, + time=34.284 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=186, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_keras_direct_parquet_train', + result='success', + message=None, + content=None, + time=11.54 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=225, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_keras_model_checkpoint_callback', + result='success', + message=None, + content=None, + time=14.137 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=322, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_model_serialization', + result='success', + message=None, + content=None, + time=6.851 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=575, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prep_data_tf_keras_fn_with_sparse_col', + result='success', + message=None, + content=None, + time=0.051 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=612, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prep_data_tf_keras_fn_without_sparse_col', + result='success', + message=None, + content=None, + time=0.032 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=416, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prepare_data_bare_keras_fn', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=528, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_reshape', + result='success', + message=None, + content=None, + time=0.039 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=139, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_restore_from_checkpoint', + result='success', + message=None, + content=None, + time=7.23 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_keras.py', + line=361, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_serialize_param_value', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='../usr/local/lib/python3.6/dist-packages/tensorflow_core/python/' + 'framework/test_util.py', + line=2075, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_session', + result='skipped', + message='Not a test.', + content='/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framewo' + 'rk/test_util.py:2076: Not a test.', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=372, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_loss_with_sample_weight', + result='success', + message=None, + content=None, + time=0.022 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=401, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_loss_without_sample_weight', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=198, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_shuffle_buffer_size', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=184, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_shuffle_buffer_size_small_row_size', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=227, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_construct_metric_value_holders_one_metric_for_all_labels', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=73, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_fit_model', + result='success', + message=None, + content=None, + time=12.786 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=269, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_get_metric_avgs', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=433, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic', + result='success', + message=None, + content=None, + time=9.165 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=447, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic_fault_tolerant', + result='success', + message=None, + content=None, + time=23.934 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=468, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic_fault_tolerant_fails', + result='skipped', + message='elastic horovod does not support shutdown from the spark driver ' + 'while elastic driver is waiting for hosts to come up', + content='/horovod/test/test_spark_torch.py:469: elastic horovod does not ' + 'support shutdown from the spark driver while elastic driver is ' + 'waiting for hosts to come up', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=213, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_metric_class', + result='success', + message=None, + content=None, + time=0.026 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=251, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_prepare_np_data', + result='success', + message=None, + content=None, + time=6.319 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=167, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_pytorch_get_optimizer_with_unscaled_lr', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=103, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_restore_from_checkpoint', + result='success', + message=None, + content=None, + time=7.198 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=335, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_torch_direct_parquet_train', + result='success', + message=None, + content=None, + time=8.305 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=325, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_torch_param_serialize', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=140, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_transform_multi_class', + result='success', + message=None, + content=None, + time=6.549 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.1.xml', + test_file='test/test_spark_torch.py', + line=291, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_update_metrics', + result='success', + message=None, + content=None, + time=0.008 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/junit.spark.integration.2.junit-xml b/python/test/files/junit-xml/pytest/junit.spark.integration.2.junit-xml new file mode 100644 index 00000000..182df175 --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.spark.integration.2.junit-xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/test_util.py:2076: Not a test. + + + + + + + + + + + + /horovod/test/test_spark_torch.py:469: elastic horovod does not support shutdown from the spark driver while elastic driver is waiting for hosts to come up + + + + + + + + + + + diff --git a/python/test/files/junit-xml/pytest/junit.spark.integration.2.results b/python/test/files/junit-xml/pytest/junit.spark.integration.2.results new file mode 100644 index 00000000..074671dd --- /dev/null +++ b/python/test/files/junit-xml/pytest/junit.spark.integration.2.results @@ -0,0 +1,402 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=35, + suite_skipped=2, + suite_failures=0, + suite_errors=0, + suite_time=172, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=454, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_batch_generator_fn', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=385, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_calculate_shuffle_buffer_size', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=371, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_calculate_shuffle_buffer_size_small_row_size', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=410, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_convert_custom_sparse_to_dense_bare_keras_fn', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=399, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_custom_sparse_to_dense_fn', + result='success', + message=None, + content=None, + time=0.038 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=75, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_fit_model', + result='success', + message=None, + content=None, + time=12.424 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=103, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_fit_model_multiclass', + result='success', + message=None, + content=None, + time=31.925 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=186, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_keras_direct_parquet_train', + result='success', + message=None, + content=None, + time=11.57 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=225, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_keras_model_checkpoint_callback', + result='success', + message=None, + content=None, + time=14.517 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=322, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_model_serialization', + result='success', + message=None, + content=None, + time=7.223 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=575, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prep_data_tf_keras_fn_with_sparse_col', + result='success', + message=None, + content=None, + time=0.051 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=612, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prep_data_tf_keras_fn_without_sparse_col', + result='success', + message=None, + content=None, + time=0.034 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=416, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_prepare_data_bare_keras_fn', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=528, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_reshape', + result='success', + message=None, + content=None, + time=0.04 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=139, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_restore_from_checkpoint', + result='success', + message=None, + content=None, + time=8.92 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_keras.py', + line=361, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_serialize_param_value', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='../usr/local/lib/python3.6/dist-packages/tensorflow_core/python/' + 'framework/test_util.py', + line=2075, + class_name='test.test_spark_keras.SparkKerasTests', + test_name='test_session', + result='skipped', + message='Not a test.', + content='/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framewo' + 'rk/test_util.py:2076: Not a test.', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=372, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_loss_with_sample_weight', + result='success', + message=None, + content=None, + time=0.025 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=401, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_loss_without_sample_weight', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=198, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_shuffle_buffer_size', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=184, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_calculate_shuffle_buffer_size_small_row_size', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=227, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_construct_metric_value_holders_one_metric_for_all_labels', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=73, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_fit_model', + result='success', + message=None, + content=None, + time=13.773 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=269, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_get_metric_avgs', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=433, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic', + result='success', + message=None, + content=None, + time=9.573 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=447, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic_fault_tolerant', + result='success', + message=None, + content=None, + time=27.56 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=468, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_happy_run_elastic_fault_tolerant_fails', + result='skipped', + message='elastic horovod does not support shutdown from the spark driver ' + 'while elastic driver is waiting for hosts to come up', + content='/horovod/test/test_spark_torch.py:469: elastic horovod does not ' + 'support shutdown from the spark driver while elastic driver is ' + 'waiting for hosts to come up', + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=213, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_metric_class', + result='success', + message=None, + content=None, + time=0.023 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=251, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_prepare_np_data', + result='success', + message=None, + content=None, + time=7.061 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=167, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_pytorch_get_optimizer_with_unscaled_lr', + result='success', + message=None, + content=None, + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=103, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_restore_from_checkpoint', + result='success', + message=None, + content=None, + time=8.464 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=335, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_torch_direct_parquet_train', + result='success', + message=None, + content=None, + time=9.825 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=325, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_torch_param_serialize', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=140, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_transform_multi_class', + result='success', + message=None, + content=None, + time=7.384 + ), + publish.unittestresults.UnitTestCase( + result_file='pytest/junit.spark.integration.2.xml', + test_file='test/test_spark_torch.py', + line=291, + class_name='test.test_spark_torch.SparkTorchTests', + test_name='test_update_metrics', + result='success', + message=None, + content=None, + time=0.008 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.junit-xml b/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.junit-xml new file mode 100644 index 00000000..0d757f88 --- /dev/null +++ b/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.junit-xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.results b/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.results new file mode 100644 index 00000000..e35750ce --- /dev/null +++ b/python/test/files/junit-xml/scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.results @@ -0,0 +1,67 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=5, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=2, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml', + test_file=None, + line=None, + class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', + test_name='diff options with empty diff column name', + result='success', + message=None, + content=None, + time=0.259 + ), + publish.unittestresults.UnitTestCase( + result_file='scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml', + test_file=None, + line=None, + class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', + test_name='diff options left and right prefixes', + result='success', + message=None, + content=None, + time=1.959 + ), + publish.unittestresults.UnitTestCase( + result_file='scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml', + test_file=None, + line=None, + class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', + test_name='diff options diff value', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml', + test_file=None, + line=None, + class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', + test_name='diff options with change column name same as diff column', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='scalatest/TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml', + test_file=None, + line=None, + class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', + test_name='fluent methods of diff options', + result='success', + message=None, + content=None, + time=0.001 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/testcase-in-testcase.junit-xml b/python/test/files/junit-xml/testcase-in-testcase.junit-xml new file mode 100644 index 00000000..a67a2928 --- /dev/null +++ b/python/test/files/junit-xml/testcase-in-testcase.junit-xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/testcase-in-testcase.results b/python/test/files/junit-xml/testcase-in-testcase.results new file mode 100644 index 00000000..a2a0f8dd --- /dev/null +++ b/python/test/files/junit-xml/testcase-in-testcase.results @@ -0,0 +1,67 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=5, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=4, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='testcase-in-testcase.xml', + test_file='/somepath', + line=34, + class_name='someName', + test_name='TestCase1', + result='success', + message=None, + content=None, + time=1.32159 + ), + publish.unittestresults.UnitTestCase( + result_file='testcase-in-testcase.xml', + test_file='/somepath', + line=65, + class_name='someName', + test_name='TestCase2', + result='success', + message=None, + content=None, + time=1.321319 + ), + publish.unittestresults.UnitTestCase( + result_file='testcase-in-testcase.xml', + test_file='/somepath', + line=40, + class_name='someName', + test_name='TestCase3', + result='success', + message=None, + content=None, + time=1.08817 + ), + publish.unittestresults.UnitTestCase( + result_file='testcase-in-testcase.xml', + test_file='/somepath', + line=40, + class_name='someName', + test_name='TestCase4', + result='success', + message=None, + content=None, + time=0.98817 + ), + publish.unittestresults.UnitTestCase( + result_file='testcase-in-testcase.xml', + test_file='/somepath', + line=40, + class_name='someName', + test_name='TestCase5', + result='success', + message=None, + content=None, + time=0.08817 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/tst/disabled.junit-xml b/python/test/files/junit-xml/tst/disabled.junit-xml new file mode 100644 index 00000000..f9bd94d1 --- /dev/null +++ b/python/test/files/junit-xml/tst/disabled.junit-xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/tst/disabled.results b/python/test/files/junit-xml/tst/disabled.results new file mode 100644 index 00000000..c7c08bb1 --- /dev/null +++ b/python/test/files/junit-xml/tst/disabled.results @@ -0,0 +1,368 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=2, + suite_tests=31, + suite_skipped=5, + suite_failures=19, + suite_errors=1, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='positive_arguments_must_produce_expected_result[0]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='factorial_of_value_from_fixture', + result='failure', + message='/home/ivan/prj/tst/tests/failed/main.cpp:72: error: ' + 'check_eq(3628800, 3628801)', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='factorial_of_value_from_fixture[3]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='factorial_of_value_from_fixture[2]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='disabled_test', + result='disabled', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='positive_arguments_must_produce_expected_result', + result='failure', + message='/home/ivan/prj/tst/tests/failed/main.cpp:45: error: check_ne(6, ' + '6)hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='test_which_throws_unknown_exception', + result='error', + message='uncaught (anonymous namespace)::some_unknown_exception', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='positive_arguments_must_produce_expected_result[2]', + result='failure', + message='/home/ivan/prj/tst/tests/failed/main.cpp:85: error: check(false)', + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='positive_arguments_must_produce_expected_result[3]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='factorial_of_value_from_fixture[0]', + result='failure', + message='/home/ivan/prj/tst/tests/failed/main.cpp:109: error: expected 2', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='disabled_param_test[0]', + result='disabled', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='disabled_param_test[1]', + result='disabled', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='disabled_param_test[2]', + result='disabled', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='test_which_fails_check_eq_with_custom_message', + result='failure', + message='/home/ivan/prj/tst/tests/failed/main.cpp:62: error: check_eq(6, ' + '7)hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='disabled_param_test[3]', + result='disabled', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='positive_arguments_must_produce_expected_result[1]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='factorial_of_value_from_fixture[1]', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_ge_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:59: error: check_ge(2, ' + '3)failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_ge', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:55: error: check_ge(2, ' + '3)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_gt_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:43: error: check_gt(2, ' + '2)failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_lt_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:35: error: check_lt(2, ' + '2)failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:11: error: failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_gt', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:39: error: check_gt(2, ' + '2)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:7: error: Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_le_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:51: error: check_le(2, ' + '1)failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_eq', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:15: error: check_eq(1, ' + '2)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_eq_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:19: error: check_eq(1, ' + '2)failed!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_le', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:47: error: check_le(2, ' + '1)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_ne', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:23: error: check_ne(2, ' + '2)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_lt', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:31: error: check_lt(2, ' + '2)Hello world!', + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='tst/disabled.xml', + test_file=None, + line=None, + class_name=None, + test_name='check_ne_print', + result='failure', + message='/home/ivan/prj/tst/tests/failed/checks.cpp:27: error: check_ne(2, ' + '2)failed!', + content=None, + time=0.001 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/unsupported-unicode.junit-xml b/python/test/files/junit-xml/unsupported-unicode.junit-xml new file mode 100644 index 00000000..d05c2df5 --- /dev/null +++ b/python/test/files/junit-xml/unsupported-unicode.junit-xml @@ -0,0 +1,30 @@ + + + + + + skipped + + + + Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓 + + + + failed + + + + Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓 + + + + error + + + + Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓 + + + + diff --git a/python/test/files/junit-xml/unsupported-unicode.results b/python/test/files/junit-xml/unsupported-unicode.results new file mode 100644 index 00000000..93f34b9e --- /dev/null +++ b/python/test/files/junit-xml/unsupported-unicode.results @@ -0,0 +1,89 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=7, + suite_skipped=2, + suite_failures=2, + suite_errors=2, + suite_time=8, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-1.py', + line=1, + class_name=None, + test_name='test 1 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓', + result='success', + message=None, + content=None, + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-2.py', + line=2, + class_name=None, + test_name='test 2', + result='skipped', + message='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓', + content='skipped\n ', + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-3.py', + line=3, + class_name=None, + test_name='test 3', + result='skipped', + message='message', + content='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓\n ', + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-4.py', + line=4, + class_name=None, + test_name='test 4', + result='failure', + message='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓', + content='failed\n ', + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-5.py', + line=5, + class_name=None, + test_name='test 5', + result='failure', + message='message', + content='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓\n ', + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-6.py', + line=6, + class_name=None, + test_name='test 6', + result='error', + message='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓', + content='error\n ', + time=1.23 + ), + publish.unittestresults.UnitTestCase( + result_file='unsupported-unicode.xml', + test_file='test/test-7.py', + line=7, + class_name=None, + test_name='test 7', + result='error', + message='message', + content='Some unsupported unicode characters: 헴䜝헱홐㣇㿷䔭𒍺𡓿𠄉㦓\n ', + time=1.23 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/unsupported-unicode.xml b/python/test/files/junit-xml/unsupported-unicode.xml index 357ec5ad..cec4e5a3 100644 --- a/python/test/files/junit-xml/unsupported-unicode.xml +++ b/python/test/files/junit-xml/unsupported-unicode.xml @@ -19,7 +19,7 @@ - error + error diff --git a/python/test/files/junit-xml/with-xml-entities.junit-xml b/python/test/files/junit-xml/with-xml-entities.junit-xml new file mode 100644 index 00000000..0a38ad93 --- /dev/null +++ b/python/test/files/junit-xml/with-xml-entities.junit-xml @@ -0,0 +1,17 @@ + + + + + Content with "quotes" + + + Content with 'apostrophes' + + + Content with & + + + Content with < and > + + + diff --git a/python/test/files/junit-xml/with-xml-entities.results b/python/test/files/junit-xml/with-xml-entities.results new file mode 100644 index 00000000..c2a0953a --- /dev/null +++ b/python/test/files/junit-xml/with-xml-entities.results @@ -0,0 +1,56 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=2, + suite_failures=1, + suite_errors=1, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='with-xml-entities.xml', + test_file=None, + line=None, + class_name=None, + test_name='Test with "quotes" in the test name', + result='skipped', + message='A message with "quotes"', + content='Content with "quotes"', + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='with-xml-entities.xml', + test_file=None, + line=None, + class_name=None, + test_name="Test with 'apostrophe' in the test name", + result='failure', + message="A message with 'apostrophes'", + content="Content with 'apostrophes'", + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='with-xml-entities.xml', + test_file=None, + line=None, + class_name=None, + test_name='Test with & in the test name', + result='error', + message='A message with &', + content='Content with &', + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='with-xml-entities.xml', + test_file=None, + line=None, + class_name=None, + test_name='Test with < and > in the test name', + result='skipped', + message='A message with < and >', + content='Content with < and >', + time=0.0 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/junit-xml/xunit/xunit.junit-xml b/python/test/files/junit-xml/xunit/xunit.junit-xml new file mode 100644 index 00000000..4cbcee23 --- /dev/null +++ b/python/test/files/junit-xml/xunit/xunit.junit-xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/python/test/files/junit-xml/xunit/xunit.results b/python/test/files/junit-xml/xunit/xunit.results new file mode 100644 index 00000000..07fafa68 --- /dev/null +++ b/python/test/files/junit-xml/xunit/xunit.results @@ -0,0 +1,34 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=2, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='xunit/xunit.xml', + test_file=None, + line=None, + class_name=None, + test_name='mytestapp.Tests.AttriubteTests.SetTestNoFeature', + result='success', + message=None, + content=None, + time=0.4540354 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xunit.xml', + test_file=None, + line=None, + class_name=None, + test_name='mytestapp.Tests.AttriubteTests.GetTestNoFeature', + result='success', + message=None, + content=None, + time=0.0039778 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/mstest/pickles.junit-xml b/python/test/files/trx/mstest/pickles.junit-xml new file mode 100644 index 00000000..dc0a7319 --- /dev/null +++ b/python/test/files/trx/mstest/pickles.junit-xml @@ -0,0 +1,30 @@ + + + + + + + + + MESSAGE: + + Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception: + Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure + + +++++++++++++++++++ + STACK TRACE: + + at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Steps.cs:line 28 + at lambda_method(Closure , IContextManager , Int32 ) + at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Addition.feature.cs:line 0 + at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Addition.feature:line 18 + + + + diff --git a/python/test/files/trx/mstest/pickles.results b/python/test/files/trx/mstest/pickles.results new file mode 100644 index 00000000..5c280f89 --- /dev/null +++ b/python/test/files/trx/mstest/pickles.results @@ -0,0 +1,86 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=4, + suite_skipped=0, + suite_failures=1, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='mstest/pickles.trx', + test_file=None, + line=None, + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + test_name='AddingSeveralNumbers_40', + result='success', + message=None, + content=None, + time=0.076891 + ), + publish.unittestresults.UnitTestCase( + result_file='mstest/pickles.trx', + test_file=None, + line=None, + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + test_name='AddingSeveralNumbers_60', + result='success', + message=None, + content=None, + time=0.0111534 + ), + publish.unittestresults.UnitTestCase( + result_file='mstest/pickles.trx', + test_file=None, + line=None, + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + test_name='AddTwoNumbers', + result='success', + message=None, + content=None, + time=0.0055623 + ), + publish.unittestresults.UnitTestCase( + result_file='mstest/pickles.trx', + test_file=None, + line=None, + class_name='Pickles.TestHarness.MSTest.AdditionFeature', + test_name='FailToAddTwoNumbers', + result='failure', + message=None, + content='\n MESSAGE:\n \n ' + 'Test method ' + 'Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw ' + 'exception:\n Should.Core.Exceptions.NotEqualException: ' + 'Assert.NotEqual() Failure\n \n ' + '+++++++++++++++++++\n STACK TRACE:\n ' + ' \n at ' + 'Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 ' + 'result) in ' + 'C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarnes' + 's.MSTest\\Steps.cs:line 28\n at lambda_method(Closure , ' + 'IContextManager , Int32 )\n at ' + 'TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager' + ' contextManager, Object[] arguments, ITestTracer testTracer, ' + 'TimeSpan& duration)\n at ' + 'TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManag' + 'er contextManager, ITestTracer testTracer, Object[] arguments, ' + 'TimeSpan& duration)\n at ' + 'TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch' + '(BindingMatch match, Object[] arguments)\n at ' + 'TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(Step' + 'Args stepArgs)\n at ' + 'TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep(' + ')\n at ' + 'TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()\n at ' + 'Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in ' + 'C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarnes' + 's.MSTest\\Addition.feature.cs:line 0\n at ' + 'Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in ' + 'c:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarnes' + 's.MSTest\\Addition.feature:line 18\n ', + time=0.0459057 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/update_expectations.sh b/python/test/files/update_expectations.sh new file mode 100755 index 00000000..1af705b0 --- /dev/null +++ b/python/test/files/update_expectations.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +base=$(dirname "$0") + +python $base/../test_junit.py +python $base/../test_trx.py + diff --git a/python/test/requirements.txt b/python/test/requirements.txt index 16111baa..e4db7ef0 100644 --- a/python/test/requirements.txt +++ b/python/test/requirements.txt @@ -1,6 +1,7 @@ flask mock +prettyprinter pytest pyyaml>=5.1 requests -urllib3<2.0.0 \ No newline at end of file +urllib3<2.0.0 diff --git a/python/test/test_junit.py b/python/test/test_junit.py index 682f024d..6eb2ba9e 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -1,18 +1,23 @@ import pathlib -import pathlib +import sys import unittest from distutils.version import LooseVersion from glob import glob from typing import Optional, Union, List -from xml.etree import ElementTree -from junitparser import JUnitXml, Element, version +import junitparser +import prettyprinter as pp +from junitparser import JUnitXml, Element +from lxml import etree + +sys.path.append(str(pathlib.Path(__file__).resolve().parent.parent)) from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, \ - get_message, Disabled -from publish.unittestresults import ParsedUnitTestResults, UnitTestCase, ParseError + get_message, Disabled, JUnitTree +from publish.unittestresults import ParsedUnitTestResults, UnitTestCase -test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' +test_files_path = pathlib.Path(__file__).resolve().parent / 'files' / 'junit-xml' +pp.install_extras() class TestElement(Element): @@ -34,57 +39,85 @@ class JUnitXmlParseTest: def test(self): raise NotImplementedError() + @staticmethod + def test_files_path(): + raise NotImplementedError() + @staticmethod def get_test_files() -> List[str]: raise NotImplementedError() @staticmethod - def parse_file(filename) -> Union[JUnitXml, BaseException]: + def parse_file(filename) -> Union[JUnitTree, BaseException]: raise NotImplementedError() - def do_test_parse_file(self, filename: str): + @staticmethod + def assert_expectation(test, actual, filename): + with open(filename, 'r', encoding='utf-8') as r: + expected = r.read() + test.assertEqual(expected, actual) + + @classmethod + def shorten_filename(cls, filename): + return filename[len(str(cls.test_files_path()))+1:] + + def do_test_parse_and_process_files(self, filename: str): actual = self.parse_file(filename) path = pathlib.Path(filename) if isinstance(actual, BaseException): - with open(path.parent / (path.stem + '.exception'), 'r', encoding='utf-8') as r: - expected = r.read() - self.test.assertEqual(expected, actual) + expectation_path = path.parent / (path.stem + '.exception') + actual = actual.__repr__() + self.assert_expectation(self.test, actual, expectation_path) else: - with open(path.parent / (path.stem + '.junit-xml'), 'r', encoding='utf-8') as r: - expected = r.read() - self.test.assertEqual(expected, ElementTree.tostring(actual._elem, encoding='unicode')) + xml_expectation_path = path.parent / (path.stem + '.junit-xml') + actual_tree = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True).decode('utf-8') + self.assert_expectation(self.test, actual_tree, xml_expectation_path) - def test_parse_junit_xml_files(self): + results_expectation_path = path.parent / (path.stem + '.results') + actual_results = process_junit_xml_elems([(self.shorten_filename(str(path.resolve())), actual)]) + self.assert_expectation(self.test, pp.pformat(actual_results, indent=2), results_expectation_path) + + def test_parse_and_process_files(self): for file in self.get_test_files(): - with self.test.subTest(file=file[len(str(test_files_path))+1:]): - self.do_test_parse_file(file) + with self.test.subTest(file=self.shorten_filename(file)): + self.do_test_parse_and_process_files(file) @classmethod def update_expectations(cls): print('updating expectations') for filename in cls.get_test_files(): + print(f'- updating {filename}') actual = cls.parse_file(filename) path = pathlib.Path(filename) if isinstance(actual, BaseException): with open(path.parent / (path.stem + '.exception'), 'w', encoding='utf-8') as w: - w.write(str(actual)) + w.write(actual.__repr__()) else: with open(path.parent / (path.stem + '.junit-xml'), 'w', encoding='utf-8') as w: - w.write(actual) + xml = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True) + w.write(xml.decode('utf-8')) + with open(path.parent / (path.stem + '.results'), 'w', encoding='utf-8') as w: + results = process_junit_xml_elems([(cls.shorten_filename(str(path.resolve())), actual)]) + w.write(pp.pformat(results, indent=2)) -class TestJunit(JUnitXmlParseTest, unittest.TestCase): +class TestJunit(unittest.TestCase, JUnitXmlParseTest): + maxDiff = None @property def test(self): return self + @staticmethod + def test_files_path(): + return test_files_path + @staticmethod def get_test_files() -> List[str]: return glob(str(test_files_path / '**' / '*.xml'), recursive=True) @staticmethod - def parse_file(filename): + def parse_file(filename) -> Union[JUnitTree, BaseException]: return list(parse_junit_xml_files([filename]))[0][1] def test_process_parse_junit_xml_files_with_no_files(self): @@ -102,467 +135,21 @@ def test_process_parse_junit_xml_files_with_no_files(self): cases=[] )) - def test_process_parse_junit_xml_files_with_spark_diff_file(self): - result_file = str(test_files_path / 'scalatest' / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - files=1, - errors=[], - suites=1, - suite_tests=5, - suite_skipped=0, - suite_failures=0, - suite_errors=0, - suite_time=2, - cases=[ - UnitTestCase( - class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', - result_file=result_file, - test_file=None, - line=None, - test_name='diff options with empty diff column name', - result='success', - content=None, - message=None, - time=0.259 - ), - UnitTestCase( - class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', - result_file=result_file, - test_name='diff options left and right prefixes', - test_file=None, - line=None, - result='success', - content=None, - message=None, - time=1.959 - ), - UnitTestCase( - class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', - result_file=result_file, - test_name='diff options diff value', - test_file=None, - line=None, - result='success', - content=None, - message=None, - time=0.002 - ), - UnitTestCase( - class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', - result_file=result_file, - test_name='diff options with change column name same as diff column', - test_file=None, - line=None, - result='success', - content=None, - message=None, - time=0.002 - ), - UnitTestCase( - class_name='uk.co.gresearch.spark.diff.DiffOptionsSuite', - result_file=result_file, - test_name='fluent methods of diff options', - test_file=None, - line=None, - result='success', - content=None, - message=None, - time=0.001 - ) - ] - )) - - def test_process_parse_junit_xml_files_with_horovod_file(self): - result_file = str(test_files_path / 'pytest' / 'junit.mpi.integration.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - files=1, - errors=[], - suites=1, - suite_tests=3, - suite_skipped=0, - suite_failures=0, - suite_errors=0, - suite_time=15, - cases=[ - UnitTestCase( - result_file=result_file, - class_name='test.test_interactiverun.InteractiveRunTests', - test_name='test_failed_run', - test_file='test/test_interactiverun.py', - line=78, - result='success', - content=None, - message=None, - time=9.386 - ), - UnitTestCase( - result_file=result_file, - class_name='test.test_interactiverun.InteractiveRunTests', - test_name='test_happy_run', - test_file='test/test_interactiverun.py', - line=35, - result='success', - content=None, - message=None, - time=4.012 - ), - UnitTestCase( - result_file=result_file, - class_name='test.test_interactiverun.InteractiveRunTests', - test_name='test_happy_run_elastic', - test_file='test/test_interactiverun.py', - line=63, - result='success', - content=None, - message=None, - time=1.898 - ) - ] - )) - - def test_process_parse_junit_xml_files_with_spark_extension_file(self): - result_file = str(test_files_path / 'pytest' / 'junit.fail.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - files=1, - errors=[], - suite_errors=0, - suite_failures=1, - suite_skipped=1, - suite_tests=5, - suite_time=2, - suites=1, - cases=[ - UnitTestCase( - class_name='test.test_spark.SparkTests', - content=None, - result_file=result_file, - test_file='test/test_spark.py', - line=1412, - message=None, - result='success', - test_name='test_check_shape_compatibility', - time=6.435 - ), - UnitTestCase( - class_name='test.test_spark.SparkTests', - content='/horovod/test/test_spark.py:1642: get_available_devices only\n' - ' supported in Spark 3.0 and above\n' - ' ', - result_file=result_file, - test_file='test/test_spark.py', - line=1641, - message='get_available_devices only supported in Spark 3.0 and above', - result='skipped', - test_name='test_get_available_devices', - time=0.001 - ), - UnitTestCase( - class_name='test.test_spark.SparkTests', - content=None, - result_file=result_file, - test_file='test/test_spark.py', - line=1102, - message=None, - result='success', - test_name='test_get_col_info', - time=6.417 - ), - UnitTestCase( - class_name='test.test_spark.SparkTests', - content='self = \n' - '\n' - ' def test_rsh_events(self):\n' - ' > self.do_test_rsh_events(3)\n' - '\n' - ' test_spark.py:821:\n' - ' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n' - ' test_spark.py:836: in do_test_rsh_events\n' - ' self.do_test_rsh(command, 143, events=events)\n' - ' test_spark.py:852: in do_test_rsh\n' - ' self.assertEqual(expected_result, res)\n' - ' E AssertionError: 143 != 0\n' - ' ', - result_file=result_file, - test_file='test/test_spark.py', - line=819, - message='self = ' - '' - ' def test_rsh_events(self): ' - '> self.do_test_rsh_events(3) ' - ' ' - 'test_spark.py:821: ' - ' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' - 'test_spark.py:836: in do_test_rsh_events ' - ' self.do_test_rsh(command, 143, events=events) ' - 'test_spark.py:852: in do_test_rsh ' - ' self.assertEqual(expected_result, res) ' - 'E AssertionError: 143 != 0', - result='failure', - test_name='test_rsh_events', - time=7.541 - ), - UnitTestCase( - class_name='test.test_spark.SparkTests', - content=None, - result_file=result_file, - test_file='test/test_spark.py', - line=813, - message=None, - result='success', - test_name='test_rsh_with_non_zero_exit_code', - time=1.514 - ) - ] - )) - - def test_process_parse_junit_xml_files_with_minimal_attributes_file(self): - result_file = str(test_files_path / 'minimal-attributes.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - cases=[ - UnitTestCase( - class_name='ClassName', - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='success', - test_name='test_name', - time=None - ), - UnitTestCase( - class_name='ClassName', - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='skipped', - test_name='skipped_test', - time=None - ), - UnitTestCase( - class_name='ClassName', - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='failure', - test_name='failed_test', - time=None - ), - UnitTestCase( - class_name='ClassName', - content=None, - result_file=result_file, - test_file=None, - line=None, - message=None, - result='error', - test_name='error_test', - time=None - ) - ], - files=1, - errors=[], - suite_errors=1, - suite_failures=1, - suite_skipped=1, - suite_tests=4, - suite_time=0, - suites=1 - )) - - def test_process_parse_junit_xml_files_with_no_attributes_file(self): - result_file = str(test_files_path / 'no-attributes.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - cases=[], - files=1, - errors=[], - suite_errors=1, - suite_failures=1, - suite_skipped=1, - suite_tests=4, - suite_time=0, - suites=1 - )) - - def test_process_parse_junit_xml_files_with_empty_file(self): - result_file = str(test_files_path / 'empty.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - cases=[], - files=1, - errors=[ParseError(result_file, 'File is empty.')], - suite_errors=0, - suite_failures=0, - suite_skipped=0, - suite_tests=0, - suite_time=0, - suites=0 - )) - - def test_process_parse_junit_xml_files_with_non_xml_file(self): - result_file = test_files_path / 'non-xml.xml' - result_filename = str(result_file) - expected_filename = ('file:/' + result_file.absolute().as_posix()) if result_file.drive else result_file.name - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_filename])), - ParsedUnitTestResults( - files=1, - errors=[ParseError(file=result_filename, message=f"Start tag expected, '<' not found, line 1, column 1 ({expected_filename}, line 1)")], - suites=0, - suite_tests=0, - suite_skipped=0, - suite_failures=0, - suite_errors=0, - suite_time=0, - cases=[] - )) - - def test_process_parse_junit_xml_files_with_corrupt_xml_file(self): - result_file = test_files_path / 'pytest' / 'corrupt-xml.xml' - result_filename = str(result_file) - expected_filename = ('file:/' + result_file.absolute().as_posix()) if result_file.drive else result_file.name - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_filename])), - ParsedUnitTestResults( - files=1, - errors=[ParseError(file=result_filename, message=f'Premature end of data in tag skipped line 9, line 11, column 22 ({expected_filename}, line 11)')], - suites=0, - suite_tests=0, - suite_skipped=0, - suite_failures=0, - suite_errors=0, - suite_time=0, - cases=[] - )) - - def test_process_parse_junit_xml_files_with_non_junit_file(self): - result_file = str(test_files_path / 'pytest' / 'small.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - files=1, - errors=[ParseError(file=result_file, message='Invalid format.')], - suites=0, - suite_tests=0, - suite_skipped=0, - suite_failures=0, - suite_errors=0, - suite_time=0, - cases=[] - )) - - def test_process_parse_junit_xml_files_with_non_existing_file(self): - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files(['files/does_not_exist.xml'])), - ParsedUnitTestResults( - cases=[], - files=1, - errors=[ParseError('files/does_not_exist.xml', 'File does not exist.')], - suite_errors=0, - suite_failures=0, - suite_skipped=0, - suite_tests=0, - suite_time=0, - suites=0 - )) - # tests https://github.com/weiwei/junitparser/issues/64 def test_junitparser_locale(self): junit = JUnitXml.fromfile(str(test_files_path / 'pytest' / 'junit.spark.integration.1.xml')) self.assertAlmostEqual(162.933, junit.time, 3) - @unittest.skipIf(LooseVersion(version) < LooseVersion('2.0.0'), + @unittest.skipIf(LooseVersion(junitparser.version) < LooseVersion('2.0.0'), 'multiple results per test case not supported by junitparser') def test_parse_junit_xml_file_with_multiple_results(self): - junit = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'pytest' / 'junit.multiresult.xml')])) + junit = process_junit_xml_elems(parse_junit_xml_files([str(test_files_path / 'junit.multiresult.xml')])) self.assertEqual(4, len(junit.cases)) self.assertEqual("error", junit.cases[0].result) self.assertEqual("failure", junit.cases[1].result) self.assertEqual("skipped", junit.cases[2].result) self.assertEqual("success", junit.cases[3].result) - def test_process_parse_junit_xml_file_with_disabled_tests(self): - result_file = str(test_files_path / 'tst' / 'disabled.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - cases=[UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result[0]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:72: error: check_eq(3628800, 3628801)', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture[3]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture[2]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='disabled_test', result='disabled', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:45: error: check_ne(6, 6)hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='test_which_throws_unknown_exception', result='error', message='uncaught (anonymous namespace)::some_unknown_exception', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result[2]', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:85: error: check(false)', content=None, time=0.001), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result[3]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture[0]', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:109: error: expected 2', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='disabled_param_test[0]', result='disabled', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='disabled_param_test[1]', result='disabled', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='disabled_param_test[2]', result='disabled', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='test_which_fails_check_eq_with_custom_message', result='failure', message='/home/ivan/prj/tst/tests/failed/main.cpp:62: error: check_eq(6, 7)hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='disabled_param_test[3]', result='disabled', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='positive_arguments_must_produce_expected_result[1]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='factorial_of_value_from_fixture[1]', result='success', message=None, content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_ge_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:59: error: check_ge(2, 3)failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_ge', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:55: error: check_ge(2, 3)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_gt_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:43: error: check_gt(2, 2)failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_lt_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:35: error: check_lt(2, 2)failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:11: error: failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_gt', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:39: error: check_gt(2, 2)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:7: error: Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_le_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:51: error: check_le(2, 1)failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_eq', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:15: error: check_eq(1, 2)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_eq_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:19: error: check_eq(1, 2)failed!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_le', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:47: error: check_le(2, 1)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_ne', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:23: error: check_ne(2, 2)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_lt', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:31: error: check_lt(2, 2)Hello world!', content=None, time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='check_ne_print', result='failure', message='/home/ivan/prj/tst/tests/failed/checks.cpp:27: error: check_ne(2, 2)failed!', content=None, time=0.001)], - files=1, - errors=[], - suite_errors=1, - suite_failures=19, - suite_skipped=5, - suite_tests=31, - suite_time=0, - suites=2 - )) - - def test_process_parse_junit_xml_files_xml_entities_in_test_names(self): - result_file = str(test_files_path / 'with-xml-entities.xml') - self.assertEqual( - process_junit_xml_elems(parse_junit_xml_files([result_file])), - ParsedUnitTestResults( - files=1, - errors=[], - suites=1, - suite_tests=4, - suite_skipped=2, - suite_failures=1, - suite_errors=1, - suite_time=0, - cases=[ - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='Test with "quotes" in the test name', result='skipped', message='A message with "quotes"', content='Content with "quotes"', time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name="Test with 'apostrophe' in the test name", result='failure', message='A message with \'apostrophes\'', content='Content with \'apostrophes\'', time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='Test with & in the test name', result='error', message='A message with &', content='Content with &', time=0.0), - UnitTestCase(result_file=result_file, test_file=None, line=None, class_name=None, test_name='Test with < and > in the test name', result='skipped', message='A message with < and >', content='Content with < and >', time=0.0) - ] - )) - def test_process_parse_junit_xml_files_with_time_factor(self): result_file = str(test_files_path / 'scalatest' / 'TEST-uk.co.gresearch.spark.diff.DiffOptionsSuite.xml') for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: diff --git a/python/test/test_trx.py b/python/test/test_trx.py index 4b351a23..99b36a30 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -1,15 +1,39 @@ import pathlib +import sys import unittest +from glob import glob +from typing import List, Union from lxml import etree -from publish.junit import process_junit_xml_elems, ParsedUnitTestResults, UnitTestCase +sys.path.append(str(pathlib.Path(__file__).resolve().parent.parent)) +sys.path.append(str(pathlib.Path(__file__).resolve().parent)) + +from publish.junit import process_junit_xml_elems, ParsedUnitTestResults, UnitTestCase, JUnitTree from publish.trx import parse_trx_files, transform_trx_to_junit +from test_junit import JUnitXmlParseTest + +test_files_path = pathlib.Path(__file__).resolve().parent / 'files' / 'trx' + + +class TestTrx(unittest.TestCase, JUnitXmlParseTest): + maxDiff = None -test_files_path = pathlib.Path(__file__).parent / 'files' / 'trx' + @property + def test(self): + return self + @staticmethod + def test_files_path(): + return test_files_path -class TestTrx(unittest.TestCase): + @staticmethod + def get_test_files() -> List[str]: + return glob(str(test_files_path / '**' / '*.trx'), recursive=True) + + @staticmethod + def parse_file(filename) -> Union[JUnitTree, BaseException]: + return list(parse_trx_files([filename]))[0][1] def test_transform(self): result_file = str(test_files_path / 'mstest' / 'pickles.trx') @@ -131,3 +155,7 @@ def test_process_parse_trx_files_with_time_factor(self): ) ] )) + + +if __name__ == "__main__": + TestTrx.update_expectations() From 9c533d7c5d50412927d4ed390a54853fe7eb661a Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 21:54:08 +0200 Subject: [PATCH 12/32] Add missing results file --- python/test/files/junit-xml/non-junit.results | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 python/test/files/junit-xml/non-junit.results diff --git a/python/test/files/junit-xml/non-junit.results b/python/test/files/junit-xml/non-junit.results new file mode 100644 index 00000000..306fec7d --- /dev/null +++ b/python/test/files/junit-xml/non-junit.results @@ -0,0 +1,16 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[ + publish.unittestresults.ParseError( + file='non-junit.xml', + message='Invalid format.' + ) + ], + suites=0, + suite_tests=0, + suite_skipped=0, + suite_failures=0, + suite_errors=0, + suite_time=0, + cases=[] +) \ No newline at end of file From c43424a190179aca9998b2441e95d16cf6ef9c52 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 22:02:42 +0200 Subject: [PATCH 13/32] Fix automated example file tests on Windows --- python/test/test_junit.py | 12 ++++++------ python/test/test_trx.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/python/test/test_junit.py b/python/test/test_junit.py index 6eb2ba9e..ca639bb0 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -16,7 +16,7 @@ get_message, Disabled, JUnitTree from publish.unittestresults import ParsedUnitTestResults, UnitTestCase -test_files_path = pathlib.Path(__file__).resolve().parent / 'files' / 'junit-xml' +test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' pp.install_extras() @@ -40,7 +40,7 @@ def test(self): raise NotImplementedError() @staticmethod - def test_files_path(): + def test_files_path() -> pathlib.Path: raise NotImplementedError() @staticmethod @@ -59,7 +59,7 @@ def assert_expectation(test, actual, filename): @classmethod def shorten_filename(cls, filename): - return filename[len(str(cls.test_files_path()))+1:] + return filename[len(str(cls.test_files_path().resolve().as_posix()))+1:] def do_test_parse_and_process_files(self, filename: str): actual = self.parse_file(filename) @@ -74,7 +74,7 @@ def do_test_parse_and_process_files(self, filename: str): self.assert_expectation(self.test, actual_tree, xml_expectation_path) results_expectation_path = path.parent / (path.stem + '.results') - actual_results = process_junit_xml_elems([(self.shorten_filename(str(path.resolve())), actual)]) + actual_results = process_junit_xml_elems([(self.shorten_filename(str(path.resolve().as_posix())), actual)]) self.assert_expectation(self.test, pp.pformat(actual_results, indent=2), results_expectation_path) def test_parse_and_process_files(self): @@ -97,7 +97,7 @@ def update_expectations(cls): xml = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True) w.write(xml.decode('utf-8')) with open(path.parent / (path.stem + '.results'), 'w', encoding='utf-8') as w: - results = process_junit_xml_elems([(cls.shorten_filename(str(path.resolve())), actual)]) + results = process_junit_xml_elems([(cls.shorten_filename(str(path.resolve().as_posix())), actual)]) w.write(pp.pformat(results, indent=2)) @@ -109,7 +109,7 @@ def test(self): return self @staticmethod - def test_files_path(): + def test_files_path() -> pathlib.Path: return test_files_path @staticmethod diff --git a/python/test/test_trx.py b/python/test/test_trx.py index 99b36a30..919bcefc 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -13,7 +13,7 @@ from publish.trx import parse_trx_files, transform_trx_to_junit from test_junit import JUnitXmlParseTest -test_files_path = pathlib.Path(__file__).resolve().parent / 'files' / 'trx' +test_files_path = pathlib.Path(__file__).parent / 'files' / 'trx' class TestTrx(unittest.TestCase, JUnitXmlParseTest): @@ -24,7 +24,7 @@ def test(self): return self @staticmethod - def test_files_path(): + def test_files_path() -> pathlib.Path: return test_files_path @staticmethod From 6c978a9edc9ccc5ba5b2e1590f6650565fd946a9 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 23:49:11 +0200 Subject: [PATCH 14/32] Make exception string work for 3.6 --- python/test/files/junit-xml/empty.exception | 2 +- python/test/files/junit-xml/non-xml.exception | 2 +- .../files/junit-xml/pytest/corrupt-xml.exception | 2 +- python/test/test_junit.py | 12 ++++++++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/python/test/files/junit-xml/empty.exception b/python/test/files/junit-xml/empty.exception index 3b371865..8d536046 100644 --- a/python/test/files/junit-xml/empty.exception +++ b/python/test/files/junit-xml/empty.exception @@ -1 +1 @@ -Exception('File is empty.') \ No newline at end of file +Exception: 'File is empty.' \ No newline at end of file diff --git a/python/test/files/junit-xml/non-xml.exception b/python/test/files/junit-xml/non-xml.exception index fb28099e..91e92f96 100644 --- a/python/test/files/junit-xml/non-xml.exception +++ b/python/test/files/junit-xml/non-xml.exception @@ -1 +1 @@ -XMLSyntaxError("Start tag expected, '<' not found, line 1, column 1") \ No newline at end of file +XMLSyntaxError: "Start tag expected, '<' not found, line 1, column 1" \ No newline at end of file diff --git a/python/test/files/junit-xml/pytest/corrupt-xml.exception b/python/test/files/junit-xml/pytest/corrupt-xml.exception index cc45182b..89646644 100644 --- a/python/test/files/junit-xml/pytest/corrupt-xml.exception +++ b/python/test/files/junit-xml/pytest/corrupt-xml.exception @@ -1 +1 @@ -XMLSyntaxError('Premature end of data in tag skipped line 9, line 11, column 22') \ No newline at end of file +XMLSyntaxError: 'Premature end of data in tag skipped line 9, line 11, column 22' \ No newline at end of file diff --git a/python/test/test_junit.py b/python/test/test_junit.py index ca639bb0..755e2e15 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -1,4 +1,5 @@ import pathlib +import re import sys import unittest from distutils.version import LooseVersion @@ -66,7 +67,7 @@ def do_test_parse_and_process_files(self, filename: str): path = pathlib.Path(filename) if isinstance(actual, BaseException): expectation_path = path.parent / (path.stem + '.exception') - actual = actual.__repr__() + actual = self.prettify_exception(actual) self.assert_expectation(self.test, actual, expectation_path) else: xml_expectation_path = path.parent / (path.stem + '.junit-xml') @@ -91,7 +92,7 @@ def update_expectations(cls): path = pathlib.Path(filename) if isinstance(actual, BaseException): with open(path.parent / (path.stem + '.exception'), 'w', encoding='utf-8') as w: - w.write(actual.__repr__()) + w.write(cls.prettify_exception(actual)) else: with open(path.parent / (path.stem + '.junit-xml'), 'w', encoding='utf-8') as w: xml = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True) @@ -100,6 +101,13 @@ def update_expectations(cls): results = process_junit_xml_elems([(cls.shorten_filename(str(path.resolve().as_posix())), actual)]) w.write(pp.pformat(results, indent=2)) + @staticmethod + def prettify_exception(exception) -> str: + exception = exception.__repr__() + exception = re.sub(r'\(', ': ', exception, 1) + exception = re.sub(r',?\s*\)$', '', exception) + return exception + class TestJunit(unittest.TestCase, JUnitXmlParseTest): maxDiff = None From 72f702dfae59370ffc51d348ab7ee99e7aebfd9e Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Fri, 27 May 2022 11:26:38 +0200 Subject: [PATCH 15/32] Test parse and process example files with locales --- python/test/test_action_script.py | 2 +- python/test/test_junit.py | 33 ++++++++++++--------- python/test/test_publish.py | 33 +-------------------- python/test/test_unittestresults.py | 2 +- python/test/{__init__.py => test_utils.py} | 34 ++++++++++++++++++++++ 5 files changed, 56 insertions(+), 48 deletions(-) rename python/test/{__init__.py => test_utils.py} (56%) diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index fc53e5db..8c5aa43c 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -15,7 +15,7 @@ from publish.unittestresults import ParsedUnitTestResults, ParseError from publish_unit_test_results import get_conclusion, get_commit_sha, get_var, \ get_settings, get_annotations_config, Settings, get_files, throttle_gh_request_raw, is_float, parse_files, main -from test import chdir +from test_utils import chdir test_files_path = pathlib.Path(__file__).parent / 'files' diff --git a/python/test/test_junit.py b/python/test/test_junit.py index 755e2e15..93f40c37 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -12,10 +12,12 @@ from lxml import etree sys.path.append(str(pathlib.Path(__file__).resolve().parent.parent)) +sys.path.append(str(pathlib.Path(__file__).resolve().parent)) from publish.junit import parse_junit_xml_files, process_junit_xml_elems, get_results, get_result, get_content, \ get_message, Disabled, JUnitTree from publish.unittestresults import ParsedUnitTestResults, UnitTestCase +from test_utils import temp_locale test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' pp.install_extras() @@ -63,20 +65,23 @@ def shorten_filename(cls, filename): return filename[len(str(cls.test_files_path().resolve().as_posix()))+1:] def do_test_parse_and_process_files(self, filename: str): - actual = self.parse_file(filename) - path = pathlib.Path(filename) - if isinstance(actual, BaseException): - expectation_path = path.parent / (path.stem + '.exception') - actual = self.prettify_exception(actual) - self.assert_expectation(self.test, actual, expectation_path) - else: - xml_expectation_path = path.parent / (path.stem + '.junit-xml') - actual_tree = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True).decode('utf-8') - self.assert_expectation(self.test, actual_tree, xml_expectation_path) - - results_expectation_path = path.parent / (path.stem + '.results') - actual_results = process_junit_xml_elems([(self.shorten_filename(str(path.resolve().as_posix())), actual)]) - self.assert_expectation(self.test, pp.pformat(actual_results, indent=2), results_expectation_path) + for locale in [None, 'en_US.UTF-8', 'de_DE.UTF-8']: + with self.test.subTest(locale=locale): + with temp_locale(locale): + actual = self.parse_file(filename) + path = pathlib.Path(filename) + if isinstance(actual, BaseException): + expectation_path = path.parent / (path.stem + '.exception') + actual = self.prettify_exception(actual) + self.assert_expectation(self.test, actual, expectation_path) + else: + xml_expectation_path = path.parent / (path.stem + '.junit-xml') + actual_tree = etree.tostring(actual, encoding='utf-8', xml_declaration=True, pretty_print=True).decode('utf-8') + self.assert_expectation(self.test, actual_tree, xml_expectation_path) + + results_expectation_path = path.parent / (path.stem + '.results') + actual_results = process_junit_xml_elems([(self.shorten_filename(str(path.resolve().as_posix())), actual)]) + self.assert_expectation(self.test, pp.pformat(actual_results, indent=2), results_expectation_path) def test_parse_and_process_files(self): for file in self.get_test_files(): diff --git a/python/test/test_publish.py b/python/test/test_publish.py index 58d12cf6..a481c9ae 100644 --- a/python/test/test_publish.py +++ b/python/test/test_publish.py @@ -1,5 +1,3 @@ -import contextlib -import locale import pathlib import unittest from collections import defaultdict @@ -21,40 +19,11 @@ from publish.junit import parse_junit_xml_files, process_junit_xml_elems from publish.unittestresults import get_stats, UnitTestCase, ParseError from publish.unittestresults import get_test_results -from test import d, n +from test_utils import temp_locale, d, n test_files_path = pathlib.Path(__file__).parent / 'files' / 'junit-xml' - -@contextlib.contextmanager -def temp_locale(encoding: str) -> Any: - old_locale = locale.getlocale() - encodings = [ - f'{encoding}.utf8', f'{encoding}.utf-8', - f'{encoding}.UTF8', f'{encoding}.UTF-8', - encoding - ] - - locale_set = False - for encoding in encodings: - try: - locale.setlocale(locale.LC_ALL, encoding) - locale_set = True - break - except: - pass - - if not locale_set: - raise ValueError(f'Could not set any of these locale: {", ".join(encodings)}') - - try: - res = yield - finally: - locale.setlocale(locale.LC_ALL, old_locale) - return res - - errors = [ParseError('file', 'error', 1, 2)] diff --git a/python/test/test_unittestresults.py b/python/test/test_unittestresults.py index 9737b7d0..c8301908 100644 --- a/python/test/test_unittestresults.py +++ b/python/test/test_unittestresults.py @@ -7,7 +7,7 @@ ParsedUnitTestResults, ParsedUnitTestResultsWithCommit, \ UnitTestCase, UnitTestResults, UnitTestCaseResults, \ UnitTestRunResults, UnitTestRunDeltaResults, ParseError -from test import d, n +from test_utils import d, n errors = [ParseError('file', 'error')] errors_dict = [dataclasses.asdict(e) for e in errors] diff --git a/python/test/__init__.py b/python/test/test_utils.py similarity index 56% rename from python/test/__init__.py rename to python/test/test_utils.py index 0fa428db..b6d29f02 100644 --- a/python/test/__init__.py +++ b/python/test/test_utils.py @@ -12,8 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +import locale import os from contextlib import contextmanager +from typing import Any, Optional def n(number, delta=None): @@ -28,6 +30,38 @@ def d(duration, delta=None): return dict(duration=duration, delta=delta) +@contextmanager +def temp_locale(encoding: Optional[str]) -> Any: + if encoding is None: + res = yield + return res + + old_locale = locale.setlocale(locale.LC_ALL) + encodings = [ + f'{encoding}.utf8', f'{encoding}.utf-8', + f'{encoding}.UTF8', f'{encoding}.UTF-8', + encoding + ] + + locale_set = False + for encoding in encodings: + try: + locale.setlocale(locale.LC_ALL, encoding) + locale_set = True + break + except: + pass + + if not locale_set: + raise ValueError(f'Could not set any of these locale: {", ".join(encodings)}') + + try: + res = yield + finally: + locale.setlocale(locale.LC_ALL, old_locale) + return res + + @contextmanager def chdir(path: str): cwd = os.getcwd() From 222062692928c1e8cdc97a4e4d7333a6671477a6 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Fri, 27 May 2022 11:55:06 +0200 Subject: [PATCH 16/32] Fixing duration number format in trx xslt --- python/publish/xslt/trx-to-junit.xslt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 7fdc0917..a2871863 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -24,13 +24,13 @@ - + - + @@ -87,13 +87,13 @@ - + - + From 5a04a322599e79a9ff35f7176370142579af9626 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Fri, 27 May 2022 12:13:18 +0200 Subject: [PATCH 17/32] Remove MESSAGE and STACK TRACE from xslt --- python/publish/xslt/trx-to-junit.xslt | 15 +-------------- python/test/files/trx/mstest/pickles.junit-xml | 5 ----- python/test/files/trx/mstest/pickles.results | 7 ++----- 3 files changed, 3 insertions(+), 24 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index a2871863..a987ea22 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -56,19 +56,13 @@ - MESSAGE: - +++++++++++++++++++ - STACK TRACE: - MESSAGE: - +++++++++++++++++++ - STACK TRACE: @@ -115,24 +109,17 @@ + time="{$totalduration}"> - MESSAGE: - +++++++++++++++++++ - STACK TRACE: - MESSAGE: - +++++++++++++++++++ - STACK TRACE: diff --git a/python/test/files/trx/mstest/pickles.junit-xml b/python/test/files/trx/mstest/pickles.junit-xml index dc0a7319..9c131dee 100644 --- a/python/test/files/trx/mstest/pickles.junit-xml +++ b/python/test/files/trx/mstest/pickles.junit-xml @@ -6,14 +6,9 @@ - MESSAGE: - Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception: Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure - +++++++++++++++++++ - STACK TRACE: - at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Steps.cs:line 28 at lambda_method(Closure , IContextManager , Int32 ) at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) diff --git a/python/test/files/trx/mstest/pickles.results b/python/test/files/trx/mstest/pickles.results index 5c280f89..e8ed968d 100644 --- a/python/test/files/trx/mstest/pickles.results +++ b/python/test/files/trx/mstest/pickles.results @@ -49,13 +49,10 @@ publish.unittestresults.ParsedUnitTestResults( test_name='FailToAddTwoNumbers', result='failure', message=None, - content='\n MESSAGE:\n \n ' - 'Test method ' + content='\n Test method ' 'Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw ' 'exception:\n Should.Core.Exceptions.NotEqualException: ' - 'Assert.NotEqual() Failure\n \n ' - '+++++++++++++++++++\n STACK TRACE:\n ' - ' \n at ' + 'Assert.NotEqual() Failure\n \n at ' 'Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 ' 'result) in ' 'C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarnes' From 519a09ad19e5c772b7e9a3f594c6299458fdf86d Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Fri, 27 May 2022 12:34:23 +0200 Subject: [PATCH 18/32] Use failure template in trx-to-junit.xslt --- python/publish/xslt/trx-to-junit.xslt | 38 ++++-- .../test/files/trx/mstest/pickles.junit-xml | 4 +- python/test/files/trx/mstest/pickles.results | 7 +- python/test/files/trx/mstest/pickles.trx | 2 +- python/test/test_trx.py | 121 ------------------ 5 files changed, 34 insertions(+), 138 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index a987ea22..3dc1c750 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -56,14 +56,18 @@ - - + + + + - - + + + + @@ -107,20 +111,21 @@ - - + - - + + + + - - + + + + @@ -131,4 +136,13 @@ + + + + + + + + + diff --git a/python/test/files/trx/mstest/pickles.junit-xml b/python/test/files/trx/mstest/pickles.junit-xml index 9c131dee..7235abdf 100644 --- a/python/test/files/trx/mstest/pickles.junit-xml +++ b/python/test/files/trx/mstest/pickles.junit-xml @@ -5,12 +5,12 @@ - + Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception: Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Steps.cs:line 28 - at lambda_method(Closure , IContextManager , Int32 ) + at lambda_method(Closure , IContextManager , Int32 )<...> at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration) at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) diff --git a/python/test/files/trx/mstest/pickles.results b/python/test/files/trx/mstest/pickles.results index e8ed968d..5d43dc07 100644 --- a/python/test/files/trx/mstest/pickles.results +++ b/python/test/files/trx/mstest/pickles.results @@ -48,7 +48,10 @@ publish.unittestresults.ParsedUnitTestResults( class_name='Pickles.TestHarness.MSTest.AdditionFeature', test_name='FailToAddTwoNumbers', result='failure', - message=None, + message='\n Test method ' + 'Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw ' + 'exception:\n Should.Core.Exceptions.NotEqualException: ' + 'Assert.NotEqual() Failure\n ', content='\n Test method ' 'Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw ' 'exception:\n Should.Core.Exceptions.NotEqualException: ' @@ -57,7 +60,7 @@ publish.unittestresults.ParsedUnitTestResults( 'result) in ' 'C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarnes' 's.MSTest\\Steps.cs:line 28\n at lambda_method(Closure , ' - 'IContextManager , Int32 )\n at ' + 'IContextManager , Int32 )<...>\n at ' 'TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager' ' contextManager, Object[] arguments, ITestTracer testTracer, ' 'TimeSpan& duration)\n at ' diff --git a/python/test/files/trx/mstest/pickles.trx b/python/test/files/trx/mstest/pickles.trx index f9974d25..b0fa72c4 100644 --- a/python/test/files/trx/mstest/pickles.trx +++ b/python/test/files/trx/mstest/pickles.trx @@ -163,7 +163,7 @@ at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\dev\pickles-results-harness\Pickles.TestHarness\Pickles.TestHarness.MSTest\Steps.cs:line 28 - at lambda_method(Closure , IContextManager , Int32 ) + at lambda_method(Closure , IContextManager , Int32 )<...> at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration) at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) diff --git a/python/test/test_trx.py b/python/test/test_trx.py index 919bcefc..7dabb93c 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -35,127 +35,6 @@ def get_test_files() -> List[str]: def parse_file(filename) -> Union[JUnitTree, BaseException]: return list(parse_trx_files([filename]))[0][1] - def test_transform(self): - result_file = str(test_files_path / 'mstest' / 'pickles.trx') - trx = etree.parse(str(result_file)) - junit = transform_trx_to_junit(trx) - - self.assertEqual( - str(junit), - '\n' - '\n' - ' \n' - ' \n' - ' \n' - ' \n' - ' \n' - ' \n' - ' MESSAGE:\n' - ' \n' - ' Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception:\n' - ' Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure\n' - ' \n' - ' +++++++++++++++++++\n' - ' STACK TRACE:\n' - ' \n' - ' at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Steps.cs:line 28\n' - ' at lambda_method(Closure , IContextManager , Int32 )\n' - ' at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)\n' - ' at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()\n' - ' at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()\n' - ' at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature.cs:line 0\n' - ' at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature:line 18\n' - ' \n' - ' \n' - ' \n' - '\n' - ) - - def test_process_parse_trx_files_with_time_factor(self): - result_file = str(test_files_path / 'mstest' / 'pickles.trx') - for time_factor in [1.0, 10.0, 60.0, 0.1, 0.001]: - with self.subTest(time_factor=time_factor): - actual = process_junit_xml_elems(parse_trx_files([result_file]), time_factor=time_factor) - self.assertEqual(actual, - ParsedUnitTestResults( - files=1, - errors=[], - suites=1, - suite_tests=4, - suite_skipped=0, - suite_failures=1, - suite_errors=0, - suite_time=int(0.1395124 * time_factor), - cases=[ - UnitTestCase( - class_name='Pickles.TestHarness.MSTest.AdditionFeature', - result_file=result_file, - test_file=None, - line=None, - test_name='AddingSeveralNumbers_40', - result='success', - content=None, - message=None, - time=0.076891 * time_factor - ), - UnitTestCase( - class_name='Pickles.TestHarness.MSTest.AdditionFeature', - result_file=result_file, - test_file=None, - line=None, - test_name='AddingSeveralNumbers_60', - result='success', - content=None, - message=None, - time=0.0111534 * time_factor - ), - UnitTestCase( - class_name='Pickles.TestHarness.MSTest.AdditionFeature', - result_file=result_file, - test_file=None, - line=None, - test_name='AddTwoNumbers', - result='success', - content=None, - message=None, - time=0.0055623 * time_factor - ), - UnitTestCase( - class_name='Pickles.TestHarness.MSTest.AdditionFeature', - result_file=result_file, - test_file=None, - line=None, - test_name='FailToAddTwoNumbers', - result='failure', - content='\n' - ' MESSAGE:\n' - ' \n' - ' Test method Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers threw exception:\n' - ' Should.Core.Exceptions.NotEqualException: Assert.NotEqual() Failure\n' - ' \n' - ' +++++++++++++++++++\n' - ' STACK TRACE:\n' - ' \n' - ' at Pickles.TestHarness.MSTest.Steps.ThenTheResultShouldBePass(Int32 result) in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Steps.cs:line 28\n' - ' at lambda_method(Closure , IContextManager , Int32 )\n' - ' at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)\n' - ' at TechTalk.SpecFlow.Bindings.StepDefinitionBinding.Invoke(IContextManager contextManager, ITestTracer testTracer, Object[] arguments, TimeSpan& duration)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepArgs stepArgs)\n' - ' at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()\n' - ' at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()\n' - ' at Pickles.TestHarness.MSTest.AdditionFeature.ScenarioCleanup() in C:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature.cs:line 0\n' - ' at Pickles.TestHarness.MSTest.AdditionFeature.FailToAddTwoNumbers() in c:\\dev\\pickles-results-harness\\Pickles.TestHarness\\Pickles.TestHarness.MSTest\\Addition.feature:line 18\n' - ' ', - message=None, - time=0.0459057 * time_factor - ) - ] - )) - if __name__ == "__main__": TestTrx.update_expectations() From 23852ba0894227fedb5b3953f548be331dbd0307 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Thu, 26 May 2022 21:44:33 +0200 Subject: [PATCH 19/32] Automated example file test supersedes transformation test --- python/test/test_trx.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/python/test/test_trx.py b/python/test/test_trx.py index 7dabb93c..c4c856a3 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -4,13 +4,11 @@ from glob import glob from typing import List, Union -from lxml import etree - sys.path.append(str(pathlib.Path(__file__).resolve().parent.parent)) sys.path.append(str(pathlib.Path(__file__).resolve().parent)) -from publish.junit import process_junit_xml_elems, ParsedUnitTestResults, UnitTestCase, JUnitTree -from publish.trx import parse_trx_files, transform_trx_to_junit +from publish.junit import JUnitTree +from publish.trx import parse_trx_files from test_junit import JUnitXmlParseTest test_files_path = pathlib.Path(__file__).parent / 'files' / 'trx' From 9ecb571593a313313eb77752c216c8a497895331 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Fri, 27 May 2022 00:04:50 +0200 Subject: [PATCH 20/32] Make test_files_path private so it is not considered a test --- python/test/test_junit.py | 6 +++--- python/test/test_trx.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/test/test_junit.py b/python/test/test_junit.py index 93f40c37..cb9aa1b7 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -43,7 +43,7 @@ def test(self): raise NotImplementedError() @staticmethod - def test_files_path() -> pathlib.Path: + def _test_files_path() -> pathlib.Path: raise NotImplementedError() @staticmethod @@ -62,7 +62,7 @@ def assert_expectation(test, actual, filename): @classmethod def shorten_filename(cls, filename): - return filename[len(str(cls.test_files_path().resolve().as_posix()))+1:] + return filename[len(str(cls._test_files_path().resolve().as_posix())) + 1:] def do_test_parse_and_process_files(self, filename: str): for locale in [None, 'en_US.UTF-8', 'de_DE.UTF-8']: @@ -122,7 +122,7 @@ def test(self): return self @staticmethod - def test_files_path() -> pathlib.Path: + def _test_files_path() -> pathlib.Path: return test_files_path @staticmethod diff --git a/python/test/test_trx.py b/python/test/test_trx.py index c4c856a3..8a59653b 100644 --- a/python/test/test_trx.py +++ b/python/test/test_trx.py @@ -22,7 +22,7 @@ def test(self): return self @staticmethod - def test_files_path() -> pathlib.Path: + def _test_files_path() -> pathlib.Path: return test_files_path @staticmethod From 1a33f55a88f94f8dffa0ade3db8e70f08d0b3298 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 22:23:23 +0200 Subject: [PATCH 21/32] Allow for NaN time values --- python/publish/junit.py | 5 +- .../nunit/FluentValidation.Tests.junit-xml | 809 ++ .../trx/nunit/FluentValidation.Tests.results | 9742 +++++++++++++++++ .../trx/nunit/FluentValidation.Tests.trx | 4662 ++++++++ .../trx/nunit/NUnit-net461-sample.junit-xml | 24 + .../trx/nunit/NUnit-net461-sample.results | 90 + .../files/trx/nunit/NUnit-net461-sample.trx | 123 + .../NUnit-netcoreapp3.1-sample.junit-xml | 24 + .../nunit/NUnit-netcoreapp3.1-sample.results | 90 + .../trx/nunit/NUnit-netcoreapp3.1-sample.trx | 123 + .../files/trx/nunit/SilentNotes.junit-xml | 84 + .../test/files/trx/nunit/SilentNotes.results | 881 ++ python/test/files/trx/nunit/SilentNotes.trx | 609 ++ .../test/files/trx/xunit/dotnet-trx.junit-xml | 33 + .../test/files/trx/xunit/dotnet-trx.results | 152 + python/test/files/trx/xunit/dotnet-trx.trx | 184 + .../trx/xunit/xUnit-net461-sample.junit-xml | 22 + .../trx/xunit/xUnit-net461-sample.results | 90 + .../files/trx/xunit/xUnit-net461-sample.trx | 143 + .../xUnit-netcoreapp3.1-sample.junit-xml | 22 + .../xunit/xUnit-netcoreapp3.1-sample.results | 90 + .../trx/xunit/xUnit-netcoreapp3.1-sample.trx | 143 + ...yami_YAMILEX 2015-10-24 04_18_59.junit-xml | 46 + .../yami_YAMILEX 2015-10-24 04_18_59.results | 318 + .../trx/yami_YAMILEX 2015-10-24 04_18_59.trx | 249 + python/test/test_junit.py | 5 +- 26 files changed, 18758 insertions(+), 5 deletions(-) create mode 100644 python/test/files/trx/nunit/FluentValidation.Tests.junit-xml create mode 100644 python/test/files/trx/nunit/FluentValidation.Tests.results create mode 100644 python/test/files/trx/nunit/FluentValidation.Tests.trx create mode 100644 python/test/files/trx/nunit/NUnit-net461-sample.junit-xml create mode 100644 python/test/files/trx/nunit/NUnit-net461-sample.results create mode 100644 python/test/files/trx/nunit/NUnit-net461-sample.trx create mode 100644 python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml create mode 100644 python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results create mode 100644 python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.trx create mode 100644 python/test/files/trx/nunit/SilentNotes.junit-xml create mode 100644 python/test/files/trx/nunit/SilentNotes.results create mode 100644 python/test/files/trx/nunit/SilentNotes.trx create mode 100644 python/test/files/trx/xunit/dotnet-trx.junit-xml create mode 100644 python/test/files/trx/xunit/dotnet-trx.results create mode 100644 python/test/files/trx/xunit/dotnet-trx.trx create mode 100644 python/test/files/trx/xunit/xUnit-net461-sample.junit-xml create mode 100644 python/test/files/trx/xunit/xUnit-net461-sample.results create mode 100644 python/test/files/trx/xunit/xUnit-net461-sample.trx create mode 100644 python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml create mode 100644 python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results create mode 100644 python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.trx create mode 100644 python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml create mode 100644 python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results create mode 100755 python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.trx diff --git a/python/publish/junit.py b/python/publish/junit.py index cd026dfb..40b2ba55 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -1,6 +1,7 @@ +import math import os from collections import defaultdict -from typing import Optional, Iterable, Union, Any, List, Dict, Callable, Tuple +from typing import Optional, Iterable, Union, List, Dict, Callable, Tuple import junitparser from junitparser import Element, JUnitXml, JUnitXmlError, TestCase, TestSuite, Skipped @@ -174,7 +175,7 @@ def create_junitxml(filepath: str, tree: JUnitTree) -> Union[JUnitXml, JUnitXmlE suite_skipped = sum([suite.skipped + suite.disabled for result_file, suite in suites]) suite_failures = sum([suite.failures for result_file, suite in suites]) suite_errors = sum([suite.errors for result_file, suite in suites]) - suite_time = int(sum([suite.time for result_file, suite in suites]) * time_factor) + suite_time = int(sum([suite.time for result_file, suite in suites if not math.isnan(suite.time)]) * time_factor) def int_opt(string: Optional[str]) -> Optional[int]: try: diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml new file mode 100644 index 00000000..544994e1 --- /dev/null +++ b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml @@ -0,0 +1,809 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.results b/python/test/files/trx/nunit/FluentValidation.Tests.results new file mode 100644 index 00000000..7ae77169 --- /dev/null +++ b/python/test/files/trx/nunit/FluentValidation.Tests.results @@ -0,0 +1,9742 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=804, + suite_skipped=1, + suite_failures=0, + suite_errors=0, + suite_time=3, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_async_model_throws', + result='success', + message=None, + content=None, + time=0.0011796 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChildRulesTests.ChildRules_works_with_RuleSet', + result='success', + message=None, + content=None, + time=0.0058553 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_store_comparison_type', + result='success', + message=None, + content=None, + time=0.0004205 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Tests_nested_property_reverse', + result='success', + message=None, + content=None, + time=0.0004663 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_fail_when_condition_matches', + result='success', + message=None, + content=None, + time=7.55e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_is_applied_to_single_validator_in_the_chain_when_Appl' + 'yConditionTo_set_to_CurrentValidator', + result='success', + message=None, + content=None, + time=0.000818 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0005804 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Regular_rules_can_drop_into_RuleForEach', + result='success', + message=None, + content=None, + time=0.0008814 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Chained_property_should_be_excluded', + result='success', + message=None, + content=None, + time=0.0001883 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_should_throw_when_there_are_no_validation_e' + 'rrors_with_preconstructed_object', + result='success', + message=None, + content=None, + time=0.0008107 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_fail_when_condition_does_not_match', + result='success', + message=None, + content=None, + time=8.88e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Should_ignore_unknown_parameters', + result='success', + message=None, + content=None, + time=0.0008556 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'To_and_from_properties_should_be_set_for_dates', + result='success', + message=None, + content=None, + time=9.18e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Runs_otherwise_conditions_for_When', + result='success', + message=None, + content=None, + time=0.000563 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_exp' + 'licit_value', + result='success', + message=None, + content=None, + time=0.0002869 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'When_the_text_length_is_larger_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002571 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Executes_customasync_rule_when_async_condition_true', + result='success', + message=None, + content=None, + time=0.0011516 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_matches_the_lambda_regular_expression_then_the_validato' + 'r_should_pass', + result='success', + message=None, + content=None, + time=0.0003275 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_validation_fails_the_default_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0001265 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserStateTester.Throws_when_provider_is_null', + result='success', + message=None, + content=None, + time=0.0002016 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_not_throw_when_there_are_no_error' + 's', + result='success', + message=None, + content=None, + time=0.0008221 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_the_property_is_initialized_with_invalid_string_then_the_validat' + 'or_should_fail', + result='success', + message=None, + content=None, + time=9.87e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Extracts_property_from_constant_using_expression', + result='success', + message=None, + content=None, + time=6.78e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Includes_combination_of_rulesets_async', + result='success', + message=None, + content=None, + time=0.0010528 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TrackingCollectionTests.' + 'Should_not_raise_event_once_handler_detached', + result='success', + message=None, + content=None, + time=0.0001609 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002535 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'NotEqual_should_create_NotEqualValidator_with_lambda', + result='success', + message=None, + content=None, + time=0.0005555 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Should_ignore_unknown_numbered_parameters', + result='success', + message=None, + content=None, + time=0.0001013 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'When_the_objects_are_equal_validation_should_succeed', + result='success', + message=None, + content=None, + time=0.0003395 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Validates_nullable_property_with_overriden_name_when_selected', + result='success', + message=None, + content=None, + time=0.0019595 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0006361 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + 'alidator_level_async_legacy', + result='success', + message=None, + content=None, + time=0.0008011 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TransformTests.Transforms_collection_element', + result='success', + message=None, + content=None, + time=0.0008965 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_matches_the_regular_expression_then_the_validator_shoul' + 'd_pass', + result='success', + message=None, + content=None, + time=0.001805 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fai' + 'ls', + result='success', + message=None, + content=None, + time=0.0005888 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Throws_when_provider_is_null', + result='success', + message=None, + content=None, + time=0.0001945 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_Should_throw_when_there_are_no_validation_e' + 'rrors', + result='success', + message=None, + content=None, + time=0.0008389 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_succeed_when_async_condition_does_not_match', + result='success', + message=None, + content=None, + time=0.000355 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Includes_combination_of_rulesets', + result='success', + message=None, + content=None, + time=0.0006445 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' + 'nsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResul' + 't: )', + result='success', + message=None, + content=None, + time=0.0009155 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0002583 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Can_Provide_conditional_severity', + result='success', + message=None, + content=None, + time=0.0002891 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: " \\r \\t \\n")', + result='success', + message=None, + content=None, + time=2.47e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Nested_async_conditions_with_CustomAsync_rule', + result='success', + message=None, + content=None, + time=0.0009986 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'When_the_enum_is_not_initialized_with_valid_value_then_the_validator_' + 'should_fail', + result='success', + message=None, + content=None, + time=8.19e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + 'e_level_legacy', + result='success', + message=None, + content=None, + time=0.0002166 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_validation_fails_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0002342 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_Should_support_nested_properties', + result='success', + message=None, + content=None, + time=0.0009315 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_value_is_null_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002923 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Uses_lazily_loaded_expression_with_options', + result='success', + message=None, + content=None, + time=0.001451 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.Should_not_main_state', + result='success', + message=None, + content=None, + time=0.0001976 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Can_use_cascade_with_RuleForEach', + result='success', + message=None, + content=None, + time=0.0006943 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + 'en_at_rule_level_async_legacy', + result='success', + message=None, + content=None, + time=0.0014877 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_Custom_When_property_name_omitted_infers_property_name', + result='success', + message=None, + content=None, + time=0.0002338 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Rules_invoke_when_inverse_shared_async_condition_matches', + result='success', + message=None, + content=None, + time=0.000943 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Skips_null_items', + result='success', + message=None, + content=None, + time=0.0005809 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NullTester.' + 'Not_null_validator_should_not_crash_with_non_nullable_value_type', + result='success', + message=None, + content=None, + time=0.0005603 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Should_override_propertyName', + result='success', + message=None, + content=None, + time=0.0007523 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "someName@some_domain.com")', + result='success', + message=None, + content=None, + time=1.62e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Flags_enum_validates_correctly_when_using_zero_value', + result='success', + message=None, + content=None, + time=0.0003854 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002574 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_minlength_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0003529 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Gets_translation_for_culture', + result='success', + message=None, + content=None, + time=7.41e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorDescriptorTester.' + 'GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_mo' + 'del_level_rule', + result='success', + message=None, + content=None, + time=0.0003935 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.Nested_dependent_rules', + result='success', + message=None, + content=None, + time=0.0005419 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Combines_rulesets_and_explicit_properties_async', + result='success', + message=None, + content=None, + time=0.001092 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Rules_invoke_when_inverse_shared_condition_matches', + result='success', + message=None, + content=None, + time=0.0001103 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Should_fail_when_greater_than_input', + result='success', + message=None, + content=None, + time=8.53e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Async_condition_should_work_with_child_collection', + result='success', + message=None, + content=None, + time=0.0007258 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Stores_user_severity_against_validation_failure', + result='success', + message=None, + content=None, + time=0.0002021 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PredicateValidatorTester.' + 'Should_throw_when_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0003168 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_validate_single_property', + result='success', + message=None, + content=None, + time=0.0002735 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Should_fail_when_equal_to_input', + result='success', + message=None, + content=None, + time=7.29e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level_and_async_validator_is_invoked_synchronously', + result='success', + message=None, + content=None, + time=0.0004818 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Executes_in_rule_in_default_and_none', + result='success', + message=None, + content=None, + time=0.000354 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_inverse_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0003373 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_inheritance_hierarchy', + result='success', + message=None, + content=None, + time=0.0005062 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_executed_synchronosuly_with_asynchronous_collection_r' + 'ule', + result='success', + message=None, + content=None, + time=0.0003309 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set_for_strings', + result='success', + message=None, + content=None, + time=0.0002385 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: null)', + result='success', + message=None, + content=None, + time=0.0002029 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Matches_any_failure', + result='success', + message=None, + content=None, + time=0.0006901 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Validates_type_when_using_non_generic_validate_overload', + result='success', + message=None, + content=None, + time=0.0001769 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_property', + result='success', + message=None, + content=None, + time=0.000321 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Calling_ValidateAsync_should_delegate_to_underlying_async_validator', + result='success', + message=None, + content=None, + time=0.0134579 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' + 'ian_culture(cultureName: "sr")', + result='success', + message=None, + content=None, + time=0.0004456 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_max_is_smaller_than_the_min_then_the_validator_should_throw', + result='success', + message=None, + content=None, + time=0.0004785 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.Passes_when_collection_empty', + result='success', + message=None, + content=None, + time=0.00027 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotNullTester.' + 'NotNullValidator_should_fail_if_value_is_null', + result='success', + message=None, + content=None, + time=0.0002029 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_property', + result='success', + message=None, + content=None, + time=0.0002879 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_s' + 'hould_throw_an_exception', + result='success', + message=None, + content=None, + time=0.0006954 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.Format_property_value', + result='success', + message=None, + content=None, + time=0.0002165 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Falls_back_to_english_when_culture_not_registered', + result='success', + message=None, + content=None, + time=0.0002145 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Only_root_validator_throws', + result='success', + message=None, + content=None, + time=0.0007993 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator', + result='success', + message=None, + content=None, + time=0.0014785 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AccessorCacheTests.' + 'Identifies_if_memberexp_acts_on_model_instance', + result='success', + message=None, + content=None, + time=0.0002977 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + 'en_at_rule_level_legacy', + result='success', + message=None, + content=None, + time=0.0005266 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Result_should_use_custom_property_name_when_no_property_name_can_be_d' + 'etermined', + result='success', + message=None, + content=None, + time=0.0005762 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'When_exact_length_rule_failes_error_should_have_exact_length_error_er' + 'rorcode', + result='success', + message=None, + content=None, + time=0.0006217 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value', + result='success', + message=None, + content=None, + time=0.000299 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level_async', + result='success', + message=None, + content=None, + time=0.000813 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Throws_exception_with_a_ruleset', + result='success', + message=None, + content=None, + time=0.0007043 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Ruleset_cascades_to_child_validator', + result='success', + message=None, + content=None, + time=0.0005176 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_handle_custom_value_types_correctly', + result='success', + message=None, + content=None, + time=0.0022529 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Does_not_throw_InvalidCastException_when_using_RuleForEach', + result='success', + message=None, + content=None, + time=0.0004547 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorDescriptorTester.' + 'Returns_empty_collection_for_property_with_no_validators', + result='success', + message=None, + content=None, + time=8.85e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Should_succeed_when_greater_than_input', + result='success', + message=None, + content=None, + time=8.6e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'GreaterThan_should_create_GreaterThanValidator_with_lambda', + result='success', + message=None, + content=None, + time=0.0004794 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Executes_rule_for_each_item_in_collection_async', + result='success', + message=None, + content=None, + time=0.0007972 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Should_fail_when_less_than_input', + result='success', + message=None, + content=None, + time=7.64e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Conditional_child_validator_should_register_with_validator_type_not_p' + 'roperty', + result='success', + message=None, + content=None, + time=0.0003936 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' + 'gex(email: "testperso")', + result='success', + message=None, + content=None, + time=3.95e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Collection_should_be_explicitly_included_with_expression', + result='success', + message=None, + content=None, + time=0.0007823 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_throw_for_non_member_expression_when_validating_single_propert' + 'y', + result='success', + message=None, + content=None, + time=0.0002162 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Adding_a_validator_should_store_validator', + result='success', + message=None, + content=None, + time=8.07e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Async_inside_dependent_rules', + result='success', + message=None, + content=None, + time=1.5056573 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_Custom_Returns_single_failure_async', + result='success', + message=None, + content=None, + time=0.000586 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_validate_single_property_where_property_as_string', + result='success', + message=None, + content=None, + time=0.0003409 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Can_replace_message_without_overriding_all_languages', + result='success', + message=None, + content=None, + time=0.0001258 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WithName_should_override_field_name_with_value_from_other_property', + result='success', + message=None, + content=None, + time=0.0002316 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "customer/department=shipping@example.com")', + result='success', + message=None, + content=None, + time=2.34e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'To_and_from_properties_should_be_set', + result='success', + message=None, + content=None, + time=6.68e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used' + '(age: 42, cardNumber: null)', + result='success', + message=None, + content=None, + time=0.000746 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_a' + 'sync', + result='success', + message=None, + content=None, + time=0.0057314 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_with_callback_async', + result='success', + message=None, + content=None, + time=0.0011748 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_async', + result='success', + message=None, + content=None, + time=0.0007821 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Validates_complex_property', + result='success', + message=None, + content=None, + time=0.0009826 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Should_use_ordinal_comparison_by_default', + result='success', + message=None, + content=None, + time=0.0001642 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Executes_correct_rule_when_using_property_with_include_async', + result='success', + message=None, + content=None, + time=0.0017452 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Validates_collection', + result='success', + message=None, + content=None, + time=0.0010225 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Should_localize_value', + result='success', + message=None, + content=None, + time=0.0008092 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0005497 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + 'e_level_async_legacy', + result='success', + message=None, + content=None, + time=0.0008677 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure', + result='success', + message=None, + content=None, + time=0.0001733 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Uses_custom_delegate_for_building_message', + result='success', + message=None, + content=None, + time=0.0005953 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.SimplePropertyGet', + result='success', + message=None, + content=None, + time=0.0004082 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Falls_back_to_default_localization_key_when_error_code_key_not_found', + result='success', + message=None, + content=None, + time=0.0002815 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Should_set_default_error_when_validation_fails', + result='success', + message=None, + content=None, + time=0.0001125 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_be_valid_when_there_are_no_failures_for_single_property', + result='success', + message=None, + content=None, + time=0.0001968 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Must_should_create_PredicateValidator_with_context', + result='success', + message=None, + content=None, + time=0.0008328 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "@someDomain@abc.com")', + result='success', + message=None, + content=None, + time=2.34e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.Fails_when_collection_empty', + result='success', + message=None, + content=None, + time=0.0005821 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_value_is_Default_for_type_validator_should_pass_datetime', + result='success', + message=None, + content=None, + time=0.0003325 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.ComplexPropertySet', + result='success', + message=None, + content=None, + time=0.0004413 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_with_nullable_when_property_not_null_cross_property', + result='success', + message=None, + content=None, + time=0.0002708 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'When_runs_outside_RuleForEach_loop_async', + result='success', + message=None, + content=None, + time=0.0012558 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ModelLevelValidatorTests.' + 'Validates_at_model_level', + result='success', + message=None, + content=None, + time=0.0003216 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Uses_string_format_with_property_value', + result='success', + message=None, + content=None, + time=0.0007191 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Nested_collection_for_null_property_should_not_throw_null_reference', + result='success', + message=None, + content=None, + time=0.0004414 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Should_fail_when_greater_than_input', + result='success', + message=None, + content=None, + time=0.0001925 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' + 'bda', + result='success', + message=None, + content=None, + time=0.0078787 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Validates_child_validator_synchronously', + result='success', + message=None, + content=None, + time=0.000356 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Nullable_enum_valid_when_value_specified', + result='success', + message=None, + content=None, + time=0.0018848 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Doesnt_throw_NullReferenceException_when_instance_not_null', + result='success', + message=None, + content=None, + time=0.0001771 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'Min_and_max_properties_should_be_set', + result='success', + message=None, + content=None, + time=0.0001047 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WithMessage_and_WithErrorCode_should_override_error_message_and_error' + '_code', + result='success', + message=None, + content=None, + time=0.0001772 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_async', + result='success', + message=None, + content=None, + time=0.0015238 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Nested_conditions_Rule_For', + result='success', + message=None, + content=None, + time=0.0009052 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Cascade_mode_can_be_set_after_validator_instantiated_legacy', + result='success', + message=None, + content=None, + time=0.0002101 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(' + 'age: 42, cardNumber: "")', + result='success', + message=None, + content=None, + time=0.0006807 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.' + 'AddIndexer_throws_when_nothing_added', + result='success', + message=None, + content=None, + time=0.000171 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Collection_should_be_explicitly_included_with_string', + result='success', + message=None, + content=None, + time=0.0005652 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Executes_rules_not_specified_in_ruleset', + result='success', + message=None, + content=None, + time=0.0001365 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' + 'lidator_using_include_statement', + result='success', + message=None, + content=None, + time=0.0001585 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_model_async', + result='success', + message=None, + content=None, + time=0.0013614 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Condition_should_work_with_complex_property_when_invoked_async', + result='success', + message=None, + content=None, + time=0.0008233 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'RuleSet_can_be_used_inside_condition', + result='success', + message=None, + content=None, + time=0.000827 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' + 'Uses_custom_property_name', + result='success', + message=None, + content=None, + time=0.0002739 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Does_not_execute_customasync_Rule_when_condition_false', + result='success', + message=None, + content=None, + time=0.0003491 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level_async_legacy', + result='success', + message=None, + content=None, + time=0.0007979 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Matches_model_level_rule', + result='success', + message=None, + content=None, + time=0.0006479 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Should_work_with_top_level_collection_validator_and_overriden_name', + result='success', + message=None, + content=None, + time=0.0003943 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_does_not_match_the_lambda_regex_regular_expression_then' + '_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0003653 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_throws_when_property_does_not_have_child_val' + 'idator', + result='success', + message=None, + content=None, + time=0.0003445 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Collection_should_be_explicitly_included_with_string', + result='success', + message=None, + content=None, + time=0.0005339 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' + '(age: 17, cardNumber: "")', + result='success', + message=None, + content=None, + time=0.0017937 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + 'il', + result='success', + message=None, + content=None, + time=0.0002294 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_u' + 'se_DependentRulesBuilder', + result='success', + message=None, + content=None, + time=0.0003687 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_does_not_match_the_lambda_regular_expression_then_the_v' + 'alidator_should_fail', + result='success', + message=None, + content=None, + time=0.0001392 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "@someDomain.com")', + result='success', + message=None, + content=None, + time=2.48e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AccessorCacheTests.Benchmark', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Should_set_default_validation_message_when_validation_fails', + result='success', + message=None, + content=None, + time=0.000352 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Uses_func_to_get_message', + result='success', + message=None, + content=None, + time=0.0002383 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_not_null_cross_property', + result='success', + message=None, + content=None, + time=0.0002763 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_nullable_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0006029 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Can_specify_condition_for_individual_collection_elements', + result='success', + message=None, + content=None, + time=0.0009154 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Can_validate_using_validator_for_base_type', + result='success', + message=None, + content=None, + time=0.0012612 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Length_should_create_MaximumLengthValidator', + result='success', + message=None, + content=None, + time=0.0002942 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Trims_spaces', + result='success', + message=None, + content=None, + time=0.0004086 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorDescriptorTester.' + 'Should_retrieve_name_given_to_it_pass_property_as_string', + result='success', + message=None, + content=None, + time=0.0005729 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'WhenAsync_condition_only_executed_once', + result='success', + message=None, + content=None, + time=0.00092 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002836 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + 'ld_pass', + result='success', + message=None, + content=None, + time=0.0011727 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Must_should_create_PredicteValidator', + result='success', + message=None, + content=None, + time=0.0004938 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Applies_multiple_rulesets_to_rule', + result='success', + message=None, + content=None, + time=0.0004398 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Flags_enum_invalid_when_using_outofrange_negative_value', + result='success', + message=None, + content=None, + time=0.000756 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PredicateValidatorTester.' + 'When_validation_fails_the_default_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0004204 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "someName@")', + result='success', + message=None, + content=None, + time=2.27e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_input_is_null_then_the_validator_should_pass', + result='success', + message=None, + content=None, + time=0.000352 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Cascade_mode_can_be_set_after_validator_instantiated_async', + result='success', + message=None, + content=None, + time=0.0008338 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ModelLevelValidatorTests.' + 'Can_use_child_validator_at_model_level', + result='success', + message=None, + content=None, + time=0.0004502 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Separate_validation_on_chained_property_conditional', + result='success', + message=None, + content=None, + time=0.0002104 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + 'il', + result='success', + message=None, + content=None, + time=0.0002469 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Flags_enum_invalid_when_using_outofrange_positive_value', + result='success', + message=None, + content=None, + time=0.0007806 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_should_not_throw_when_there_are_errors_with' + '_preconstructed_object', + result='success', + message=None, + content=None, + time=0.0006462 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_not_be_valid_when_they_are_equal', + result='success', + message=None, + content=None, + time=0.0004406 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Validates_single_property_by_path', + result='success', + message=None, + content=None, + time=0.0004851 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_async_inverse_predicate_is_null', + result='success', + message=None, + content=None, + time=0.000354 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_inverse_context_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0003354 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + 'errors_ruleforeach', + result='success', + message=None, + content=None, + time=0.0008097 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_to_second_validator_when_first_validator_succeed' + 's_and_cascade_set_to_stop_async_legacy', + result='success', + message=None, + content=None, + time=0.0011758 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.Validates_collection', + result='success', + message=None, + content=None, + time=0.0006633 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_context_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0001421 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'When_validation_fails_the_error_should_be_set', + result='success', + message=None, + content=None, + time=0.00023 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Should_throw_when_value_to_compare_is_null', + result='success', + message=None, + content=None, + time=0.0002891 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_between_the_lambda_range_specified_then_the_validato' + 'r_should_pass', + result='success', + message=None, + content=None, + time=0.00092 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotNullTester.' + 'Fails_when_nullable_value_type_is_null', + result='success', + message=None, + content=None, + time=0.0003908 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Does_not_throw_when_valid_async', + result='success', + message=None, + content=None, + time=0.001014 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_the_property_is_initialized_with_null_then_the_validator_should_' + 'be_valid', + result='success', + message=None, + content=None, + time=8.7e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used' + '(age: 42, cardNumber: "")', + result='success', + message=None, + content=None, + time=0.0006089 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' + 'ian_culture(cultureName: "sr-Latn")', + result='success', + message=None, + content=None, + time=4.84e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + 'il_for_strings', + result='success', + message=None, + content=None, + time=0.0002367 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.Should_be_subchain', + result='success', + message=None, + content=None, + time=0.0001203 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'When_the_objects_are_equal_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002655 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'When_the_objects_are_not_equal_validation_should_fail', + result='success', + message=None, + content=None, + time=0.0002192 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'Passes_for_ienumerable_that_doesnt_implement_ICollection', + result='success', + message=None, + content=None, + time=0.0030376 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_enumType_is_not_an_enum_it_should_throw', + result='success', + message=None, + content=None, + time=0.0004576 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'When_validation_fails_the_default_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0001061 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_executed_synchronosuly_with_synchronous_role', + result='success', + message=None, + content=None, + time=0.0003076 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Tests_nested_property', + result='success', + message=None, + content=None, + time=0.0004914 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Validates_child_validator_asynchronously', + result='success', + message=None, + content=None, + time=0.0007232 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Separate_validation_on_chained_property', + result='success', + message=None, + content=None, + time=0.001368 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'TestAsyncWithDependentRules_SyncEntry', + result='success', + message=None, + content=None, + time=0.0013846 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_is_applied_to_all_validators_in_the_chain', + result='success', + message=None, + content=None, + time=0.0008144 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' + '(withoutErrMsg: "bar", errMessages: ["bar"])', + result='success', + message=None, + content=None, + time=0.0001548 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_model_async', + result='success', + message=None, + content=None, + time=0.0012782 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Expected_message_argument_check', + result='success', + message=None, + content=None, + time=0.0009659 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorDescriptorTester.' + 'Does_not_throw_when_rule_declared_without_property', + result='success', + message=None, + content=None, + time=0.0001726 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_executed_synchronosuly_with_asynchronous_rule', + result='success', + message=None, + content=None, + time=0.0002385 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + 'idator_level_and_overriden_at_rule_level_async_legacy', + result='success', + message=None, + content=None, + time=0.0010468 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Validates_collection_several_levels_deep', + result='success', + message=None, + content=None, + time=0.0011437 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0002242 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_value_is_whitespace_validation_should_pass', + result='success', + message=None, + content=None, + time=0.0001968 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Disables_localization', + result='success', + message=None, + content=None, + time=0.0001637 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Uses_property_value_in_message', + result='success', + message=None, + content=None, + time=0.0008185 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Comparison_type', + result='success', + message=None, + content=None, + time=0.0001094 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'When_condition_only_executed_once', + result='success', + message=None, + content=None, + time=0.0004167 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.Should_not_be_subchain', + result='success', + message=None, + content=None, + time=5.03e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true' + '_and_all_individual_rules_are_satisfied', + result='success', + message=None, + content=None, + time=0.000455 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_colletion_index', + result='success', + message=None, + content=None, + time=0.0002866 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' + '(age: 17, cardNumber: null)', + result='success', + message=None, + content=None, + time=0.0005484 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Rules_not_invoked_when_inverse_shared_async_condition_does_not_match', + result='success', + message=None, + content=None, + time=0.0028571 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' + 'sed(age: 17, cardNumber: "")', + result='success', + message=None, + content=None, + time=0.0005719 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0001542 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Nested_conditions_Rule_For_Each', + result='success', + message=None, + content=None, + time=0.0009411 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_not_be_valid_for_case_insensitve_comparison_with_expression', + result='success', + message=None, + content=None, + time=0.0002824 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Correctly_gets_collection_indices', + result='success', + message=None, + content=None, + time=0.0003199 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_validate_single_property_where_invalid_property_as_string', + result='success', + message=None, + content=None, + time=0.000216 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Nullable_enum_valid_when_property_value_is_null', + result='success', + message=None, + content=None, + time=0.0001594 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.' + 'Should_not_be_valid_when_there_are_errors', + result='success', + message=None, + content=None, + time=5.49e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Correctly_provides_object_being_validated', + result='success', + message=None, + content=None, + time=0.0003232 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Unexpected_error_code_check', + result='success', + message=None, + content=None, + time=0.0016124 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Complex_property_should_be_excluded', + result='success', + message=None, + content=None, + time=0.0003153 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainingValidatorsTester.' + 'Should_execute_multiple_validators', + result='success', + message=None, + content=None, + time=0.0001781 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_throw_when_there_are_errors', + result='success', + message=None, + content=None, + time=0.0008858 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Should_succeed_when_greater_than_input', + result='success', + message=None, + content=None, + time=8e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' + '(age: 42, cardNumber: "cardNumber")', + result='success', + message=None, + content=None, + time=0.0008127 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'TestAsyncWithDependentRules_AsyncEntry', + result='success', + message=None, + content=None, + time=0.0050739 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'All_localizations_have_same_parameters_as_English', + result='success', + message=None, + content=None, + time=0.021761 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Async_condition_should_work_with_child_collection', + result='success', + message=None, + content=None, + time=0.0007127 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.' + 'Calling_ToString_should_construct_string_representation_of_chain', + result='success', + message=None, + content=None, + time=7.48e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Falls_back_to_english_when_translation_missing', + result='success', + message=None, + content=None, + time=0.000523 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotNullTester.' + 'NotNullValidator_should_pass_if_value_has_value', + result='success', + message=None, + content=None, + time=0.0002119 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' + '(withoutErrMsg: "bar", errMessages: ["foo"])', + result='success', + message=None, + content=None, + time=0.0003297 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Gets_translation_for_croatian_culture', + result='success', + message=None, + content=None, + time=0.0004599 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_should_work_with_DependentRules', + result='success', + message=None, + content=None, + time=0.0012294 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' + 'Resolves_nested_properties', + result='success', + message=None, + content=None, + time=0.0005703 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate', + result='success', + message=None, + content=None, + time=0.0004371 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'To_and_from_properties_should_be_set', + result='success', + message=None, + content=None, + time=0.000131 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.Uses_explicit_ruleset', + result='success', + message=None, + content=None, + time=0.0005128 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.' + 'ToString_return_error_messages_with_given_separator', + result='success', + message=None, + content=None, + time=7.27e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Can_validate_collection_using_validator_for_base_type', + result='success', + message=None, + content=None, + time=0.0010737 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0003672 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' + 'sed(age: 42, cardNumber: "cardNumber")', + result='success', + message=None, + content=None, + time=0.000897 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_async', + result='success', + message=None, + content=None, + time=0.0027288 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + 'tor_should_pass_for_strings', + result='success', + message=None, + content=None, + time=0.0003005 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "0")', + result='success', + message=None, + content=None, + time=0.0002222 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_fail_when_async_condition_does_not_match', + result='success', + message=None, + content=None, + time=0.0004177 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_not_be_valid', + result='success', + message=None, + content=None, + time=0.0006978 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Nullable_enum_invalid_when_bad_value_specified', + result='success', + message=None, + content=None, + time=0.0003847 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'LessThan_should_create_LessThanValidator_with_explicit_value', + result='success', + message=None, + content=None, + time=0.0002742 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_Custom_Returns_single_failure', + result='success', + message=None, + content=None, + time=0.000335 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Top_level_collection', + result='success', + message=None, + content=None, + time=0.0003379 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + 'errors', + result='success', + message=None, + content=None, + time=0.0007782 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.IsValidTests', + result='success', + message=None, + content=None, + time=0.0001215 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_value_is_Default_for_type_validator_should_fail_datetime', + result='success', + message=None, + content=None, + time=0.0019899 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "!def!xyz%abc@example.com")', + result='success', + message=None, + content=None, + time=2.2e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Validates_collection', + result='success', + message=None, + content=None, + time=0.0005174 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.ImplicitCast', + result='success', + message=None, + content=None, + time=0.0008766 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_value_is_Default_for_type_validator_should_fail_int', + result='success', + message=None, + content=None, + time=0.0018552 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Formats_string_with_placeholders', + result='success', + message=None, + content=None, + time=0.0002342 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor', + result='success', + message=None, + content=None, + time=0.0007222 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Doesnt_throw_NullReferenceException_when_instance_not_null_async', + result='success', + message=None, + content=None, + time=0.0014608 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.SimpleFieldGet', + result='success', + message=None, + content=None, + time=0.0004109 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Replaces_propertyvalue_with_empty_string_when_null', + result='success', + message=None, + content=None, + time=0.0002456 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedNameTester.' + 'Uses_localized_name_expression', + result='success', + message=None, + content=None, + time=0.0008903 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_does_not_match_the_regular_expression_then_the_validato' + 'r_should_fail', + result='success', + message=None, + content=None, + time=0.0001644 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomFailureActionTester.' + 'Does_not_invoke_action_if_validation_success', + result='success', + message=None, + content=None, + time=0.0002528 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Should_succeed_when_less_than_input', + result='success', + message=None, + content=None, + time=0.0001783 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'CanValidateInstancesOfType_returns_true_when_comparing_against_same_t' + 'ype', + result='success', + message=None, + content=None, + time=6.65e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + 'alidator_level_async', + result='success', + message=None, + content=None, + time=0.000909 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Executes_custom_rule_when_async_condition_true', + result='success', + message=None, + content=None, + time=0.0007245 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Should_not_scramble_property_name_when_using_collection_validators_se' + 'veral_levels_deep_with_ValidateAsync', + result='success', + message=None, + content=None, + time=0.0021348 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Adds_formatted_argument_and_formatted_custom_arguments', + result='success', + message=None, + content=None, + time=0.0002678 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "\\"Abc\\\\@def\\"@example.com")', + result='success', + message=None, + content=None, + time=2.6e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PredicateValidatorTester.' + 'When_validation_fails_metadata_should_be_set_on_failure', + result='success', + message=None, + content=None, + time=0.0012067 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.' + 'Calling_ToString_should_construct_string_representation_of_chain_with' + '_indexers', + result='success', + message=None, + content=None, + time=0.0002382 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Does_not_throw_when_valid_and_a_ruleset', + result='success', + message=None, + content=None, + time=0.0003775 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0003967 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Can_replace_default_errorcode_resolver', + result='success', + message=None, + content=None, + time=0.0003158 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Calling_validate_should_delegate_to_underlying_validator', + result='success', + message=None, + content=None, + time=0.0014739 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NullTester.' + 'NullValidator_should_pass_if_value_is_null', + result='success', + message=None, + content=None, + time=0.0003543 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserStateTester.' + 'Correctly_provides_object_being_validated', + result='success', + message=None, + content=None, + time=0.0003223 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002796 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'When_the_enum_is_initialized_with_invalid_value_then_the_validator_sh' + 'ould_fail', + result='success', + message=None, + content=None, + time=0.0002553 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Tests_nested_property_using_obsolete_method', + result='success', + message=None, + content=None, + time=0.0004676 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Can_access_expression_in_message', + result='success', + message=None, + content=None, + time=0.0002264 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.Can_serialize_result', + result='success', + message=None, + content=None, + time=0.0071021 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + 'idator_level_and_overriden_at_rule_level_async', + result='success', + message=None, + content=None, + time=0.001072 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Async_condition_can_be_used_inside_ruleset', + result='success', + message=None, + content=None, + time=0.0018948 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.Comparison_Type', + result='success', + message=None, + content=None, + time=0.0002061 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Validates_child_validator_synchronously', + result='success', + message=None, + content=None, + time=0.0004716 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CreditCardValidatorTests.IsValidTests', + result='success', + message=None, + content=None, + time=0.0002171 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_to_second_validator_when_first_validator_succeed' + 's_and_cascade_set_to_stop', + result='success', + message=None, + content=None, + time=0.0001667 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_enumType_is_null_it_should_throw', + result='success', + message=None, + content=None, + time=0.0021549 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_nullable_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0004362 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Replaces_propertyvalue_placeholder', + result='success', + message=None, + content=None, + time=0.0009778 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + 'errors_ruleforeach', + result='success', + message=None, + content=None, + time=0.0022202 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_store_property_to_compare', + result='success', + message=None, + content=None, + time=0.001834 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_property', + result='success', + message=None, + content=None, + time=0.0004626 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0005735 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously', + result='success', + message=None, + content=None, + time=0.0005199 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass', + result='success', + message=None, + content=None, + time=0.000328 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Executes_rules_in_specified_ruleset', + result='success', + message=None, + content=None, + time=0.0001594 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Async_condition_should_work_with_complex_property_when_validator_invo' + 'ked_synchronously', + result='success', + message=None, + content=None, + time=0.0007052 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "someName@someDomain.com")', + result='success', + message=None, + content=None, + time=1.67e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WithErrorCode_should_override_error_code', + result='success', + message=None, + content=None, + time=0.0001849 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validat' + 'or', + result='success', + message=None, + content=None, + time=0.0006154 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + 'e_level_async', + result='success', + message=None, + content=None, + time=0.0008319 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Should_allow_normal_rules_and_chained_property_on_same_property', + result='success', + message=None, + content=None, + time=0.0002278 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inn' + 'er_Unless_predicate_fails', + result='success', + message=None, + content=None, + time=0.0001544 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_wi' + 'th_other_Nullable', + result='success', + message=None, + content=None, + time=0.0004351 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_with_nullable_when_property_null_cross_property', + result='success', + message=None, + content=None, + time=0.0004635 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'When_the_objects_are_not_equal_then_the_validator_should_pass', + result='success', + message=None, + content=None, + time=0.0002334 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails', + result='success', + message=None, + content=None, + time=0.0016869 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.' + 'Should_be_valid_when_there_are_no_errors', + result='success', + message=None, + content=None, + time=3.35e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Default_error_code_should_be_class_name', + result='success', + message=None, + content=None, + time=0.0001555 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_' + 'validator_should_pass', + result='success', + message=None, + content=None, + time=0.0003149 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StandalonePropertyValidationTester.' + 'Should_validate_property_value_without_instance', + result='success', + message=None, + content=None, + time=0.0003758 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Includes_nested_property_using_expression', + result='success', + message=None, + content=None, + time=0.0005054 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: null)', + result='success', + message=None, + content=None, + time=0.0004724 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'MustAsync_should_create_AsyncPredicteValidator', + result='success', + message=None, + content=None, + time=0.0005833 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Length_should_create_ExactLengthValidator', + result='success', + message=None, + content=None, + time=0.0003392 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Can_access_expression_in_message_lambda_regex', + result='success', + message=None, + content=None, + time=0.0002767 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Should_set_default_error_when_validation_fails', + result='success', + message=None, + content=None, + time=0.0001047 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + 'tor_should_fail_for_strings', + result='success', + message=None, + content=None, + time=0.000234 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_in' + 'ner_Unless_predicate_is_satisfied', + result='success', + message=None, + content=None, + time=0.0019156 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.' + 'ToString_return_empty_string_when_there_is_no_error', + result='success', + message=None, + content=None, + time=0.0001348 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Allows_only_one_failure_to_match', + result='success', + message=None, + content=None, + time=0.0007083 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Executes_custom_rule_when_condition_true', + result='success', + message=None, + content=None, + time=0.0010053 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(' + 'age: 42, cardNumber: null)', + result='success', + message=None, + content=None, + time=0.0008635 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' + 'ian_latin_culture(cultureName: "bs-Latn-BA")', + result='success', + message=None, + content=None, + time=1.1e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + 'il_for_strings', + result='success', + message=None, + content=None, + time=0.0002161 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Validates_chained_property', + result='success', + message=None, + content=None, + time=0.0010483 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Runs_otherwise_conditions_for_WhenAsync', + result='success', + message=None, + content=None, + time=0.001126 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'When_async_condition_executed_for_each_instance_of_RuleForEach_condit' + 'ion_should_not_be_cached', + result='success', + message=None, + content=None, + time=0.0012985 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Length_should_create_MinimumLengthValidator', + result='success', + message=None, + content=None, + time=0.0002645 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Executes_in_rule_in_ruleset_and_default', + result='success', + message=None, + content=None, + time=0.0003802 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Should_set_default_error_when_validation_fails', + result='success', + message=None, + content=None, + time=0.0001044 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Can_use_custom_subclass_with_nongeneric_overload', + result='success', + message=None, + content=None, + time=0.0006978 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.Serializes_exception', + result='success', + message=None, + content=None, + time=0.007024 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Nested_async_conditions_with_Custom_rule', + result='success', + message=None, + content=None, + time=0.0007695 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'PreValidate_bypasses_nullcheck_on_instance', + result='success', + message=None, + content=None, + time=0.0002142 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'GreaterThan_should_create_GreaterThanValidator_with_explicit_value', + result='success', + message=None, + content=None, + time=0.0002587 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' + 'gex(email: "thisisaverylongstringcodeplex.com")', + result='success', + message=None, + content=None, + time=3.16e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WithMessage_should_override_error_message', + result='success', + message=None, + content=None, + time=0.000159 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Expected_error_code_check', + result='success', + message=None, + content=None, + time=0.0005874 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Understands_numeric_formats', + result='success', + message=None, + content=None, + time=0.0001847 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Should_override_property_name', + result='success', + message=None, + content=None, + time=0.0004755 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Adds_formatted_argument_and_custom_arguments', + result='success', + message=None, + content=None, + time=8.08e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Nested_conditions_with_Custom_rule', + result='success', + message=None, + content=None, + time=0.0004756 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_Custom_When_property_name_omitted_infers_property_name_nested', + result='success', + message=None, + content=None, + time=0.0006318 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Validates_property_using_expression', + result='success', + message=None, + content=None, + time=0.0013178 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' + 'sed(age: 17, cardNumber: "cardNumber")', + result='success', + message=None, + content=None, + time=0.0005838 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Extracts_property_from_expression', + result='success', + message=None, + content=None, + time=0.0005257 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Validates_collection_several_levels_deep_async', + result='success', + message=None, + content=None, + time=0.0010832 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level_and_async_validator_is_invoked_synchronously_l' + 'egacy', + result='success', + message=None, + content=None, + time=0.0005077 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_use_ordinal_comparison_by_default', + result='success', + message=None, + content=None, + time=0.0002273 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AssemblyScannerTester.' + 'Finds_validators_for_types', + result='success', + message=None, + content=None, + time=0.0002381 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Falls_back_to_parent_culture', + result='success', + message=None, + content=None, + time=0.0004487 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'ShouldHaveChildValidator_should_be_true', + result='success', + message=None, + content=None, + time=0.0012439 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_inv' + 'oked_synchronously', + result='success', + message=None, + content=None, + time=0.0003084 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_legacy', + result='success', + message=None, + content=None, + time=0.0001809 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_the_property_is_initialized_with_empty_string_then_the_validator' + '_should_fail', + result='success', + message=None, + content=None, + time=0.0001593 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AssemblyScannerTester.' + 'ForEach_iterates_over_types', + result='success', + message=None, + content=None, + time=0.0018574 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' + 'ian_culture(cultureName: "sr-Latn-RS")', + result='success', + message=None, + content=None, + time=1e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Nullable_object_with_condition_should_not_throw', + result='success', + message=None, + content=None, + time=0.001088 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_smaller_than_the_range_then_the_validator_should_fai' + 'l', + result='success', + message=None, + content=None, + time=0.0004057 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AccessorCacheTests.Equality_comparison_check', + result='success', + message=None, + content=None, + time=0.0021363 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "\\"Joe\\\\Blow\\"@example.com")', + result='success', + message=None, + content=None, + time=2.44e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Property_should_return_null_when_it_is_not_a_property_being_validated', + result='success', + message=None, + content=None, + time=0.0003637 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_severity_check', + result='success', + message=None, + content=None, + time=0.0046721 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_parent_index', + result='success', + message=None, + content=None, + time=0.0016135 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_if_overriding_validator_is_null', + result='success', + message=None, + content=None, + time=0.0001488 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_between_the_range_specified_then_the_validator_shoul' + 'd_pass', + result='success', + message=None, + content=None, + time=0.0002179 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Should_succeed_when_less_than_input', + result='success', + message=None, + content=None, + time=8.2e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_succeed_when_async_condition_matches', + result='success', + message=None, + content=None, + time=0.0015482 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Should_format_custom_message', + result='success', + message=None, + content=None, + time=0.0002244 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Should_allow_normal_rules_and_complex_property_on_same_property', + result='success', + message=None, + content=None, + time=0.0007508 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' + 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' + 'sed(age: 17, cardNumber: null)', + result='success', + message=None, + content=None, + time=0.0005804 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Collection_should_be_excluded', + result='success', + message=None, + content=None, + time=0.000544 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_' + 'value', + result='success', + message=None, + content=None, + time=0.0006133 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Executes_rules_in_default_ruleset_and_specific_ruleset', + result='success', + message=None, + content=None, + time=0.0004761 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Includes_all_rulesets', + result='success', + message=None, + content=None, + time=0.0008384 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Complex_validator_should_not_be_invoked_on_null_property', + result='success', + message=None, + content=None, + time=0.0001677 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_not_throw_when_there_are_not_vali' + 'dation_errors_ruleforeach', + result='success', + message=None, + content=None, + time=0.0008012 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Condition_should_work_with_chained_property', + result='success', + message=None, + content=None, + time=0.0002054 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_executed_synchronosuly_with_synchronous_collection_ro' + 'le', + result='success', + message=None, + content=None, + time=0.0003216 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_works_on_model_level_rules', + result='success', + message=None, + content=None, + time=0.0013494 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'CanValidateInstancesOfType_returns_false_when_comparing_against_some_' + 'other_type', + result='success', + message=None, + content=None, + time=5.13e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'To_and_from_properties_should_be_set_for_strings', + result='success', + message=None, + content=None, + time=6.7e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Collection_should_be_excluded', + result='success', + message=None, + content=None, + time=0.000525 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Ruleset_cascades_to_child_collection_validator', + result='success', + message=None, + content=None, + time=0.0008193 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Skips_null_items', + result='success', + message=None, + content=None, + time=0.0004786 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_is_null_cross_property', + result='success', + message=None, + content=None, + time=0.000466 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TransformTests.' + 'Transforms_collection_element_async', + result='success', + message=None, + content=None, + time=0.0012982 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' + 'nsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: )', + result='success', + message=None, + content=None, + time=0.0009423 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', + result='success', + message=None, + content=None, + time=0.0006236 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Cascade_mode_can_be_set_after_validator_instantiated_async_legacy', + result='success', + message=None, + content=None, + time=0.0013079 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'CanValidateInstancesOfType_returns_true_when_comparing_against_subcla' + 'ss', + result='success', + message=None, + content=None, + time=5.66e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_maxlength_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.000356 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_' + 'should_throw_an_exception', + result='success', + message=None, + content=None, + time=0.0017809 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_when_set_to_Continue_at_validator_level_async', + result='success', + message=None, + content=None, + time=0.0010564 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_state_check', + result='success', + message=None, + content=None, + time=0.0009751 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "!#$%&\'*+-/=?^_`|~@someDomain.com")', + result='success', + message=None, + content=None, + time=1.74e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0004472 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_succeed_when_condition_matches', + result='success', + message=None, + content=None, + time=0.0004142 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.WithMessage_works_inside_rulesets', + result='success', + message=None, + content=None, + time=0.0001237 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'NotNull_should_create_NotNullValidator', + result='success', + message=None, + content=None, + time=0.0002713 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidato' + 'rContext', + result='success', + message=None, + content=None, + time=0.0016185 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WithName_should_override_field_name', + result='success', + message=None, + content=None, + time=0.0002032 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + 'en_at_rule_level', + result='success', + message=None, + content=None, + time=0.000223 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainingValidatorsTester.' + 'Options_should_only_apply_to_current_validator', + result='success', + message=None, + content=None, + time=0.0002348 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "someName@some~domain.com")', + result='success', + message=None, + content=None, + time=1.66e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotNullTester.' + 'Not_null_validator_should_not_crash_with_non_nullable_value_type', + result='success', + message=None, + content=None, + time=0.0002735 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is' + '_false', + result='success', + message=None, + content=None, + time=0.0001183 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_if_property_name_is_null', + result='success', + message=None, + content=None, + time=0.0002522 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0005936 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'ToString_provides_error_details', + result='success', + message=None, + content=None, + time=0.0117391 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' + 'lidator_using_include_statement_with_lambda', + result='success', + message=None, + content=None, + time=0.000822 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Uses_named_parameters_to_validate_ruleset', + result='success', + message=None, + content=None, + time=0.0003616 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_validation_fails_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0002777 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Sync_condition_is_applied_to_async_validators', + result='success', + message=None, + content=None, + time=0.0006349 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "someName@someDomain\uffef.com")', + result='success', + message=None, + content=None, + time=1.57e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Should_store_property_to_compare', + result='success', + message=None, + content=None, + time=0.0003283 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' + 'ian_latin_culture(cultureName: "bs-Latn")', + result='success', + message=None, + content=None, + time=6.27e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'TestValidate_runs_async_throws', + result='success', + message=None, + content=None, + time=0.000854 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'WhenWithOnFailure_should_invoke_condition_on_inner_validator', + result='success', + message=None, + content=None, + time=0.0002855 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Nested_conditions_with_CustomAsync_rule', + result='success', + message=None, + content=None, + time=0.0027533 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Can_validate_using_validator_for_base_type', + result='success', + message=None, + content=None, + time=0.0014496 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_value_is_empty_string_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002511 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "\\"firstName.lastName\\"@someDomain.com")', + result='success', + message=None, + content=None, + time=1.67e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_state_check', + result='success', + message=None, + content=None, + time=0.0008908 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validat' + 'or_should_pass', + result='success', + message=None, + content=None, + time=0.000329 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Does_not_throw_when_valid', + result='success', + message=None, + content=None, + time=0.0002097 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Overrides_indexer_async', + result='success', + message=None, + content=None, + time=0.0011101 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_should_not_throw_when_property_has_collectio' + 'n_validators', + result='success', + message=None, + content=None, + time=0.0005756 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_be_valid_when_ignoring_trailing_zeroes', + result='success', + message=None, + content=None, + time=0.0015273 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'All_languages_should_be_loaded', + result='success', + message=None, + content=None, + time=0.0013878 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'When_the_validators_fail_then_validatorrunner_should_return_false', + result='success', + message=None, + content=None, + time=0.0001522 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_when_async_predicate_is_null', + result='success', + message=None, + content=None, + time=0.0001555 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_there_is_a_value_then_the_validator_should_pass', + result='success', + message=None, + content=None, + time=0.0002293 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'To_and_from_properties_should_be_set_for_strings', + result='success', + message=None, + content=None, + time=6.02e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Should_fail_when_equal_to_input', + result='success', + message=None, + content=None, + time=0.0002 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.Can_serialize_failure', + result='success', + message=None, + content=None, + time=9.95e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Unexpected_severity_check', + result='success', + message=None, + content=None, + time=0.0009091 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + 'idator_level_and_overriden_at_rule_level_legacy', + result='success', + message=None, + content=None, + time=0.0002332 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_is_empty_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0001049 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TransformTests.' + 'Transforms_property_value_to_another_type', + result='success', + message=None, + content=None, + time=0.0004268 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0002607 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'LessThan_should_create_LessThanValidator_with_lambda', + result='success', + message=None, + content=None, + time=0.0005323 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Can_use_property_with_include', + result='success', + message=None, + content=None, + time=0.0009319 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inne' + 'r_fails_but_the_outer_is_satisfied', + result='success', + message=None, + content=None, + time=0.0004874 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "__somename@example.com")', + result='success', + message=None, + content=None, + time=2.19e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NullTester.' + 'When_the_validator_passes_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002424 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' + 'gex(email: "first.last@test..co.uk")', + result='success', + message=None, + content=None, + time=3.34e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_' + 'the_inner_Unless_predicate_is_satisfied', + result='success', + message=None, + content=None, + time=0.0004845 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TrackingCollectionTests.Add_AddsItem', + result='success', + message=None, + content=None, + time=0.0006937 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Executes_correct_rule_when_using_property_with_include', + result='success', + message=None, + content=None, + time=0.001118 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AccessorCacheTests.' + 'Gets_member_for_nested_property', + result='success', + message=None, + content=None, + time=0.0001084 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Async_condition_should_work_with_complex_property', + result='success', + message=None, + content=None, + time=0.0023119 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.Should_ignore_blanks', + result='success', + message=None, + content=None, + time=4.72e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' + 'ding_object_to_validate_and_other_property_fails_validation', + result='success', + message=None, + content=None, + time=0.0014272 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'OnFailure_called_for_each_failed_rule_asyncAsync', + result='success', + message=None, + content=None, + time=0.0018854 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "\\"Abc@def\\"@example.com")', + result='success', + message=None, + content=None, + time=2.45e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_parent_index_async', + result='success', + message=None, + content=None, + time=0.0011019 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'Should_be_able_to_access_error_message_in_OnFailure', + result='success', + message=None, + content=None, + time=0.0005239 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Always_use_specific_language_with_string_source', + result='success', + message=None, + content=None, + time=0.0003219 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0005793 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Overrides_indexer', + result='success', + message=None, + content=None, + time=0.0012315 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_Should_support_nested_properties', + result='success', + message=None, + content=None, + time=0.0008523 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TrackingCollectionTests.' + 'When_Item_Added_Raises_ItemAdded', + result='success', + message=None, + content=None, + time=0.0008476 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.Should_compile_expression', + result='success', + message=None, + content=None, + time=0.0001225 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserStateTester.' + 'Can_Provide_state_for_item_in_collection', + result='success', + message=None, + content=None, + time=0.001113 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "testperson@gmail.com")', + result='success', + message=None, + content=None, + time=0.0163384 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomFailureActionTester.' + 'Invokes_custom_action_on_failure', + result='success', + message=None, + content=None, + time=0.0002284 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Condition_is_applied_to_single_validator_in_the_chain_when_ApplyCondi' + 'tionTo_set_to_CurrentValidator', + result='success', + message=None, + content=None, + time=0.0003365 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + 'ors', + result='success', + message=None, + content=None, + time=0.0023437 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Should_store_comparison_type', + result='success', + message=None, + content=None, + time=0.0003359 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'IsValidTests_CaseInsensitive_CaseCorrect', + result='success', + message=None, + content=None, + time=0.0001096 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'When_the_text_length_is_smaller_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0004689 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'Fails_for_ienumerable_that_doesnt_implement_ICollection', + result='success', + message=None, + content=None, + time=0.0012461 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Should_not_be_valid_for_case_insensitve_comparison', + result='success', + message=None, + content=None, + time=0.0004358 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_with_callback_accepting_derived', + result='success', + message=None, + content=None, + time=0.0006007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Nullable_object_with_async_condition_should_not_throw', + result='success', + message=None, + content=None, + time=0.0005033 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0004998 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_have_validation_error_details_whe' + 'n_thrown_ruleforeach', + result='success', + message=None, + content=None, + time=0.0012661 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEqualValidatorTests.' + 'Validates_across_properties', + result='success', + message=None, + content=None, + time=0.0003172 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' + 'ShouldHaveValidationError_Should_support_custom_propertynameresolver', + result='success', + message=None, + content=None, + time=0.0007316 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fail' + 's_but_the_outer_is_satisfied', + result='success', + message=None, + content=None, + time=0.0001804 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InlineValidatorTester.' + 'Uses_inline_validator_to_build_rules', + result='success', + message=None, + content=None, + time=0.001679 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_is_null_cross_property', + result='success', + message=None, + content=None, + time=0.0004822 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Should_use_last_supplied_severity', + result='success', + message=None, + content=None, + time=0.0006834 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Can_use_indexer_in_string_message', + result='success', + message=None, + content=None, + time=0.000562 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Runs_otherwise_conditions_for_UnlessAsync', + result='success', + message=None, + content=None, + time=0.0041051 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.Should_add_errors', + result='success', + message=None, + content=None, + time=9.17e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildvalidator_throws_when_collection_property_Does_not_hav' + 'e_child_validator', + result='success', + message=None, + content=None, + time=0.0003538 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'OverridePropertyName_with_lambda_should_override_property_name', + result='success', + message=None, + content=None, + time=0.0003832 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Executes_all_rules', + result='success', + message=None, + content=None, + time=0.0007106 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Calling_ValidateAsync_should_delegate_to_underlying_sync_validator', + result='success', + message=None, + content=None, + time=0.0735933 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Does_not_execute_customasync_Rule_when_async_condition_false', + result='success', + message=None, + content=None, + time=0.0008363 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_message_check', + result='success', + message=None, + content=None, + time=0.0006922 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.Fails_for_array', + result='success', + message=None, + content=None, + time=0.000465 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_be_valid', + result='success', + message=None, + content=None, + time=0.0003178 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorDescriptorTester.' + 'Gets_validators_for_property', + result='success', + message=None, + content=None, + time=0.0001789 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomMessageFormatTester.' + 'Uses_custom_delegate_for_building_message_only_for_specific_validator', + result='success', + message=None, + content=None, + time=0.0003785 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + 'ors_using_strings', + result='success', + message=None, + content=None, + time=0.0001753 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Correctly_gets_collection_indices_async', + result='success', + message=None, + content=None, + time=0.000699 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_to_second_validator_when_first_validator_succeed' + 's_and_cascade_set_to_stop_legacy', + result='success', + message=None, + content=None, + time=0.0002155 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_larger_than_the_lambda_range_then_the_validator_shou' + 'ld_fail', + result='success', + message=None, + content=None, + time=0.0003557 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_inheritance_async', + result='success', + message=None, + content=None, + time=0.0012652 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_custom_uses_empty_property_name_for_model_level_rule', + result='success', + message=None, + content=None, + time=0.0002515 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.Comparison_type', + result='success', + message=None, + content=None, + time=8.94e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Correctly_assigns_default_localized_error_message', + result='success', + message=None, + content=None, + time=0.0011647 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Gets_translation_for_specific_culture', + result='success', + message=None, + content=None, + time=9.89e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0005079 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PropertyChainTests.Creates_from_expression', + result='success', + message=None, + content=None, + time=0.0001276 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'Min_and_max_properties_should_be_set', + result='success', + message=None, + content=None, + time=7.07e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.Populates_errors', + result='success', + message=None, + content=None, + time=0.0003478 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'OverridePropertyName_should_override_property_name', + result='success', + message=None, + content=None, + time=0.0001676 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes', + result='success', + message=None, + content=None, + time=0.0004372 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedNameTester.Uses_localized_name', + result='success', + message=None, + content=None, + time=0.0003024 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'IsValidTests_CaseSensitive_CaseIncorrect', + result='success', + message=None, + content=None, + time=0.0001363 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Executes_customasync_rule_when_condition_true', + result='success', + message=None, + content=None, + time=0.0014208 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'MustAsync_should_not_throw_InvalidCastException', + result='success', + message=None, + content=None, + time=0.0104516 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0010333 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predic' + 'ate_is_false', + result='success', + message=None, + content=None, + time=0.0004089 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' + '(withoutErrMsg: "bar", errMessages: ["foo", "bar"])', + result='success', + message=None, + content=None, + time=0.0001797 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Does_not_execute_custom_Rule_when_async_condition_false', + result='success', + message=None, + content=None, + time=0.000904 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda', + result='success', + message=None, + content=None, + time=0.0005095 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_there_is_a_value_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0001989 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' + 'for_strings', + result='success', + message=None, + content=None, + time=0.0001329 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_model_async_throws', + result='success', + message=None, + content=None, + time=0.0011585 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' + 'ian_latin_culture(cultureName: "bs")', + result='success', + message=None, + content=None, + time=0.000661 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Condition_should_work_with_child_collection', + result='success', + message=None, + content=None, + time=0.0007357 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + 'ld_pass_for_strings', + result='success', + message=None, + content=None, + time=0.0002261 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + 'tor_should_fail', + result='success', + message=None, + content=None, + time=0.0002263 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'PropertyDescription_should_return_custom_property_name', + result='success', + message=None, + content=None, + time=0.0006558 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExtensionTester.' + 'Should_return_null_for_non_member_expressions', + result='success', + message=None, + content=None, + time=0.0001368 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Property_should_return_property_being_validated', + result='success', + message=None, + content=None, + time=8.16e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Condition_should_work_with_child_collection', + result='success', + message=None, + content=None, + time=0.0003728 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_succeed_when_condition_does_not_match', + result='success', + message=None, + content=None, + time=0.0002873 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Adds_PropertyName_to_message', + result='success', + message=None, + content=None, + time=7.79e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validat' + 'or_should_pass', + result='success', + message=None, + content=None, + time=0.0002191 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "firstName.lastName@someDomain.com")', + result='success', + message=None, + content=None, + time=1.91e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + 'e_level', + result='success', + message=None, + content=None, + time=0.0002008 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_' + 'validator_should_pass', + result='success', + message=None, + content=None, + time=0.0003377 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + 'tor_should_pass', + result='success', + message=None, + content=None, + time=0.0002097 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "someName@a@b.com")', + result='success', + message=None, + content=None, + time=2.27e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + result='success', + message=None, + content=None, + time=0.0002468 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Dependent_rules_inside_when', + result='success', + message=None, + content=None, + time=0.00114 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Rule_for_a_non_memberexpression_should_not_generate_property_name', + result='success', + message=None, + content=None, + time=0.0003533 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_' + 'is_true', + result='success', + message=None, + content=None, + time=0.000946 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_to_second_validator_when_first_validator_succeed' + 's_and_cascade_set_to_stop_async', + result='success', + message=None, + content=None, + time=0.000987 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Ruleset_selection_should_not_cascade_downwards_when_set_on_property', + result='success', + message=None, + content=None, + time=0.0009641 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + 'tor_should_fail', + result='success', + message=None, + content=None, + time=0.0002839 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Separate_validation_on_chained_property_valid', + result='success', + message=None, + content=None, + time=0.0002025 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync', + result='success', + message=None, + content=None, + time=0.0015404 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHAveValidationError_should_not_throw_When_there_are_no_error' + 's_with_preconstructed_object', + result='success', + message=None, + content=None, + time=0.000721 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + 'tor_should_pass', + result='success', + message=None, + content=None, + time=0.0001963 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + 'idator_level_and_overriden_at_rule_level', + result='success', + message=None, + content=None, + time=0.0001937 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.Adds_value_to_message', + result='success', + message=None, + content=None, + time=5.83e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.TestValidate_runs_async', + result='success', + message=None, + content=None, + time=0.0007477 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level', + result='success', + message=None, + content=None, + time=0.000188 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Condition_is_applied_to_all_validators_in_the_chain', + result='success', + message=None, + content=None, + time=0.0003098 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_nullable_when_property_not_null_cross_property', + result='success', + message=None, + content=None, + time=0.0005453 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_tru' + 'e', + result='success', + message=None, + content=None, + time=0.0001524 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Dependent_rules_inside_ruleset', + result='success', + message=None, + content=None, + time=0.0004097 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + 'tor_should_pass_for_strings', + result='success', + message=None, + content=None, + time=0.0001956 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'Perserves_property_chain_using_custom', + result='success', + message=None, + content=None, + time=0.0008351 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' + '(withoutErrMsg: "bar", errMessages: [])', + result='success', + message=None, + content=None, + time=0.0007346 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Empty_should_create_EmptyValidator', + result='success', + message=None, + content=None, + time=0.0002993 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'ShouldHaveChildValidator_works_with_Include', + result='success', + message=None, + content=None, + time=0.0002922 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'ValidationException_provides_correct_message_when_appendDefaultMessag' + 'e_false', + result='success', + message=None, + content=None, + time=0.0001514 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExactLengthValidatorTester.' + 'When_the_text_is_an_exact_length_the_validator_should_pass', + result='success', + message=None, + content=None, + time=0.0002146 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'ValidationException_provides_correct_message_when_appendDefaultMessag' + 'e_true', + result='success', + message=None, + content=None, + time=9.92e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'PropertyDescription_should_return_property_name_split', + result='success', + message=None, + content=None, + time=0.0004031 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Should_fail_when_less_than_input', + result='success', + message=None, + content=None, + time=0.0003948 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_Custom_within_ruleset', + result='success', + message=None, + content=None, + time=0.0005423 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'IsValidTests_CaseInsensitive_CaseIncorrect', + result='success', + message=None, + content=None, + time=0.0002316 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'RuleForeach_with_null_instances', + result='success', + message=None, + content=None, + time=0.0019478 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'When_the_validators_fail_then_the_errors_Should_be_accessible_via_the' + '_errors_property', + result='success', + message=None, + content=None, + time=0.00017 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.Should_set_custom_error', + result='success', + message=None, + content=None, + time=0.0001428 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_async', + result='success', + message=None, + content=None, + time=0.0010423 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Nested_dependent_rules_inside_ruleset', + result='success', + message=None, + content=None, + time=0.0005315 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Invokes_dependent_rule_if_parent_rule_passes', + result='success', + message=None, + content=None, + time=0.0003376 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Should_work_with_top_level_collection_validator', + result='success', + message=None, + content=None, + time=0.0007124 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0003426 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "$A12345@example.com")', + result='success', + message=None, + content=None, + time=2.26e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Must_should_create_PredicateValidator_with_PropertyValidatorContext', + result='success', + message=None, + content=None, + time=0.0042745 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.SimpleFieldSet', + result='success', + message=None, + content=None, + time=0.0004092 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0005007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Can_Provide_severity_for_item_in_collection', + result='success', + message=None, + content=None, + time=0.0007448 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'NotEqual_should_create_NotEqualValidator_with_explicit_value', + result='success', + message=None, + content=None, + time=0.0003685 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_set_custom_property_name', + result='success', + message=None, + content=None, + time=0.0003705 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_not_null_cross_property', + result='success', + message=None, + content=None, + time=0.000283 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0002167 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail' + '_for_strings', + result='success', + message=None, + content=None, + time=0.0002392 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' + 'Scale_precision_should_be_valid_when_they_are_equal', + result='success', + message=None, + content=None, + time=0.000383 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.Throws_exception_async', + result='success', + message=None, + content=None, + time=0.0004271 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + 'tor_should_fail_for_strings', + result='success', + message=None, + content=None, + time=0.0009095 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Includes_all_rulesets_async', + result='success', + message=None, + content=None, + time=0.0010633 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Should_succeed_on_case_insensitive_comparison', + result='success', + message=None, + content=None, + time=0.0002418 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_should_throw_when_property_has_a_different_c' + 'hild_validator', + result='success', + message=None, + content=None, + time=0.0005867 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChildRulesTests.' + 'Can_define_nested_rules_for_collection', + result='success', + message=None, + content=None, + time=0.0016096 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Should_not_scramble_property_name_when_using_collection_validators_se' + 'veral_levels_deep', + result='success', + message=None, + content=None, + time=0.0003437 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure', + result='success', + message=None, + content=None, + time=0.0001706 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Can_specify_condition_for_individual_collection_elements', + result='success', + message=None, + content=None, + time=0.0004461 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PredicateValidatorTester.' + 'Should_fail_when_predicate_returns_false', + result='success', + message=None, + content=None, + time=9.17e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EnumValidatorTests.' + 'Flags_enum_valid_when_using_bitwise_value', + result='success', + message=None, + content=None, + time=0.0192413 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + 'ors', + result='success', + message=None, + content=None, + time=0.0002691 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationErrorFor_takes_account_of_rulesets', + result='success', + message=None, + content=None, + time=0.0007521 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.' + 'Combines_rulesets_and_explicit_properties', + result='success', + message=None, + content=None, + time=0.000997 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_against_property', + result='success', + message=None, + content=None, + time=0.0012022 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' + 'ld_validator_and_expecting_a_basetype', + result='success', + message=None, + content=None, + time=0.0004634 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.Can_replace_message', + result='success', + message=None, + content=None, + time=0.0002451 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0003829 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.Validates_against_property', + result='success', + message=None, + content=None, + time=0.0002933 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0113406 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_validate_single_Field', + result='success', + message=None, + content=None, + time=0.0002444 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Runs_otherwise_conditons_for_Unless', + result='success', + message=None, + content=None, + time=0.0008404 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "someName")', + result='success', + message=None, + content=None, + time=2.3e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.Equality', + result='success', + message=None, + content=None, + time=0.0010753 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.SimplePropertySet', + result='success', + message=None, + content=None, + time=0.0004415 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_value_is_null_validator_should_pass', + result='success', + message=None, + content=None, + time=0.0002377 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Can_access_colletion_index_async', + result='success', + message=None, + content=None, + time=0.0007781 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Chained_validator_should_not_be_invoked_on_null_property', + result='success', + message=None, + content=None, + time=0.000121 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_with_callback_accepting_derived_async', + result='success', + message=None, + content=None, + time=0.0048985 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Can_directly_validate_multiple_fields_of_same_type', + result='success', + message=None, + content=None, + time=0.0034497 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail' + '_for_strings', + result='success', + message=None, + content=None, + time=0.0002377 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "1234@someDomain.com")', + result='success', + message=None, + content=None, + time=3.07e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Does_not_validate_other_property_using_expression', + result='success', + message=None, + content=None, + time=0.0003211 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'When_validation_fails_the_default_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0001968 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_ruleset_async', + result='success', + message=None, + content=None, + time=0.0016248 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_collection_async', + result='success', + message=None, + content=None, + time=0.0040405 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approac' + 'h', + result='success', + message=None, + content=None, + time=0.0007776 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainingValidatorsTester.' + 'Should_create_multiple_validators', + result='success', + message=None, + content=None, + time=0.0003311 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_' + 'preconstructed_object', + result='success', + message=None, + content=None, + time=0.0023915 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "someName@1234.com")', + result='success', + message=None, + content=None, + time=1.58e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserSeverityTester.' + 'Defaults_user_severity_to_error', + result='success', + message=None, + content=None, + time=0.0001704 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'OnFailure_called_for_each_failed_rule', + result='success', + message=None, + content=None, + time=0.000567 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.Validates_ruleset', + result='success', + message=None, + content=None, + time=0.0009577 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'RuleSet_can_be_used_inside_async_condition', + result='success', + message=None, + content=None, + time=0.0011754 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Equal_should_create_EqualValidator_with_explicit_value', + result='success', + message=None, + content=None, + time=0.0003343 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.' + 'Adds_argument_and_custom_arguments', + result='success', + message=None, + content=None, + time=6.99e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Validates_collection_asynchronously', + result='success', + message=None, + content=None, + time=0.0014053 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Uses_regex_object', + result='success', + message=None, + content=None, + time=0.0004951 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_if_message_is_null', + result='success', + message=None, + content=None, + time=0.0001371 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'When_condition_executed_for_each_instance_of_RuleForEach_condition_sh' + 'ould_not_be_cached', + result='success', + message=None, + content=None, + time=0.0006033 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Uses_error_code_as_localization_key', + result='success', + message=None, + content=None, + time=0.0003393 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_is_null_then_the_validator_should_pass', + result='success', + message=None, + content=None, + time=9.28e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002354 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' + 'bda_with_other_Nullable', + result='success', + message=None, + content=None, + time=0.0019589 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.Name', + result='success', + message=None, + content=None, + time=0.0004323 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_value_is_Default_for_type_validator_should_pass_int', + result='success', + message=None, + content=None, + time=0.0003963 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "TestPerson@gmail.com")', + result='success', + message=None, + content=None, + time=8.05e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.Throws_exception', + result='success', + message=None, + content=None, + time=0.0004234 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' + 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' + '(age: 17, cardNumber: "cardNumber")', + result='success', + message=None, + content=None, + time=0.0006412 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.StringEnumValidatorTests.' + 'IsValidTests_CaseSensitive_CaseCorrect', + result='success', + message=None, + content=None, + time=0.0012556 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Can_access_expression_in_message_lambda', + result='success', + message=None, + content=None, + time=0.0002801 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' + 'etcore_compatible(email: "\xa0@someDomain.com")', + result='success', + message=None, + content=None, + time=1.73e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Async_inside_dependent_rules_when_parent_rule_not_async', + result='success', + message=None, + content=None, + time=0.9925303 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' + 'nsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: ' + 'AnotherInt Test Message)', + result='success', + message=None, + content=None, + time=6.28e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Adding_a_validator_should_return_builder', + result='success', + message=None, + content=None, + time=7.14e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_nullable_with_nullable_property', + result='success', + message=None, + content=None, + time=0.0003854 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'When_the_Validators_pass_then_the_validatorRunner_should_return_true', + result='success', + message=None, + content=None, + time=0.0001471 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'When_the_text_matches_the_lambda_regex_regular_expression_then_the_va' + 'lidator_should_pass', + result='success', + message=None, + content=None, + time=0.0001215 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MessageFormatterTests.Understands_date_formats', + result='success', + message=None, + content=None, + time=0.0001748 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.MemberAccessorTests.ComplexPropertyGet', + result='success', + message=None, + content=None, + time=0.0009033 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "\\"Fred Bloggs\\"@example.com")', + result='success', + message=None, + content=None, + time=2.58e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Length_should_create_LengthValidator', + result='success', + message=None, + content=None, + time=0.0002207 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Creates_validator_using_context_from_property_value', + result='success', + message=None, + content=None, + time=0.0011184 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExtensionTester.' + 'SplitPascalCase_should_return_null_when_input_is_null', + result='success', + message=None, + content=None, + time=3.14e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExtensionTester.' + 'Should_split_pascal_cased_member_name', + result='success', + message=None, + content=None, + time=0.0006315 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LocalisedMessagesTester.' + 'Formats_string_with_placeholders_when_you_cant_edit_the_string', + result='success', + message=None, + content=None, + time=0.0002285 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.UserStateTester.' + 'Stores_user_state_against_validation_failure', + result='success', + message=None, + content=None, + time=0.0011142 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ChainedValidationTester.' + 'Chained_validator_descriptor', + result='success', + message=None, + content=None, + time=0.0002971 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'RuleForEach_async_RunsTasksSynchronously', + result='success', + message=None, + content=None, + time=0.0236497 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'MemberNameValidatorSelector_returns_true_when_property_name_matches', + result='success', + message=None, + content=None, + time=0.0002975 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Condition_should_work_with_complex_property', + result='success', + message=None, + content=None, + time=0.0004359 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.TransformTests.Transforms_property_value', + result='success', + message=None, + content=None, + time=0.0003746 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_throw_when_there_are_validation_e' + 'rrors_ruleforeach', + result='success', + message=None, + content=None, + time=0.0009397 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_validate_public_Field', + result='success', + message=None, + content=None, + time=0.0003435 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' + 'ld_validator', + result='success', + message=None, + content=None, + time=0.0022892 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Can_validate_collection_using_validator_for_base_type', + result='success', + message=None, + content=None, + time=0.0004768 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Comparison_type', + result='success', + message=None, + content=None, + time=0.0002012 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_async_throws', + result='success', + message=None, + content=None, + time=0.001366 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_t' + 'he_inner_Unless_predicate_fails', + result='success', + message=None, + content=None, + time=0.0029811 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' + 'Collection_should_be_explicitly_included_with_expression', + result='success', + message=None, + content=None, + time=0.0006578 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + 'alidator_level', + result='success', + message=None, + content=None, + time=0.0002738 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' + 'Should_succeed_when_equal_to_input', + result='success', + message=None, + content=None, + time=7.26e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' + 'ding_object_to_validate', + result='success', + message=None, + content=None, + time=0.0031438 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'MustAsync_should_create_AsyncPredicateValidator_with_context', + result='success', + message=None, + content=None, + time=0.0001972 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Async_condition_is_applied_to_all_validators_in_the_chain_when_execut' + 'ed_synchronously', + result='success', + message=None, + content=None, + time=0.0005363 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "testperson+label@gmail.com")', + result='success', + message=None, + content=None, + time=2.75e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'New_CustomAsync_within_ruleset', + result='success', + message=None, + content=None, + time=0.0008872 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Executes_rule_for_each_item_in_collection', + result='success', + message=None, + content=None, + time=0.0003186 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Cascade_mode_can_be_set_after_validator_instantiated', + result='success', + message=None, + content=None, + time=0.0001778 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_async_legacy', + result='success', + message=None, + content=None, + time=0.0008751 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomValidatorTester.' + 'Runs_async_rule_synchronously_when_validator_invoked_synchronously', + result='success', + message=None, + content=None, + time=0.0006956 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + 'verriden_at_rule_level_legacy', + result='success', + message=None, + content=None, + time=0.00023 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Condition_can_be_used_inside_ruleset', + result='success', + message=None, + content=None, + time=0.0005964 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Does_not_throw_when_valid_and_a_ruleset_async', + result='success', + message=None, + content=None, + time=0.0003892 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Comparison_property_uses_custom_resolver', + result='success', + message=None, + content=None, + time=0.0004008 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' + 'netcore_compatible(email: "")', + result='success', + message=None, + content=None, + time=3.14e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldNotHaveValidationError_async_throws', + result='success', + message=None, + content=None, + time=0.0022945 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + 'en_at_rule_level_async', + result='success', + message=None, + content=None, + time=0.0011028 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'Uses_useful_error_message_when_used_on_non_property', + result='success', + message=None, + content=None, + time=0.0004356 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' + 'for_strings', + result='success', + message=None, + content=None, + time=0.0001562 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidateAndThrowTester.' + 'Throws_exception_with_a_ruleset_async', + result='success', + message=None, + content=None, + time=0.0011925 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EqualValidatorTests.' + 'Should_succeed_on_case_insensitive_comparison_using_expression', + result='success', + message=None, + content=None, + time=0.0002538 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.' + 'When_runs_outside_RuleForEach_loop', + result='success', + message=None, + content=None, + time=0.0004935 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0002465 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ForEachRuleTests.Should_override_property_name', + result='success', + message=None, + content=None, + time=0.0003821 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmptyTester.' + 'When_value_is_empty_string_validator_should_pass', + result='success', + message=None, + content=None, + time=0.0002019 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_if_overriding_validator_provider_is_null', + result='success', + message=None, + content=None, + time=0.0001555 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'Equal_should_create_EqualValidator_with_lambda', + result='success', + message=None, + content=None, + time=0.0006079 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotNullTester.' + 'When_the_validator_fails_the_error_message_should_be_set', + result='success', + message=None, + content=None, + time=0.0002246 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_i' + 's_true_and_all_individual_rules_are_satisfied', + result='success', + message=None, + content=None, + time=0.0004461 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.Should_build_property_name', + result='success', + message=None, + content=None, + time=5.59e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CreditCardValidatorTests.' + 'When_validation_fails_the_default_error_should_be_set', + result='success', + message=None, + content=None, + time=0.0017932 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', + result='success', + message=None, + content=None, + time=0.0003029 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'ScalePrecision_should_create_ScalePrecisionValidator', + result='success', + message=None, + content=None, + time=0.0020009 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidationResultTests.' + 'ToString_return_error_messages_with_newline_as_separator', + result='success', + message=None, + content=None, + time=0.0003538 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Validates_child_validator_asynchronously', + result='success', + message=None, + content=None, + time=0.0037362 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LengthValidatorTests.' + 'When_the_text_is_smaller_than_the_lambda_range_then_the_validator_sho' + 'uld_fail', + result='success', + message=None, + content=None, + time=0.0003612 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Rules_not_invoked_when_inverse_shared_condition_does_not_match', + result='success', + message=None, + content=None, + time=0.0009262 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + 'ld_pass', + result='success', + message=None, + content=None, + time=0.0003572 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ConditionTests.' + 'Validation_should_fail_when_async_condition_matches', + result='success', + message=None, + content=None, + time=0.0007917 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Can_use_indexer_in_string_message_inverse', + result='success', + message=None, + content=None, + time=0.000553 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExtensionTester.' + 'Should_extract_member_from_member_expression', + result='success', + message=None, + content=None, + time=0.000113 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ComplexValidationTester.' + 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + 'ors_using_strings', + result='success', + message=None, + content=None, + time=0.0008307 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_with_nullable_when_property_not_null', + result='success', + message=None, + content=None, + time=0.0002586 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Does_not_validate_other_property', + result='success', + message=None, + content=None, + time=0.0004189 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleBuilderTests.' + 'Should_throw_if_validator_is_null', + result='success', + message=None, + content=None, + time=0.0001458 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AccessorCacheTests.Gets_accessor', + result='success', + message=None, + content=None, + time=0.0003872 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_continues_when_set_to_Continue_at_validator_level', + result='success', + message=None, + content=None, + time=0.0002021 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' + 'Uses_lazily_loaded_expression', + result='success', + message=None, + content=None, + time=0.0003176 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanValidatorTester.' + 'Validates_with_nullable_when_property_is_null_cross_property', + result='success', + message=None, + content=None, + time=0.0002669 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LessThanValidatorTester.' + 'Validates_nullable_with_nullable_property', + result='success', + message=None, + content=None, + time=0.000773 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' + 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + 'ld_pass_for_strings', + result='success', + message=None, + content=None, + time=0.00022 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.InheritanceValidatorTest.' + 'Validates_with_callback', + result='success', + message=None, + content=None, + time=0.0012889 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.OnFailureTests.' + 'WhenWithOnFailure_should_invoke_condition_on_async_inner_validator', + result='success', + message=None, + content=None, + time=0.000634 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Should_succeed_when_equal_to_input', + result='success', + message=None, + content=None, + time=7.8e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trai' + 'ling_zeros', + result='success', + message=None, + content=None, + time=0.0002146 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.LanguageManagerTests.' + 'Always_use_specific_language', + result='success', + message=None, + content=None, + time=6.66e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.SharedConditionTests.' + 'Does_not_execute_custom_Rule_when_condition_false', + result='success', + message=None, + content=None, + time=0.0008838 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'ShouldHaveValidationError_preconstructed_object_does_not_throw_for_un' + 'writable_property', + result='success', + message=None, + content=None, + time=0.0008894 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorTesterTester.' + 'Model_level_check_fails_if_no_model_level_failures', + result='success', + message=None, + content=None, + time=0.0005599 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.' + 'Should_throw_when_rule_is_null', + result='success', + message=None, + content=None, + time=0.0001178 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' + 'nsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResul' + 't: AnotherInt Test Message)', + result='success', + message=None, + content=None, + time=5.78e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' + 'x(email: "first.last@test.co.uk")', + result='success', + message=None, + content=None, + time=2.26e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RuleDependencyTests.' + 'Nested_dependent_rules_inside_ruleset_inside_method', + result='success', + message=None, + content=None, + time=0.0007514 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.RulesetTests.Executes_multiple_rulesets', + result='success', + message=None, + content=None, + time=0.0017933 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NullTester.' + 'Passes_when_nullable_value_type_is_null', + result='success', + message=None, + content=None, + time=0.0002748 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ValidatorSelectorTests.' + 'Includes_nested_property', + result='success', + message=None, + content=None, + time=0.0006524 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.PredicateValidatorTester.' + 'Should_succeed_when_predicate_returns_true', + result='success', + message=None, + content=None, + time=7.66e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NotEmptyTester.' + 'When_value_is_whitespace_validation_should_fail', + result='success', + message=None, + content=None, + time=0.0002178 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' + 'When_the_validator_fails_the_error_message_should_be_set_for_strings', + result='success', + message=None, + content=None, + time=0.0002668 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.NullTester.' + 'NullValidator_should_fail_if_value_has_value', + result='success', + message=None, + content=None, + time=0.0002075 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CustomFailureActionTester.' + 'Passes_object_being_validated_to_action', + result='success', + message=None, + content=None, + time=0.000852 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' + 'NotEmpty_should_create_NotEmptyValidator', + result='success', + message=None, + content=None, + time=0.0002803 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.CascadingFailuresTester.' + 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + 'alidator_level_legacy', + result='success', + message=None, + content=None, + time=0.0002253 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' + 'gex(email: "")', + result='success', + message=None, + content=None, + time=0.0003859 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/FluentValidation.Tests.trx', + test_file=None, + line=None, + class_name='', + test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' + 'Validates_with_nullable_when_property_is_null', + result='success', + message=None, + content=None, + time=0.0002299 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.trx b/python/test/files/trx/nunit/FluentValidation.Tests.trx new file mode 100644 index 00000000..4ac6323c --- /dev/null +++ b/python/test/files/trx/nunit/FluentValidation.Tests.trx @@ -0,0 +1,4662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [xUnit.net 00:00:00.2837788] Discovering: FluentValidation.Tests +[xUnit.net 00:00:00.5914704] Discovered: FluentValidation.Tests +[xUnit.net 00:00:00.7008540] Starting: FluentValidation.Tests +[xUnit.net 00:00:00.8623084] Manual benchmark +Test 'FluentValidation.Tests.AccessorCacheTests.Benchmark' was skipped in the test run. +[xUnit.net 00:00:04.0635438] Finished: FluentValidation.Tests + + + + + [xUnit.net 00:00:00.8621784] FluentValidation.Tests.AccessorCacheTests.Benchmark [SKIP] + + + + \ No newline at end of file diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml new file mode 100644 index 00000000..4986e390 --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml @@ -0,0 +1,24 @@ + + + + + Expected: False + But was: True + at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 + + + + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 + + + Expected: True + But was: False + at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 + + + + + diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.results b/python/test/files/trx/nunit/NUnit-net461-sample.results new file mode 100644 index 00000000..0ba86bb6 --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-net461-sample.results @@ -0,0 +1,90 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=6, + suite_skipped=1, + suite_failures=3, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestTheory(False)', + result='failure', + message=' Expected: False\r\n But was: True\r\n', + content=' Expected: False\r\n But was: True\r\n at ' + 'SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 25\r\n', + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SkipTest', + result='success', + message=None, + content=None, + time=0.0 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestTheory(True)', + result='success', + message=None, + content=None, + time=0.018 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestThrowingException', + result='failure', + message='System.Exception : Pretty good exception', + content='System.Exception : Pretty good exception at ' + 'SampleProject.TestService.GetException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject\\TestService' + '.cs:line 19\r\n at ' + 'SampleProject.NUnit.TestServiceTests.TestThrowingException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 50', + time=0.005 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='FailTest', + result='failure', + message=' Expected: True\r\n But was: False\r\n', + content=' Expected: True\r\n But was: False\r\n at ' + 'SampleProject.NUnit.TestServiceTests.FailTest() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 61\r\n', + time=0.111 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='PassingTest', + result='success', + message=None, + content=None, + time=0.002 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.trx b/python/test/files/trx/nunit/NUnit-net461-sample.trx new file mode 100644 index 00000000..64ed93b6 --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-net461-sample.trx @@ -0,0 +1,123 @@ + + + + + + + + + + Running SampleProject.Tests.NUnit tests + + Expected: False + But was: True + + at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 + + + + + + + Ignore test + + Ignore test + + + + + + Running SampleProject.Tests.NUnit tests + + + + + Running SampleProject.Tests.NUnit tests + + System.Exception : Pretty good exception + at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 + + + + + + Running SampleProject.Tests.NUnit tests +This test will fail + + Expected: True + But was: False + + at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 + + + + + + + Running SampleProject.Tests.NUnit tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NUnit Adapter 3.17.0.0: Test execution started +Running all tests in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\bin\Debug\net461\SampleProject.NUnit.dll + NUnit3TestExecutor discovered 6 of 6 NUnit test cases +Running SampleProject.Tests.NUnit tests +This test will fail + +Running SampleProject.Tests.NUnit tests + +SkipTest: Ignore test +Running SampleProject.Tests.NUnit tests + +Running SampleProject.Tests.NUnit tests + +Running SampleProject.Tests.NUnit tests + +NUnit Adapter 3.17.0.0: Test execution complete +Test 'SkipTest' was skipped in the test run. + + + + \ No newline at end of file diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml new file mode 100644 index 00000000..edb5cd29 --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml @@ -0,0 +1,24 @@ + + + + + Expected: True + But was: False + at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 + + + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 + + + Expected: False + But was: True + at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 + + + + + + diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results new file mode 100644 index 00000000..d1f29365 --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results @@ -0,0 +1,90 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=6, + suite_skipped=1, + suite_failures=3, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='FailTest', + result='failure', + message=' Expected: True\r\n But was: False\r\n', + content=' Expected: True\r\n But was: False\r\n at ' + 'SampleProject.NUnit.TestServiceTests.FailTest() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 61\r\n', + time=0.059742 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SkipTest', + result='success', + message=None, + content=None, + time=0.000447 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestThrowingException', + result='failure', + message='System.Exception : Pretty good exception', + content='System.Exception : Pretty good exception at ' + 'SampleProject.TestService.GetException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject\\TestService' + '.cs:line 19\r\n at ' + 'SampleProject.NUnit.TestServiceTests.TestThrowingException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 50', + time=0.003151 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestTheory(False)', + result='failure', + message=' Expected: False\r\n But was: True\r\n', + content=' Expected: False\r\n But was: True\r\n at ' + 'SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.NUnit' + '\\TestServiceTests.cs:line 25\r\n', + time=0.001997 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='TestTheory(True)', + result='success', + message=None, + content=None, + time=0.0113449 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/NUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='PassingTest', + result='success', + message=None, + content=None, + time=0.0010839 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.trx b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.trx new file mode 100644 index 00000000..65775c3c --- /dev/null +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.trx @@ -0,0 +1,123 @@ + + + + + + + + + + Running SampleProject.Tests.NUnit tests +This test will fail + + Expected: True + But was: False + + at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 + + + + + + + Ignore test + + Ignore test + + + + + + Running SampleProject.Tests.NUnit tests + + System.Exception : Pretty good exception + at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 + + + + + + Running SampleProject.Tests.NUnit tests + + Expected: False + But was: True + + at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 + + + + + + + Running SampleProject.Tests.NUnit tests + + + + + Running SampleProject.Tests.NUnit tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NUnit Adapter 3.17.0.0: Test execution started +Running all tests in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\bin\Debug\netcoreapp3.1\SampleProject.NUnit.dll + NUnit3TestExecutor discovered 6 of 6 NUnit test cases +Running SampleProject.Tests.NUnit tests +This test will fail + +Running SampleProject.Tests.NUnit tests + +SkipTest: Ignore test +Running SampleProject.Tests.NUnit tests + +Running SampleProject.Tests.NUnit tests + +Running SampleProject.Tests.NUnit tests + +NUnit Adapter 3.17.0.0: Test execution complete +Test 'SkipTest' was skipped in the test run. + + + + \ No newline at end of file diff --git a/python/test/files/trx/nunit/SilentNotes.junit-xml b/python/test/files/trx/nunit/SilentNotes.junit-xml new file mode 100644 index 00000000..8b17a4af --- /dev/null +++ b/python/test/files/trx/nunit/SilentNotes.junit-xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/nunit/SilentNotes.results b/python/test/files/trx/nunit/SilentNotes.results new file mode 100644 index 00000000..45c2b9ce --- /dev/null +++ b/python/test/files/trx/nunit/SilentNotes.results @@ -0,0 +1,881 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=79, + suite_skipped=12, + suite_failures=0, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FetchTokenReturnsNullForDeniedAccess', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedJsonDoesNotContainPlaintextData', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoOpenAuthorizationPageInBrowser', + result='success', + message=None, + content=None, + time=8.4e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FileLifecycleWorks', + result='success', + message=None, + content=None, + time=0.161 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsStringToSecureString', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ValidateAcceptsValidCredentials', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildAuthorizationRequestUrlThrowsWithMissingRedirectUrlForTokenFlow', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseRealWorldDropboxSuccessResponse', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildAuthorizationRequestUrlUsesAllParameters', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedDatacontractDoesNotContainNullProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsSecureStringToString', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedJsonDoesNotContainNullProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedDatacontractCanBeReadBack', + result='success', + message=None, + content=None, + time=0.016 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoRefreshToken', + result='success', + message=None, + content=None, + time=1e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseStratoWebdavResponseCorrectly', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedXmlDoesNotContainNullProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithInvalidUrl', + result='success', + message=None, + content=None, + time=1.3e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='NeedsRefreshReturnsFalseIfNotExpired', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithInvalidUsername', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithHttpInsteadOfFtp', + result='success', + message=None, + content=None, + time=0.004 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedXmlDoesNotContainPlaintextData', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithInvalidPath', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildAuthorizationRequestUrlLeavesOutOptionalParameters', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SanitizeCredentials_ChangesInvalidPrefix', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsUnicodeBytesToSecureString', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='NeedsRefreshReturnsTrueIfNoExpirationDate', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseRealWorldDropboxRejectResponse', + result='success', + message=None, + content=None, + time=0.009 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedJsonCanBeReadBack', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ChoosesCorrectUrlForGmxNetEmail', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsAccessDeniedExceptionWithInvalidToken', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedDatacontractDoesNotContainPlaintextData', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='RefreshTokenCanInterpretGoogleResponse', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseGmxWebdavResponseCorrectly', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsUtf8BytesToSecureString', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsStringToSecureString', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='AreEqualWorksWithSameContent', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsSecureStringToString', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParsesNullErrorCodeCorrectly', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ChoosesCorrectUrlForGmxComEmail', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FileLifecycleWorks', + result='success', + message=None, + content=None, + time=0.014 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SetExpiryDateBySecondsWorksWithNull', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ValidateRejectsInvalidCredentials', + result='success', + message=None, + content=None, + time=0.006 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='EncryptBeforeSerializationProtectsAllNecessaryProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='DecryptAfterDesrializationRespectsNullProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoFetchToken', + result='success', + message=None, + content=None, + time=0.0004562 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoOpenAuthorizationPageInBrowser', + result='success', + message=None, + content=None, + time=1e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='DecryptAfterDesrializationCanReadAllPropertiesBack', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SecureSslConnectionWorks', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='NeedsRefreshReturnsFalseForTokenFlow', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FetchTokenCanInterpretGoogleResponse', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='NeedsRefreshReturnsTrueIfExpired', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseRealWorldGoogleSuccessResponse', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FileLifecycleWorks', + result='success', + message=None, + content=None, + time=0.04 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SetExpiryDateBySecondsWorks', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SetExpiryDateBySecondsWorksWithVeryShortPeriod', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoFetchToken', + result='success', + message=None, + content=None, + time=3.2e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FileLifecycleWorks', + result='success', + message=None, + content=None, + time=0.015 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParsesAllErrorCodesCorrectly', + result='success', + message=None, + content=None, + time=0.003 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoFetchToken', + result='success', + message=None, + content=None, + time=3.3e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoRefreshToken', + result='success', + message=None, + content=None, + time=5.94e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FileLifecycleWorks', + result='success', + message=None, + content=None, + time=0.095 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParseRealWorldGoogleRejectResponse', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoOpenAuthorizationPageInBrowser', + result='success', + message=None, + content=None, + time=1e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsSecureStringToUnicodeBytes', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithInvalidUsername', + result='success', + message=None, + content=None, + time=9e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildAuthorizationRequestUrlEscapesParameters', + result='success', + message=None, + content=None, + time=0.002 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='FetchTokenThrowsWithWrongState', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildOAuth2AuthorizationRequestUrlWorks', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='AreEqualsWorksCorrectly', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='EncryptBeforeSerializationRespectsNullProperties', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ThrowsWithInvalidPassword', + result='success', + message=None, + content=None, + time=1.31e-05 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='AreEqualWorksWithDifferentPassword', + result='success', + message=None, + content=None, + time=0.007 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='AreEqualWorksWithNullDate', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='SerializedXmlCanBeReadBack', + result='success', + message=None, + content=None, + time=0.016 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='BuildAuthorizationRequestUrlUsesCodeVerifier', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='CorrectlyConvertsSecureStringToUtf8Bytes', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ReallyDoRefreshToken', + result='success', + message=None, + content=None, + time=1.1e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='ParsesUnknownErrorCodeCorrectly', + result='success', + message=None, + content=None, + time=1e-07 + ), + publish.unittestresults.UnitTestCase( + result_file='nunit/SilentNotes.trx', + test_file=None, + line=None, + class_name='', + test_name='AreEqualWorksWithSameContent', + result='success', + message=None, + content=None, + time=1e-07 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/nunit/SilentNotes.trx b/python/test/files/trx/nunit/SilentNotes.trx new file mode 100644 index 00000000..7dbc3c28 --- /dev/null +++ b/python/test/files/trx/nunit/SilentNotes.trx @@ -0,0 +1,609 @@ + + + + + + + + + + + + Opens the authorization page in the system browse, to get a real access-token + + Opens the authorization page in the system browse, to get a real access-token + + + + + + + + + + + + + + + + Refreshes a real token + + Refreshes a real token + + + + + + + + Too many consecutive fails seems to block an FTP server. + + Too many consecutive fails seems to block an FTP server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets a real access-token + + Gets a real access-token + + + + + + Opens the authorization page in the system browse, to get a real authorization-code + + Opens the authorization page in the system browse, to get a real authorization-code + + + + + + + + + + + + + + + Gets a real access-token + + Gets a real access-token + + + + + + + + Gets a real access-token + + Gets a real access-token + + + + + + Refreshes a real token + + Refreshes a real token + + + + + + + + Opens the authorization page in the system browse, to get a real authorization-code + + Opens the authorization page in the system browse, to get a real authorization-code + + + + + + + Too many consecutive fails seems to block an FTP server. + + Too many consecutive fails seems to block an FTP server. + + + + + + + + + + + Too many consecutive fails seems to block an FTP server. + + Too many consecutive fails seems to block an FTP server. + + + + + + + + + + + Refreshes a real token + + Refreshes a real token + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NUnit Adapter 3.17.0.0: Test execution started +Running all tests in C:\Users\Michal\Workspace\github\SilentNotes\bin\VanillaCloudStorageClientTest\netcoreapp2.1\VanillaCloudStorageClientTest.dll + NUnit3TestExecutor discovered 79 of 79 NUnit test cases +ReallyDoFetchToken: Gets a real access-token +ReallyDoOpenAuthorizationPageInBrowser: Opens the authorization page in the system browse, to get a real access-token +Test 'ReallyDoFetchToken' was skipped in the test run. +Test 'ReallyDoOpenAuthorizationPageInBrowser' was skipped in the test run. +ReallyDoRefreshToken: Refreshes a real token +ThrowsWithInvalidPassword: Too many consecutive fails seems to block an FTP server. +ThrowsWithInvalidUrl: Too many consecutive fails seems to block an FTP server. +ThrowsWithInvalidUsername: Too many consecutive fails seems to block an FTP server. +Test 'ReallyDoRefreshToken' was skipped in the test run. +Test 'ThrowsWithInvalidPassword' was skipped in the test run. +Test 'ThrowsWithInvalidUrl' was skipped in the test run. +Test 'ThrowsWithInvalidUsername' was skipped in the test run. +ReallyDoFetchToken: Gets a real access-token +ReallyDoOpenAuthorizationPageInBrowser: Opens the authorization page in the system browse, to get a real authorization-code +ReallyDoRefreshToken: Refreshes a real token +ReallyDoFetchToken: Gets a real access-token +ReallyDoOpenAuthorizationPageInBrowser: Opens the authorization page in the system browse, to get a real authorization-code +Test 'ReallyDoFetchToken' was skipped in the test run. +Test 'ReallyDoOpenAuthorizationPageInBrowser' was skipped in the test run. +Test 'ReallyDoRefreshToken' was skipped in the test run. +Test 'ReallyDoFetchToken' was skipped in the test run. +Test 'ReallyDoOpenAuthorizationPageInBrowser' was skipped in the test run. +ReallyDoRefreshToken: Refreshes a real token +Test 'ReallyDoRefreshToken' was skipped in the test run. +NUnit Adapter 3.17.0.0: Test execution complete + + + + \ No newline at end of file diff --git a/python/test/files/trx/xunit/dotnet-trx.junit-xml b/python/test/files/trx/xunit/dotnet-trx.junit-xml new file mode 100644 index 00000000..25aaaee7 --- /dev/null +++ b/python/test/files/trx/xunit/dotnet-trx.junit-xml @@ -0,0 +1,33 @@ + + + + + + + Assert.True() Failure +Expected: True +Actual: False at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 67 + + + + + + System.DivideByZeroException : Attempted to divide by zero. at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.Unit\Calculator.cs:line 9 + at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 33 + + + System.Exception : Test at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 39 + + + Assert.Equal() Failure +Expected: 3 +Actual: 2 at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 27 + + + + Assert.True() Failure +Expected: True +Actual: False at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 59 + + + diff --git a/python/test/files/trx/xunit/dotnet-trx.results b/python/test/files/trx/xunit/dotnet-trx.results new file mode 100644 index 00000000..aaed01ad --- /dev/null +++ b/python/test/files/trx/xunit/dotnet-trx.results @@ -0,0 +1,152 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=11, + suite_skipped=1, + suite_failures=5, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Timeout_Test', + result='success', + message=None, + content=None, + time=0.1084258 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Passing_Test', + result='success', + message=None, + content=None, + time=0.0001365 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='Should be even number(i: 3)', + result='failure', + message='Assert.True() Failure\r\nExpected: True\r\nActual: False', + content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' + 'DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 ' + 'i) in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.XUnitTests\\CalculatorTests.cs:line 67', + time=0.0006537 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Skipped_Test', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='Custom Name', + result='success', + message=None, + content=None, + time=0.0001371 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='Should be even number(i: 2)', + result='success', + message=None, + content=None, + time=9.7e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest', + result='failure', + message='System.DivideByZeroException : Attempted to divide by zero.', + content='System.DivideByZeroException : Attempted to divide by zero. at ' + 'DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.Unit\\Calculator.cs:line 9\r\n at ' + 'DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.XUnitTests\\CalculatorTests.cs:line 33', + time=0.0008377 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test', + result='failure', + message='System.Exception : Test', + content='System.Exception : Test at ' + 'DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.XUnitTests\\CalculatorTests.cs:line 39', + time=0.0025175 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Failing_Test', + result='failure', + message='Assert.Equal() Failure\r\nExpected: 3\r\nActual: 2', + content='Assert.Equal() Failure\r\nExpected: 3\r\nActual: 2 at ' + 'DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.XUnitTests\\CalculatorTests.cs:line 27', + time=0.0038697 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(i: 2)', + result='success', + message=None, + content=None, + time=7.8e-06 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/dotnet-trx.trx', + test_file=None, + line=None, + class_name='', + test_name='DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(i: 3)', + result='failure', + message='Assert.True() Failure\r\nExpected: True\r\nActual: False', + content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' + 'DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in ' + 'C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTe' + 'sts.XUnitTests\\CalculatorTests.cs:line 59', + time=0.0004141 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/xunit/dotnet-trx.trx b/python/test/files/trx/xunit/dotnet-trx.trx new file mode 100644 index 00000000..bf112b85 --- /dev/null +++ b/python/test/files/trx/xunit/dotnet-trx.trx @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Assert.True() Failure +Expected: True +Actual: False + at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 67 + + + + + + Skipped test + + + + + + + + System.DivideByZeroException : Attempted to divide by zero. + at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.Unit\Calculator.cs:line 9 + at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 33 + + + + + + + System.Exception : Test + at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 39 + + + + + + + Assert.Equal() Failure +Expected: 3 +Actual: 2 + at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 27 + + + + + + + + Assert.True() Failure +Expected: True +Actual: False + at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 59 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.0 (64-bit .NET Core 3.1.14) +[xUnit.net 00:00:00.27] Discovering: DotnetTests.XUnitTests +[xUnit.net 00:00:00.32] Discovered: DotnetTests.XUnitTests +[xUnit.net 00:00:00.32] Starting: DotnetTests.XUnitTests +[xUnit.net 00:00:00.39] System.Exception : Test +[xUnit.net 00:00:00.39] Stack Trace: +[xUnit.net 00:00:00.39] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs(39,0): at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() +[xUnit.net 00:00:00.51] Assert.Equal() Failure +[xUnit.net 00:00:00.51] Expected: 3 +[xUnit.net 00:00:00.51] Actual: 2 +[xUnit.net 00:00:00.51] Stack Trace: +[xUnit.net 00:00:00.51] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs(27,0): at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() +[xUnit.net 00:00:00.51] Assert.True() Failure +[xUnit.net 00:00:00.51] Expected: True +[xUnit.net 00:00:00.51] Actual: False +[xUnit.net 00:00:00.51] Stack Trace: +[xUnit.net 00:00:00.51] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs(67,0): at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) +[xUnit.net 00:00:00.51] System.DivideByZeroException : Attempted to divide by zero. +[xUnit.net 00:00:00.51] Stack Trace: +[xUnit.net 00:00:00.51] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.Unit\Calculator.cs(9,0): at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) +[xUnit.net 00:00:00.51] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs(33,0): at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() +[xUnit.net 00:00:00.51] Assert.True() Failure +[xUnit.net 00:00:00.51] Expected: True +[xUnit.net 00:00:00.51] Actual: False +[xUnit.net 00:00:00.51] Stack Trace: +[xUnit.net 00:00:00.51] C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs(59,0): at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) +[xUnit.net 00:00:00.54] Skipped test +[xUnit.net 00:00:00.54] Finished: DotnetTests.XUnitTests +Test 'DotnetTests.XUnitTests.CalculatorTests.Skipped_Test' was skipped in the test run. + + + + + [xUnit.net 00:00:00.39] DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test [FAIL] + + + [xUnit.net 00:00:00.51] DotnetTests.XUnitTests.CalculatorTests.Failing_Test [FAIL] + + + [xUnit.net 00:00:00.51] Should be even number(i: 3) [FAIL] + + + [xUnit.net 00:00:00.51] DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest [FAIL] + + + [xUnit.net 00:00:00.51] DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(i: 3) [FAIL] + + + [xUnit.net 00:00:00.54] DotnetTests.XUnitTests.CalculatorTests.Skipped_Test [SKIP] + + + + \ No newline at end of file diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml new file mode 100644 index 00000000..6c6ac968 --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml @@ -0,0 +1,22 @@ + + + + + Assert.Equal() Failure +Expected: False +Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 + + + Assert.True() Failure +Expected: True +Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 + + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 + + + + + diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.results b/python/test/files/trx/xunit/xUnit-net461-sample.results new file mode 100644 index 00000000..0d95e5d8 --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-net461-sample.results @@ -0,0 +1,90 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=6, + suite_skipped=1, + suite_failures=3, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: False)', + result='failure', + message='Assert.Equal() Failure\r\nExpected: False\r\nActual: True', + content='Assert.Equal() Failure\r\nExpected: False\r\nActual: True at ' + 'SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 29', + time=0.02 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.FailTest', + result='failure', + message='Assert.True() Failure\r\nExpected: True\r\nActual: False', + content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' + 'SampleProject.xUnit.TestServiceTests.FailTest() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 65', + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.SkipTest', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestThrowingException', + result='failure', + message='System.Exception : Pretty good exception', + content='System.Exception : Pretty good exception at ' + 'SampleProject.TestService.GetException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject\\TestService' + '.cs:line 19\r\n at ' + 'SampleProject.xUnit.TestServiceTests.TestThrowingException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 54', + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: True)', + result='success', + message=None, + content=None, + time=0.025 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-net461-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.PassingTest', + result='success', + message=None, + content=None, + time=0.001 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.trx b/python/test/files/trx/xunit/xUnit-net461-sample.trx new file mode 100644 index 00000000..53711428 --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-net461-sample.trx @@ -0,0 +1,143 @@ + + + + + + + + + + Running SampleProject.Tests.xUnit tests + + Assert.Equal() Failure +Expected: False +Actual: True + at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 + + + + + + Running SampleProject.Tests.xUnit tests +This test will fail + + Assert.True() Failure +Expected: True +Actual: False + at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 + + + + + + Skipped + + + + + Running SampleProject.Tests.xUnit tests + + System.Exception : Pretty good exception + at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 + + + + + + Running SampleProject.Tests.xUnit tests + + + + + Running SampleProject.Tests.xUnit tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.3+1b45f5407b (32-bit Desktop .NET 4.0.30319.42000) +[xUnit.net 00:00:00.65] Discovering: SampleProject.xUnit +[xUnit.net 00:00:00.77] Discovered: SampleProject.xUnit +[xUnit.net 00:00:00.78] Starting: SampleProject.xUnit +[xUnit.net 00:00:01.01] Assert.Equal() Failure +[xUnit.net 00:00:01.01] Expected: False +[xUnit.net 00:00:01.01] Actual: True +[xUnit.net 00:00:01.01] Stack Trace: +[xUnit.net 00:00:01.01] TestServiceTests.cs(29,0): at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) +[xUnit.net 00:00:01.01] Output: +[xUnit.net 00:00:01.01] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:01.01] Skipped +[xUnit.net 00:00:01.24] System.Exception : Pretty good exception +[xUnit.net 00:00:01.24] Stack Trace: +[xUnit.net 00:00:01.24] C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs(19,0): at SampleProject.TestService.GetException() +[xUnit.net 00:00:01.24] TestServiceTests.cs(54,0): at SampleProject.xUnit.TestServiceTests.TestThrowingException() +[xUnit.net 00:00:01.24] Output: +[xUnit.net 00:00:01.24] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:01.25] Assert.True() Failure +[xUnit.net 00:00:01.25] Expected: True +[xUnit.net 00:00:01.25] Actual: False +[xUnit.net 00:00:01.25] Stack Trace: +[xUnit.net 00:00:01.25] TestServiceTests.cs(65,0): at SampleProject.xUnit.TestServiceTests.FailTest() +[xUnit.net 00:00:01.25] Output: +[xUnit.net 00:00:01.25] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:01.25] This test will fail +[xUnit.net 00:00:01.25] Finished: SampleProject.xUnit +Test 'SampleProject.xUnit.TestServiceTests.SkipTest' was skipped in the test run. + + + + + [xUnit.net 00:00:01.01] SampleProject.xUnit.TestServiceTests.TestTheory(expected: False) [FAIL] + + + [xUnit.net 00:00:01.01] SampleProject.xUnit.TestServiceTests.SkipTest [SKIP] + + + [xUnit.net 00:00:01.24] SampleProject.xUnit.TestServiceTests.TestThrowingException [FAIL] + + + [xUnit.net 00:00:01.25] SampleProject.xUnit.TestServiceTests.FailTest [FAIL] + + + + \ No newline at end of file diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml new file mode 100644 index 00000000..40e68ca5 --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml @@ -0,0 +1,22 @@ + + + + + Assert.True() Failure +Expected: True +Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 + + + Assert.Equal() Failure +Expected: False +Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 + + + + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 + + + diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results new file mode 100644 index 00000000..2be29428 --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results @@ -0,0 +1,90 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=6, + suite_skipped=1, + suite_failures=3, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.FailTest', + result='failure', + message='Assert.True() Failure\r\nExpected: True\r\nActual: False', + content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' + 'SampleProject.xUnit.TestServiceTests.FailTest() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 65', + time=0.0011482 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: False)', + result='failure', + message='Assert.Equal() Failure\r\nExpected: False\r\nActual: True', + content='Assert.Equal() Failure\r\nExpected: False\r\nActual: True at ' + 'SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 29', + time=0.0024407 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.SkipTest', + result='success', + message=None, + content=None, + time=0.001 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.PassingTest', + result='success', + message=None, + content=None, + time=0.0008798 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: True)', + result='success', + message=None, + content=None, + time=0.0056919 + ), + publish.unittestresults.UnitTestCase( + result_file='xunit/xUnit-netcoreapp3.1-sample.trx', + test_file=None, + line=None, + class_name='', + test_name='SampleProject.xUnit.TestServiceTests.TestThrowingException', + result='failure', + message='System.Exception : Pretty good exception', + content='System.Exception : Pretty good exception at ' + 'SampleProject.TestService.GetException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject\\TestService' + '.cs:line 19\r\n at ' + 'SampleProject.xUnit.TestServiceTests.TestThrowingException() in ' + 'C:\\Dev\\LiquidTestReports\\test\\SampleProject\\SampleProject.Tests.xUnit' + '\\TestServiceTests.cs:line 54', + time=0.000522 + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.trx b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.trx new file mode 100644 index 00000000..a2bb57bc --- /dev/null +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.trx @@ -0,0 +1,143 @@ + + + + + + + + + + Running SampleProject.Tests.xUnit tests +This test will fail + + Assert.True() Failure +Expected: True +Actual: False + at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 + + + + + + Running SampleProject.Tests.xUnit tests + + Assert.Equal() Failure +Expected: False +Actual: True + at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 + + + + + + Skipped + + + + + Running SampleProject.Tests.xUnit tests + + + + + Running SampleProject.Tests.xUnit tests + + + + + Running SampleProject.Tests.xUnit tests + + System.Exception : Pretty good exception + at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 + at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.3+1b45f5407b (64-bit .NET Core 3.1.13) +[xUnit.net 00:00:00.38] Discovering: SampleProject.xUnit +[xUnit.net 00:00:00.44] Discovered: SampleProject.xUnit +[xUnit.net 00:00:00.44] Starting: SampleProject.xUnit +[xUnit.net 00:00:00.55] Assert.Equal() Failure +[xUnit.net 00:00:00.55] Expected: False +[xUnit.net 00:00:00.55] Actual: True +[xUnit.net 00:00:00.55] Stack Trace: +[xUnit.net 00:00:00.56] C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs(29,0): at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) +[xUnit.net 00:00:00.56] Output: +[xUnit.net 00:00:00.56] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:00.56] Skipped +[xUnit.net 00:00:00.56] System.Exception : Pretty good exception +[xUnit.net 00:00:00.56] Stack Trace: +[xUnit.net 00:00:00.56] C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs(19,0): at SampleProject.TestService.GetException() +[xUnit.net 00:00:00.56] C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs(54,0): at SampleProject.xUnit.TestServiceTests.TestThrowingException() +[xUnit.net 00:00:00.56] Output: +[xUnit.net 00:00:00.56] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:00.56] Assert.True() Failure +[xUnit.net 00:00:00.56] Expected: True +[xUnit.net 00:00:00.56] Actual: False +[xUnit.net 00:00:00.56] Stack Trace: +[xUnit.net 00:00:00.56] C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs(65,0): at SampleProject.xUnit.TestServiceTests.FailTest() +[xUnit.net 00:00:00.56] Output: +[xUnit.net 00:00:00.56] Running SampleProject.Tests.xUnit tests +[xUnit.net 00:00:00.56] This test will fail +[xUnit.net 00:00:00.56] Finished: SampleProject.xUnit +Test 'SampleProject.xUnit.TestServiceTests.SkipTest' was skipped in the test run. + + + + + [xUnit.net 00:00:00.55] SampleProject.xUnit.TestServiceTests.TestTheory(expected: False) [FAIL] + + + [xUnit.net 00:00:00.56] SampleProject.xUnit.TestServiceTests.SkipTest [SKIP] + + + [xUnit.net 00:00:00.56] SampleProject.xUnit.TestServiceTests.TestThrowingException [FAIL] + + + [xUnit.net 00:00:00.56] SampleProject.xUnit.TestServiceTests.FailTest [FAIL] + + + + \ No newline at end of file diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml new file mode 100644 index 00000000..fa204e9a --- /dev/null +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml @@ -0,0 +1,46 @@ + + + + + + + + El método de prueba Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest produjo la excepción: +System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. +Nombre del parámetro: index en System.ThrowHelper.ThrowArgumentOutOfRangeException() + en System.Collections.Generic.List`1.set_Item(Int32 index, T value) + en TMC.Components.TemperatureControl.SIARAlgorithm.EST_INTER_TEMP(Double TAMP, Int32 TEXTERN) en E:\TMC\TMC\Components\TemperatureControl\SIARAlgorithms.cs:línea 363 + en Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest() en E:\TMC\Prueba_Sistema\SIARAlgorithmTest.cs:línea 199 + + + + El método de prueba Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest produjo la excepción: +System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. +Nombre del parámetro: index en System.ThrowHelper.ThrowArgumentOutOfRangeException() + en System.Collections.Generic.List`1.get_Item(Int32 index) + en TMC.Components.TemperatureControl.SIARAlgorithm.EST_LAMB_TEMP(Double TINTPP, Double TAMP, Int32 TEXTERN, Int32 CRPBuscar) en E:\TMC\TMC\Components\TemperatureControl\SIARAlgorithms.cs:línea 474 + en Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest() en E:\TMC\Prueba_Sistema\SIARAlgorithmTest.cs:línea 217 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results new file mode 100644 index 00000000..aabc702d --- /dev/null +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results @@ -0,0 +1,318 @@ +publish.unittestresults.ParsedUnitTestResults( + files=1, + errors=[], + suites=1, + suite_tests=25, + suite_skipped=21, + suite_failures=2, + suite_errors=0, + suite_time=0, + cases=[ + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.UnitTest1', + test_name='TestMethod1', + result='success', + message=None, + content=None, + time=0.0099709 + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='CompareTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='ClearListTest', + result='success', + message=None, + content=None, + time=0.4619928 + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='EST_INTER_TEMPTest', + result='failure', + message='El método de prueba ' + 'Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest produjo la ' + 'excepción: \nSystem.ArgumentOutOfRangeException: El índice estaba ' + 'fuera del intervalo. Debe ser un valor no negativo e inferior al ' + 'tamaño de la colección.\nNombre del parámetro: index', + content='El método de prueba ' + 'Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest produjo la ' + 'excepción: \nSystem.ArgumentOutOfRangeException: El índice estaba ' + 'fuera del intervalo. Debe ser un valor no negativo e inferior al ' + 'tamaño de la colección.\nNombre del parámetro: index en ' + 'System.ThrowHelper.ThrowArgumentOutOfRangeException()\n en ' + 'System.Collections.Generic.List`1.set_Item(Int32 index, T value)\n ' + 'en ' + 'TMC.Components.TemperatureControl.SIARAlgorithm.EST_INTER_TEMP(Double' + ' TAMP, Int32 TEXTERN) en ' + 'E:\\TMC\\TMC\\Components\\TemperatureControl\\SIARAlgorithms.cs:línea' + ' 363\n en Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest() en ' + 'E:\\TMC\\Prueba_Sistema\\SIARAlgorithmTest.cs:línea 199\n', + time=19.039413 + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='EST_LAMB_TEMPTest', + result='failure', + message='El método de prueba ' + 'Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest produjo la ' + 'excepción: \nSystem.ArgumentOutOfRangeException: El índice estaba ' + 'fuera del intervalo. Debe ser un valor no negativo e inferior al ' + 'tamaño de la colección.\nNombre del parámetro: index', + content='El método de prueba ' + 'Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest produjo la ' + 'excepción: \nSystem.ArgumentOutOfRangeException: El índice estaba ' + 'fuera del intervalo. Debe ser un valor no negativo e inferior al ' + 'tamaño de la colección.\nNombre del parámetro: index en ' + 'System.ThrowHelper.ThrowArgumentOutOfRangeException()\n en ' + 'System.Collections.Generic.List`1.get_Item(Int32 index)\n en ' + 'TMC.Components.TemperatureControl.SIARAlgorithm.EST_LAMB_TEMP(Double ' + 'TINTPP, Double TAMP, Int32 TEXTERN, Int32 CRPBuscar) en ' + 'E:\\TMC\\TMC\\Components\\TemperatureControl\\SIARAlgorithms.cs:línea' + ' 474\n en Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest() en ' + 'E:\\TMC\\Prueba_Sistema\\SIARAlgorithmTest.cs:línea 217\n', + time=2.5091335 + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='EST_SEG_TEMPTest', + result='success', + message=None, + content=None, + time=4.6492659 + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='GetAlphaExternoTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='GetComposicionTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='GetDiseñoTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='GetSpesorTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='LamdaTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='SiSParcialTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='CostoTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='EspesorTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='FlujoCaloricoTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='MaterialesTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='PerdidaTotalTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='PesoTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='ProjectTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='ProjectObjectTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='SpesorTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='TDataSetTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='TempExternaTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='VolumenTest', + result='success', + message=None, + content=None, + time=float('nan') + ), + publish.unittestresults.UnitTestCase( + result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', + test_file=None, + line=None, + class_name='Prueba_Sistema.SIARAlgorithmTest', + test_name='SIARAlgorithmConstructorTest', + result='success', + message=None, + content=None, + time=float('nan') + ) + ] +) \ No newline at end of file diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.trx b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.trx new file mode 100755 index 00000000..7967f273 --- /dev/null +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.trx @@ -0,0 +1,249 @@ + + + + Esta es la configuración de pruebas predeterminada para una ejecución de pruebas local. + + + + + + + + + + + + + + + + + + El proceso del host de pruebas terminó inesperadamente. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UTA007: la firma del método CompareTest definido en la clase Prueba_Sistema.SIARAlgorithmTest no es correcta. El método de prueba marcado con el atributo [TestMethod] debe ser no estático, público, no debe devolver ningún valor ni tomar ningún parámetro. Por ejemplo: public void Test.Class1.Test(). + + + + + + + + + El método de prueba Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest produjo la excepción: +System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. +Nombre del parámetro: index + en System.ThrowHelper.ThrowArgumentOutOfRangeException() + en System.Collections.Generic.List`1.set_Item(Int32 index, T value) + en TMC.Components.TemperatureControl.SIARAlgorithm.EST_INTER_TEMP(Double TAMP, Int32 TEXTERN) en E:\TMC\TMC\Components\TemperatureControl\SIARAlgorithms.cs:línea 363 + en Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest() en E:\TMC\Prueba_Sistema\SIARAlgorithmTest.cs:línea 199 + + + + + + + + El método de prueba Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest produjo la excepción: +System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. +Nombre del parámetro: index + en System.ThrowHelper.ThrowArgumentOutOfRangeException() + en System.Collections.Generic.List`1.get_Item(Int32 index) + en TMC.Components.TemperatureControl.SIARAlgorithm.EST_LAMB_TEMP(Double TINTPP, Double TAMP, Int32 TEXTERN, Int32 CRPBuscar) en E:\TMC\TMC\Components\TemperatureControl\SIARAlgorithms.cs:línea 474 + en Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest() en E:\TMC\Prueba_Sistema\SIARAlgorithmTest.cs:línea 217 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/python/test/test_junit.py b/python/test/test_junit.py index cb9aa1b7..b997aee8 100644 --- a/python/test/test_junit.py +++ b/python/test/test_junit.py @@ -66,7 +66,7 @@ def shorten_filename(cls, filename): def do_test_parse_and_process_files(self, filename: str): for locale in [None, 'en_US.UTF-8', 'de_DE.UTF-8']: - with self.test.subTest(locale=locale): + with self.test.subTest(file=self.shorten_filename(filename), locale=locale): with temp_locale(locale): actual = self.parse_file(filename) path = pathlib.Path(filename) @@ -85,8 +85,7 @@ def do_test_parse_and_process_files(self, filename: str): def test_parse_and_process_files(self): for file in self.get_test_files(): - with self.test.subTest(file=self.shorten_filename(file)): - self.do_test_parse_and_process_files(file) + self.do_test_parse_and_process_files(file) @classmethod def update_expectations(cls): From 1a48953c951e1df6f05b45a44304f817eaccf03a Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 22:34:30 +0200 Subject: [PATCH 22/32] Add skipped results --- python/publish/xslt/trx-to-junit.xslt | 31 +++++-- .../nunit/FluentValidation.Tests.junit-xml | 4 +- .../trx/nunit/FluentValidation.Tests.results | 2 +- .../trx/nunit/NUnit-net461-sample.junit-xml | 4 +- .../trx/nunit/NUnit-net461-sample.results | 6 +- .../NUnit-netcoreapp3.1-sample.junit-xml | 4 +- .../nunit/NUnit-netcoreapp3.1-sample.results | 6 +- .../files/trx/nunit/SilentNotes.junit-xml | 48 ++++++++--- .../test/files/trx/nunit/SilentNotes.results | 78 +++++++++-------- .../test/files/trx/xunit/dotnet-trx.junit-xml | 4 +- .../test/files/trx/xunit/dotnet-trx.results | 2 +- .../trx/xunit/xUnit-net461-sample.junit-xml | 4 +- .../trx/xunit/xUnit-net461-sample.results | 2 +- .../xUnit-netcoreapp3.1-sample.junit-xml | 4 +- .../xunit/xUnit-netcoreapp3.1-sample.results | 2 +- ...yami_YAMILEX 2015-10-24 04_18_59.junit-xml | 84 ++++++++++++++----- .../yami_YAMILEX 2015-10-24 04_18_59.results | 54 +++++++----- 17 files changed, 222 insertions(+), 117 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 3dc1c750..82621d8c 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -50,13 +50,18 @@ - - + + + + + + + + + - + @@ -64,7 +69,7 @@ - + @@ -112,9 +117,17 @@ + + + + + + + + - + @@ -122,7 +135,7 @@ - + @@ -137,7 +150,7 @@ - + diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml index 544994e1..a6328557 100644 --- a/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml +++ b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml @@ -180,7 +180,9 @@ - + + + diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.results b/python/test/files/trx/nunit/FluentValidation.Tests.results index 7ae77169..2e04373a 100644 --- a/python/test/files/trx/nunit/FluentValidation.Tests.results +++ b/python/test/files/trx/nunit/FluentValidation.Tests.results @@ -2186,7 +2186,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='FluentValidation.Tests.AccessorCacheTests.Benchmark', - result='success', + result='skipped', message=None, content=None, time=0.001 diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml index 4986e390..0e97b71d 100644 --- a/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml +++ b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml @@ -7,7 +7,9 @@ at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 - + + Ignore test + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.results b/python/test/files/trx/nunit/NUnit-net461-sample.results index 0ba86bb6..3aa191c1 100644 --- a/python/test/files/trx/nunit/NUnit-net461-sample.results +++ b/python/test/files/trx/nunit/NUnit-net461-sample.results @@ -28,9 +28,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='SkipTest', - result='success', - message=None, - content=None, + result='skipped', + message='Ignore test', + content='Ignore test', time=0.0 ), publish.unittestresults.UnitTestCase( diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml index edb5cd29..efa23c2c 100644 --- a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml @@ -7,7 +7,9 @@ at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 - + + Ignore test + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results index d1f29365..ed820b3b 100644 --- a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results @@ -28,9 +28,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='SkipTest', - result='success', - message=None, - content=None, + result='skipped', + message='Ignore test', + content='Ignore test', time=0.000447 ), publish.unittestresults.UnitTestCase( diff --git a/python/test/files/trx/nunit/SilentNotes.junit-xml b/python/test/files/trx/nunit/SilentNotes.junit-xml index 8b17a4af..f49b4fb6 100644 --- a/python/test/files/trx/nunit/SilentNotes.junit-xml +++ b/python/test/files/trx/nunit/SilentNotes.junit-xml @@ -3,7 +3,9 @@ - + + Opens the authorization page in the system browse, to get a real access-token + @@ -14,10 +16,14 @@ - + + Refreshes a real token + - + + Too many consecutive fails seems to block an FTP server. + @@ -45,8 +51,12 @@ - - + + Gets a real access-token + + + Opens the authorization page in the system browse, to get a real authorization-code + @@ -56,28 +66,42 @@ - + + Gets a real access-token + - - + + Gets a real access-token + + + Refreshes a real token + - + + Opens the authorization page in the system browse, to get a real authorization-code + - + + Too many consecutive fails seems to block an FTP server. + - + + Too many consecutive fails seems to block an FTP server. + - + + Refreshes a real token + diff --git a/python/test/files/trx/nunit/SilentNotes.results b/python/test/files/trx/nunit/SilentNotes.results index 45c2b9ce..378ad8dd 100644 --- a/python/test/files/trx/nunit/SilentNotes.results +++ b/python/test/files/trx/nunit/SilentNotes.results @@ -36,9 +36,11 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoOpenAuthorizationPageInBrowser', - result='success', - message=None, - content=None, + result='skipped', + message='Opens the authorization page in the system browse, to get a real ' + 'access-token', + content='Opens the authorization page in the system browse, to get a real ' + 'access-token', time=8.4e-06 ), publish.unittestresults.UnitTestCase( @@ -157,9 +159,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoRefreshToken', - result='success', - message=None, - content=None, + result='skipped', + message='Refreshes a real token', + content='Refreshes a real token', time=1e-06 ), publish.unittestresults.UnitTestCase( @@ -190,9 +192,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ThrowsWithInvalidUrl', - result='success', - message=None, - content=None, + result='skipped', + message='Too many consecutive fails seems to block an FTP server.', + content='Too many consecutive fails seems to block an FTP server.', time=1.3e-06 ), publish.unittestresults.UnitTestCase( @@ -498,9 +500,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoFetchToken', - result='success', - message=None, - content=None, + result='skipped', + message='Gets a real access-token', + content='Gets a real access-token', time=0.0004562 ), publish.unittestresults.UnitTestCase( @@ -509,9 +511,11 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoOpenAuthorizationPageInBrowser', - result='success', - message=None, - content=None, + result='skipped', + message='Opens the authorization page in the system browse, to get a real ' + 'authorization-code', + content='Opens the authorization page in the system browse, to get a real ' + 'authorization-code', time=1e-06 ), publish.unittestresults.UnitTestCase( @@ -619,9 +623,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoFetchToken', - result='success', - message=None, - content=None, + result='skipped', + message='Gets a real access-token', + content='Gets a real access-token', time=3.2e-06 ), publish.unittestresults.UnitTestCase( @@ -652,9 +656,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoFetchToken', - result='success', - message=None, - content=None, + result='skipped', + message='Gets a real access-token', + content='Gets a real access-token', time=3.3e-06 ), publish.unittestresults.UnitTestCase( @@ -663,9 +667,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoRefreshToken', - result='success', - message=None, - content=None, + result='skipped', + message='Refreshes a real token', + content='Refreshes a real token', time=5.94e-05 ), publish.unittestresults.UnitTestCase( @@ -696,9 +700,11 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoOpenAuthorizationPageInBrowser', - result='success', - message=None, - content=None, + result='skipped', + message='Opens the authorization page in the system browse, to get a real ' + 'authorization-code', + content='Opens the authorization page in the system browse, to get a real ' + 'authorization-code', time=1e-06 ), publish.unittestresults.UnitTestCase( @@ -718,9 +724,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ThrowsWithInvalidUsername', - result='success', - message=None, - content=None, + result='skipped', + message='Too many consecutive fails seems to block an FTP server.', + content='Too many consecutive fails seems to block an FTP server.', time=9e-07 ), publish.unittestresults.UnitTestCase( @@ -784,9 +790,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ThrowsWithInvalidPassword', - result='success', - message=None, - content=None, + result='skipped', + message='Too many consecutive fails seems to block an FTP server.', + content='Too many consecutive fails seems to block an FTP server.', time=1.31e-05 ), publish.unittestresults.UnitTestCase( @@ -850,9 +856,9 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='ReallyDoRefreshToken', - result='success', - message=None, - content=None, + result='skipped', + message='Refreshes a real token', + content='Refreshes a real token', time=1.1e-06 ), publish.unittestresults.UnitTestCase( diff --git a/python/test/files/trx/xunit/dotnet-trx.junit-xml b/python/test/files/trx/xunit/dotnet-trx.junit-xml index 25aaaee7..fe401d3c 100644 --- a/python/test/files/trx/xunit/dotnet-trx.junit-xml +++ b/python/test/files/trx/xunit/dotnet-trx.junit-xml @@ -8,7 +8,9 @@ Expected: True Actual: False at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 67 - + + + diff --git a/python/test/files/trx/xunit/dotnet-trx.results b/python/test/files/trx/xunit/dotnet-trx.results index aaed01ad..8552d390 100644 --- a/python/test/files/trx/xunit/dotnet-trx.results +++ b/python/test/files/trx/xunit/dotnet-trx.results @@ -51,7 +51,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='DotnetTests.XUnitTests.CalculatorTests.Skipped_Test', - result='success', + result='skipped', message=None, content=None, time=0.001 diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml index 6c6ac968..0a453a40 100644 --- a/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml +++ b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml @@ -11,7 +11,9 @@ Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expe Expected: True Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 - + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.results b/python/test/files/trx/xunit/xUnit-net461-sample.results index 0d95e5d8..4a657be7 100644 --- a/python/test/files/trx/xunit/xUnit-net461-sample.results +++ b/python/test/files/trx/xunit/xUnit-net461-sample.results @@ -42,7 +42,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='SampleProject.xUnit.TestServiceTests.SkipTest', - result='success', + result='skipped', message=None, content=None, time=0.001 diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml index 40e68ca5..7d487db0 100644 --- a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml @@ -11,7 +11,9 @@ Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\L Expected: False Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 - + + + diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results index 2be29428..d42007d9 100644 --- a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results @@ -42,7 +42,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='', test_name='SampleProject.xUnit.TestServiceTests.SkipTest', - result='success', + result='skipped', message=None, content=None, time=0.001 diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml index fa204e9a..94f84057 100644 --- a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml @@ -2,7 +2,9 @@ - + + UTA007: la firma del método CompareTest definido en la clase Prueba_Sistema.SIARAlgorithmTest no es correcta. El método de prueba marcado con el atributo [TestMethod] debe ser no estático, público, no debe devolver ningún valor ni tomar ningún parámetro. Por ejemplo: public void Test.Class1.Test(). + El método de prueba Prueba_Sistema.SIARAlgorithmTest.EST_INTER_TEMPTest produjo la excepción: @@ -22,25 +24,65 @@ Nombre del parámetro: index en System.ThrowHelper.ThrowArgumentOutOfRangeExc en Prueba_Sistema.SIARAlgorithmTest.EST_LAMB_TEMPTest() en E:\TMC\Prueba_Sistema\SIARAlgorithmTest.cs:línea 217 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results index aabc702d..90b20fe6 100644 --- a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results @@ -25,9 +25,17 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='CompareTest', - result='success', - message=None, - content=None, + result='skipped', + message='UTA007: la firma del método CompareTest definido en la clase ' + 'Prueba_Sistema.SIARAlgorithmTest no es correcta. El método de prueba ' + 'marcado con el atributo [TestMethod] debe ser no estático, público, ' + 'no debe devolver ningún valor ni tomar ningún parámetro. Por ' + 'ejemplo: public void Test.Class1.Test().', + content='UTA007: la firma del método CompareTest definido en la clase ' + 'Prueba_Sistema.SIARAlgorithmTest no es correcta. El método de prueba ' + 'marcado con el atributo [TestMethod] debe ser no estático, público, ' + 'no debe devolver ningún valor ni tomar ningún parámetro. Por ' + 'ejemplo: public void Test.Class1.Test().', time=float('nan') ), publish.unittestresults.UnitTestCase( @@ -100,7 +108,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='EST_SEG_TEMPTest', - result='success', + result='skipped', message=None, content=None, time=4.6492659 @@ -111,7 +119,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='GetAlphaExternoTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -122,7 +130,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='GetComposicionTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -133,7 +141,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='GetDiseñoTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -144,7 +152,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='GetSpesorTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -155,7 +163,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='LamdaTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -166,7 +174,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='SiSParcialTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -177,7 +185,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='CostoTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -188,7 +196,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='EspesorTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -199,7 +207,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='FlujoCaloricoTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -210,7 +218,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='MaterialesTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -221,7 +229,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='PerdidaTotalTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -232,7 +240,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='PesoTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -243,7 +251,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='ProjectTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -254,7 +262,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='ProjectObjectTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -265,7 +273,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='SpesorTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -276,7 +284,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='TDataSetTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -287,7 +295,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='TempExternaTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -298,7 +306,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='VolumenTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') @@ -309,7 +317,7 @@ publish.unittestresults.ParsedUnitTestResults( line=None, class_name='Prueba_Sistema.SIARAlgorithmTest', test_name='SIARAlgorithmConstructorTest', - result='success', + result='skipped', message=None, content=None, time=float('nan') From 69ff412414b490ced7b438bd2a6db4a09c98bc61 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 22:51:08 +0200 Subject: [PATCH 23/32] Extract class name when there is no comma, remove class name from test name --- python/publish/xslt/trx-to-junit.xslt | 48 +- .../nunit/FluentValidation.Tests.junit-xml | 1608 +++---- .../trx/nunit/FluentValidation.Tests.results | 3990 +++++++---------- .../trx/nunit/NUnit-net461-sample.junit-xml | 12 +- .../trx/nunit/NUnit-net461-sample.results | 12 +- .../NUnit-netcoreapp3.1-sample.junit-xml | 12 +- .../nunit/NUnit-netcoreapp3.1-sample.results | 12 +- .../files/trx/nunit/SilentNotes.junit-xml | 158 +- .../test/files/trx/nunit/SilentNotes.results | 198 +- .../test/files/trx/xunit/dotnet-trx.junit-xml | 22 +- .../test/files/trx/xunit/dotnet-trx.results | 38 +- .../trx/xunit/xUnit-net461-sample.junit-xml | 12 +- .../trx/xunit/xUnit-net461-sample.results | 24 +- .../xUnit-netcoreapp3.1-sample.junit-xml | 12 +- .../xunit/xUnit-netcoreapp3.1-sample.results | 24 +- 15 files changed, 2776 insertions(+), 3406 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 82621d8c..7be421f1 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -49,8 +49,28 @@ - - + + + + + + + + + + + + + + + + + + + + + + @@ -115,8 +135,28 @@ - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml index a6328557..e3a69f7c 100644 --- a/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml +++ b/python/test/files/trx/nunit/FluentValidation.Tests.junit-xml @@ -1,811 +1,811 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/nunit/FluentValidation.Tests.results b/python/test/files/trx/nunit/FluentValidation.Tests.results index 2e04373a..6cacdfee 100644 --- a/python/test/files/trx/nunit/FluentValidation.Tests.results +++ b/python/test/files/trx/nunit/FluentValidation.Tests.results @@ -12,9 +12,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_async_model_throws', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_async_model_throws', result='success', message=None, content=None, @@ -24,8 +23,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChildRulesTests.ChildRules_works_with_RuleSet', + class_name='FluentValidation.Tests.ChildRulesTests', + test_name='ChildRules_works_with_RuleSet', result='success', message=None, content=None, @@ -35,9 +34,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_store_comparison_type', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_store_comparison_type', result='success', message=None, content=None, @@ -47,9 +45,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Tests_nested_property_reverse', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Tests_nested_property_reverse', result='success', message=None, content=None, @@ -59,9 +56,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_fail_when_condition_matches', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_fail_when_condition_matches', result='success', message=None, content=None, @@ -71,9 +67,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_is_applied_to_single_validator_in_the_chain_when_Appl' + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_is_applied_to_single_validator_in_the_chain_when_Appl' 'yConditionTo_set_to_CurrentValidator', result='success', message=None, @@ -84,9 +79,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_nullable_property', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_property', result='success', message=None, content=None, @@ -96,9 +90,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Regular_rules_can_drop_into_RuleForEach', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Regular_rules_can_drop_into_RuleForEach', result='success', message=None, content=None, @@ -108,9 +101,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Chained_property_should_be_excluded', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Chained_property_should_be_excluded', result='success', message=None, content=None, @@ -120,9 +112,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_should_throw_when_there_are_no_validation_e' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_no_validation_e' 'rrors_with_preconstructed_object', result='success', message=None, @@ -133,9 +124,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_fail_when_condition_does_not_match', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_fail_when_condition_does_not_match', result='success', message=None, content=None, @@ -145,9 +135,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Should_ignore_unknown_parameters', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Should_ignore_unknown_parameters', result='success', message=None, content=None, @@ -157,9 +146,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'To_and_from_properties_should_be_set_for_dates', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='To_and_from_properties_should_be_set_for_dates', result='success', message=None, content=None, @@ -169,9 +157,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Runs_otherwise_conditions_for_When', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Runs_otherwise_conditions_for_When', result='success', message=None, content=None, @@ -181,9 +168,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_exp' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_exp' 'licit_value', result='success', message=None, @@ -194,9 +180,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'When_the_text_length_is_larger_the_validator_should_fail', + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='When_the_text_length_is_larger_the_validator_should_fail', result='success', message=None, content=None, @@ -206,9 +191,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Executes_customasync_rule_when_async_condition_true', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Executes_customasync_rule_when_async_condition_true', result='success', message=None, content=None, @@ -218,9 +202,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_matches_the_lambda_regular_expression_then_the_validato' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_matches_the_lambda_regular_expression_then_the_validato' 'r_should_pass', result='success', message=None, @@ -231,9 +214,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_validation_fails_the_default_error_should_be_set', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_validation_fails_the_default_error_should_be_set', result='success', message=None, content=None, @@ -243,8 +225,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserStateTester.Throws_when_provider_is_null', + class_name='FluentValidation.Tests.UserStateTester', + test_name='Throws_when_provider_is_null', result='success', message=None, content=None, @@ -254,9 +236,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_not_throw_when_there_are_no_error' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_not_throw_when_there_are_no_error' 's', result='success', message=None, @@ -267,9 +248,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_the_property_is_initialized_with_invalid_string_then_the_validat' + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_the_property_is_initialized_with_invalid_string_then_the_validat' 'or_should_fail', result='success', message=None, @@ -280,9 +260,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Extracts_property_from_constant_using_expression', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Extracts_property_from_constant_using_expression', result='success', message=None, content=None, @@ -292,9 +271,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Includes_combination_of_rulesets_async', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Includes_combination_of_rulesets_async', result='success', message=None, content=None, @@ -304,9 +282,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TrackingCollectionTests.' - 'Should_not_raise_event_once_handler_detached', + class_name='FluentValidation.Tests.TrackingCollectionTests', + test_name='Should_not_raise_event_once_handler_detached', result='success', message=None, content=None, @@ -316,9 +293,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -328,9 +304,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'NotEqual_should_create_NotEqualValidator_with_lambda', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='NotEqual_should_create_NotEqualValidator_with_lambda', result='success', message=None, content=None, @@ -340,9 +315,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Should_ignore_unknown_numbered_parameters', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Should_ignore_unknown_numbered_parameters', result='success', message=None, content=None, @@ -352,9 +326,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'When_the_objects_are_equal_validation_should_succeed', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='When_the_objects_are_equal_validation_should_succeed', result='success', message=None, content=None, @@ -364,9 +337,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Validates_nullable_property_with_overriden_name_when_selected', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Validates_nullable_property_with_overriden_name_when_selected', result='success', message=None, content=None, @@ -376,9 +348,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -388,9 +359,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' 'alidator_level_async_legacy', result='success', message=None, @@ -401,8 +371,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TransformTests.Transforms_collection_element', + class_name='FluentValidation.Tests.TransformTests', + test_name='Transforms_collection_element', result='success', message=None, content=None, @@ -412,9 +382,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_matches_the_regular_expression_then_the_validator_shoul' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_matches_the_regular_expression_then_the_validator_shoul' 'd_pass', result='success', message=None, @@ -425,9 +394,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fai' + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fai' 'ls', result='success', message=None, @@ -438,9 +406,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Throws_when_provider_is_null', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Throws_when_provider_is_null', result='success', message=None, content=None, @@ -450,9 +417,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_Should_throw_when_there_are_no_validation_e' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_Should_throw_when_there_are_no_validation_e' 'rrors', result='success', message=None, @@ -463,9 +429,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_succeed_when_async_condition_does_not_match', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_succeed_when_async_condition_does_not_match', result='success', message=None, content=None, @@ -475,8 +440,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Includes_combination_of_rulesets', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Includes_combination_of_rulesets', result='success', message=None, content=None, @@ -486,10 +451,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' - 'nsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResul' - 't: )', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAs' + 'ync(preValidationResult: )', result='success', message=None, content=None, @@ -499,9 +463,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -511,9 +474,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Can_Provide_conditional_severity', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Can_Provide_conditional_severity', result='success', message=None, content=None, @@ -523,9 +485,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: " \\r \\t \\n")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: " \\r \\t \\n")', result='success', message=None, content=None, @@ -535,9 +496,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Nested_async_conditions_with_CustomAsync_rule', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Nested_async_conditions_with_CustomAsync_rule', result='success', message=None, content=None, @@ -547,9 +507,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'When_the_enum_is_not_initialized_with_valid_value_then_the_validator_' + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='When_the_enum_is_not_initialized_with_valid_value_then_the_validator_' 'should_fail', result='success', message=None, @@ -560,9 +519,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' 'e_level_legacy', result='success', message=None, @@ -573,9 +531,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_validation_fails_error_should_be_set', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_validation_fails_error_should_be_set', result='success', message=None, content=None, @@ -585,9 +542,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_Should_support_nested_properties', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_Should_support_nested_properties', result='success', message=None, content=None, @@ -597,9 +553,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_value_is_null_validator_should_fail', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_value_is_null_validator_should_fail', result='success', message=None, content=None, @@ -609,9 +564,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Uses_lazily_loaded_expression_with_options', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Uses_lazily_loaded_expression_with_options', result='success', message=None, content=None, @@ -621,8 +575,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.Should_not_main_state', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_not_main_state', result='success', message=None, content=None, @@ -632,9 +586,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Can_use_cascade_with_RuleForEach', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_use_cascade_with_RuleForEach', result='success', message=None, content=None, @@ -644,9 +597,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' 'en_at_rule_level_async_legacy', result='success', message=None, @@ -657,9 +609,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_Custom_When_property_name_omitted_infers_property_name', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_Custom_When_property_name_omitted_infers_property_name', result='success', message=None, content=None, @@ -669,9 +620,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Rules_invoke_when_inverse_shared_async_condition_matches', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Rules_invoke_when_inverse_shared_async_condition_matches', result='success', message=None, content=None, @@ -681,9 +631,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Skips_null_items', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Skips_null_items', result='success', message=None, content=None, @@ -693,9 +642,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NullTester.' - 'Not_null_validator_should_not_crash_with_non_nullable_value_type', + class_name='FluentValidation.Tests.NullTester', + test_name='Not_null_validator_should_not_crash_with_non_nullable_value_type', result='success', message=None, content=None, @@ -705,9 +653,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Should_override_propertyName', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Should_override_propertyName', result='success', message=None, content=None, @@ -717,9 +664,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "someName@some_domain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"someName@some_domain.com")', result='success', message=None, content=None, @@ -729,9 +676,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Flags_enum_validates_correctly_when_using_zero_value', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Flags_enum_validates_correctly_when_using_zero_value', result='success', message=None, content=None, @@ -741,9 +687,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -753,9 +698,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_minlength_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_minlength_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -765,9 +709,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Gets_translation_for_culture', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_culture', result='success', message=None, content=None, @@ -777,9 +720,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorDescriptorTester.' - 'GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_mo' + class_name='FluentValidation.Tests.ValidatorDescriptorTester', + test_name='GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_mo' 'del_level_rule', result='success', message=None, @@ -790,8 +732,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.Nested_dependent_rules', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Nested_dependent_rules', result='success', message=None, content=None, @@ -801,9 +743,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Combines_rulesets_and_explicit_properties_async', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Combines_rulesets_and_explicit_properties_async', result='success', message=None, content=None, @@ -813,9 +754,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Rules_invoke_when_inverse_shared_condition_matches', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Rules_invoke_when_inverse_shared_condition_matches', result='success', message=None, content=None, @@ -825,9 +765,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Should_fail_when_greater_than_input', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Should_fail_when_greater_than_input', result='success', message=None, content=None, @@ -837,9 +776,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Async_condition_should_work_with_child_collection', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Async_condition_should_work_with_child_collection', result='success', message=None, content=None, @@ -849,9 +787,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Stores_user_severity_against_validation_failure', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Stores_user_severity_against_validation_failure', result='success', message=None, content=None, @@ -861,9 +798,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PredicateValidatorTester.' - 'Should_throw_when_predicate_is_null', + class_name='FluentValidation.Tests.PredicateValidatorTester', + test_name='Should_throw_when_predicate_is_null', result='success', message=None, content=None, @@ -873,9 +809,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_validate_single_property', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_validate_single_property', result='success', message=None, content=None, @@ -885,9 +820,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Should_fail_when_equal_to_input', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Should_fail_when_equal_to_input', result='success', message=None, content=None, @@ -897,9 +831,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level_and_async_validator_is_invoked_synchronously', result='success', message=None, @@ -910,9 +843,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Executes_in_rule_in_default_and_none', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_in_rule_in_default_and_none', result='success', message=None, content=None, @@ -922,9 +854,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_inverse_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_inverse_predicate_is_null', result='success', message=None, content=None, @@ -934,9 +865,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_inheritance_hierarchy', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_inheritance_hierarchy', result='success', message=None, content=None, @@ -946,9 +876,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_executed_synchronosuly_with_asynchronous_collection_r' + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_executed_synchronosuly_with_asynchronous_collection_r' 'ule', result='success', message=None, @@ -959,9 +888,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set_for_strings', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set_for_strings', result='success', message=None, content=None, @@ -971,9 +899,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: null)', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: null)', result='success', message=None, content=None, @@ -983,8 +910,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Matches_any_failure', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Matches_any_failure', result='success', message=None, content=None, @@ -994,9 +921,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Validates_type_when_using_non_generic_validate_overload', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Validates_type_when_using_non_generic_validate_overload', result='success', message=None, content=None, @@ -1006,9 +932,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_property', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_property', result='success', message=None, content=None, @@ -1018,9 +943,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Calling_ValidateAsync_should_delegate_to_underlying_async_validator', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Calling_ValidateAsync_should_delegate_to_underlying_async_validator', result='success', message=None, content=None, @@ -1030,9 +954,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' - 'ian_culture(cultureName: "sr")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_serbian_culture(cultureName: "sr")', result='success', message=None, content=None, @@ -1042,9 +965,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_max_is_smaller_than_the_min_then_the_validator_should_throw', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_max_is_smaller_than_the_min_then_the_validator_should_throw', result='success', message=None, content=None, @@ -1054,8 +976,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.Passes_when_collection_empty', + class_name='FluentValidation.Tests.EmptyTester', + test_name='Passes_when_collection_empty', result='success', message=None, content=None, @@ -1065,9 +987,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotNullTester.' - 'NotNullValidator_should_fail_if_value_is_null', + class_name='FluentValidation.Tests.NotNullTester', + test_name='NotNullValidator_should_fail_if_value_is_null', result='success', message=None, content=None, @@ -1077,9 +998,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_property', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_property', result='success', message=None, content=None, @@ -1089,9 +1009,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_s' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_s' 'hould_throw_an_exception', result='success', message=None, @@ -1102,8 +1021,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.Format_property_value', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Format_property_value', result='success', message=None, content=None, @@ -1113,9 +1032,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Falls_back_to_english_when_culture_not_registered', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Falls_back_to_english_when_culture_not_registered', result='success', message=None, content=None, @@ -1125,9 +1043,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Only_root_validator_throws', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Only_root_validator_throws', result='success', message=None, content=None, @@ -1137,9 +1054,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator', result='success', message=None, content=None, @@ -1149,9 +1065,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AccessorCacheTests.' - 'Identifies_if_memberexp_acts_on_model_instance', + class_name='FluentValidation.Tests.AccessorCacheTests', + test_name='Identifies_if_memberexp_acts_on_model_instance', result='success', message=None, content=None, @@ -1161,9 +1076,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' 'en_at_rule_level_legacy', result='success', message=None, @@ -1174,9 +1088,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Result_should_use_custom_property_name_when_no_property_name_can_be_d' + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Result_should_use_custom_property_name_when_no_property_name_can_be_d' 'etermined', result='success', message=None, @@ -1187,9 +1100,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'When_exact_length_rule_failes_error_should_have_exact_length_error_er' + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='When_exact_length_rule_failes_error_should_have_exact_length_error_er' 'rorcode', result='success', message=None, @@ -1200,9 +1112,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value', result='success', message=None, content=None, @@ -1212,9 +1123,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level_async', result='success', message=None, @@ -1225,9 +1135,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Throws_exception_with_a_ruleset', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Throws_exception_with_a_ruleset', result='success', message=None, content=None, @@ -1237,9 +1146,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Ruleset_cascades_to_child_validator', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Ruleset_cascades_to_child_validator', result='success', message=None, content=None, @@ -1249,9 +1157,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_handle_custom_value_types_correctly', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_handle_custom_value_types_correctly', result='success', message=None, content=None, @@ -1261,9 +1168,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Does_not_throw_InvalidCastException_when_using_RuleForEach', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Does_not_throw_InvalidCastException_when_using_RuleForEach', result='success', message=None, content=None, @@ -1273,9 +1179,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorDescriptorTester.' - 'Returns_empty_collection_for_property_with_no_validators', + class_name='FluentValidation.Tests.ValidatorDescriptorTester', + test_name='Returns_empty_collection_for_property_with_no_validators', result='success', message=None, content=None, @@ -1285,9 +1190,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Should_succeed_when_greater_than_input', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Should_succeed_when_greater_than_input', result='success', message=None, content=None, @@ -1297,9 +1201,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'GreaterThan_should_create_GreaterThanValidator_with_lambda', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='GreaterThan_should_create_GreaterThanValidator_with_lambda', result='success', message=None, content=None, @@ -1309,9 +1212,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Executes_rule_for_each_item_in_collection_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Executes_rule_for_each_item_in_collection_async', result='success', message=None, content=None, @@ -1321,9 +1223,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Should_fail_when_less_than_input', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Should_fail_when_less_than_input', result='success', message=None, content=None, @@ -1333,9 +1234,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Conditional_child_validator_should_register_with_validator_type_not_p' + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Conditional_child_validator_should_register_with_validator_type_not_p' 'roperty', result='success', message=None, @@ -1346,9 +1246,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' - 'gex(email: "testperso")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Invalid_email_addressex_regex(email: "testperso")', result='success', message=None, content=None, @@ -1358,9 +1257,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Collection_should_be_explicitly_included_with_expression', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Collection_should_be_explicitly_included_with_expression', result='success', message=None, content=None, @@ -1370,9 +1268,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_throw_for_non_member_expression_when_validating_single_propert' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_throw_for_non_member_expression_when_validating_single_propert' 'y', result='success', message=None, @@ -1383,9 +1280,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Adding_a_validator_should_store_validator', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Adding_a_validator_should_store_validator', result='success', message=None, content=None, @@ -1395,9 +1291,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Async_inside_dependent_rules', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Async_inside_dependent_rules', result='success', message=None, content=None, @@ -1407,9 +1302,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_Custom_Returns_single_failure_async', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_Custom_Returns_single_failure_async', result='success', message=None, content=None, @@ -1419,9 +1313,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_validate_single_property_where_property_as_string', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_validate_single_property_where_property_as_string', result='success', message=None, content=None, @@ -1431,9 +1324,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Can_replace_message_without_overriding_all_languages', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Can_replace_message_without_overriding_all_languages', result='success', message=None, content=None, @@ -1443,9 +1335,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WithName_should_override_field_name_with_value_from_other_property', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WithName_should_override_field_name_with_value_from_other_property', result='success', message=None, content=None, @@ -1455,9 +1346,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "customer/department=shipping@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: ' + '"customer/department=shipping@example.com")', result='success', message=None, content=None, @@ -1467,9 +1358,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'To_and_from_properties_should_be_set', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='To_and_from_properties_should_be_set', result='success', message=None, content=None, @@ -1479,10 +1369,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used' - '(age: 42, cardNumber: null)', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + 'errors__WhenAsyn_is_used(age: 42, cardNumber: null)', result='success', message=None, content=None, @@ -1492,9 +1381,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_a' + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_a' 'sync', result='success', message=None, @@ -1505,9 +1393,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_with_callback_async', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_with_callback_async', result='success', message=None, content=None, @@ -1517,9 +1404,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_async', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_async', result='success', message=None, content=None, @@ -1529,9 +1415,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Validates_complex_property', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Validates_complex_property', result='success', message=None, content=None, @@ -1541,9 +1426,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Should_use_ordinal_comparison_by_default', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Should_use_ordinal_comparison_by_default', result='success', message=None, content=None, @@ -1553,9 +1437,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Executes_correct_rule_when_using_property_with_include_async', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Executes_correct_rule_when_using_property_with_include_async', result='success', message=None, content=None, @@ -1565,9 +1448,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Validates_collection', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Validates_collection', result='success', message=None, content=None, @@ -1577,9 +1459,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Should_localize_value', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Should_localize_value', result='success', message=None, content=None, @@ -1589,9 +1470,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -1601,9 +1481,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' 'e_level_async_legacy', result='success', message=None, @@ -1614,9 +1493,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure', result='success', message=None, content=None, @@ -1626,9 +1504,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Uses_custom_delegate_for_building_message', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Uses_custom_delegate_for_building_message', result='success', message=None, content=None, @@ -1638,8 +1515,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.SimplePropertyGet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='SimplePropertyGet', result='success', message=None, content=None, @@ -1649,9 +1526,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Falls_back_to_default_localization_key_when_error_code_key_not_found', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Falls_back_to_default_localization_key_when_error_code_key_not_found', result='success', message=None, content=None, @@ -1661,9 +1537,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Should_set_default_error_when_validation_fails', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Should_set_default_error_when_validation_fails', result='success', message=None, content=None, @@ -1673,9 +1548,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_be_valid_when_there_are_no_failures_for_single_property', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_be_valid_when_there_are_no_failures_for_single_property', result='success', message=None, content=None, @@ -1685,9 +1559,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Must_should_create_PredicateValidator_with_context', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Must_should_create_PredicateValidator_with_context', result='success', message=None, content=None, @@ -1697,9 +1570,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "@someDomain@abc.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: ' + '"@someDomain@abc.com")', result='success', message=None, content=None, @@ -1709,8 +1582,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.Fails_when_collection_empty', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='Fails_when_collection_empty', result='success', message=None, content=None, @@ -1720,9 +1593,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_value_is_Default_for_type_validator_should_pass_datetime', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_value_is_Default_for_type_validator_should_pass_datetime', result='success', message=None, content=None, @@ -1732,8 +1604,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.ComplexPropertySet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='ComplexPropertySet', result='success', message=None, content=None, @@ -1743,9 +1615,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_with_nullable_when_property_not_null_cross_property', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_with_nullable_when_property_not_null_cross_property', result='success', message=None, content=None, @@ -1755,9 +1626,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'When_runs_outside_RuleForEach_loop_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='When_runs_outside_RuleForEach_loop_async', result='success', message=None, content=None, @@ -1767,9 +1637,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ModelLevelValidatorTests.' - 'Validates_at_model_level', + class_name='FluentValidation.Tests.ModelLevelValidatorTests', + test_name='Validates_at_model_level', result='success', message=None, content=None, @@ -1779,9 +1648,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Uses_string_format_with_property_value', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Uses_string_format_with_property_value', result='success', message=None, content=None, @@ -1791,9 +1659,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Nested_collection_for_null_property_should_not_throw_null_reference', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Nested_collection_for_null_property_should_not_throw_null_reference', result='success', message=None, content=None, @@ -1803,9 +1670,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Should_fail_when_greater_than_input', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Should_fail_when_greater_than_input', result='success', message=None, content=None, @@ -1815,9 +1681,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' 'bda', result='success', message=None, @@ -1828,9 +1693,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Validates_child_validator_synchronously', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Validates_child_validator_synchronously', result='success', message=None, content=None, @@ -1840,9 +1704,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Nullable_enum_valid_when_value_specified', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Nullable_enum_valid_when_value_specified', result='success', message=None, content=None, @@ -1852,9 +1715,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Doesnt_throw_NullReferenceException_when_instance_not_null', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Doesnt_throw_NullReferenceException_when_instance_not_null', result='success', message=None, content=None, @@ -1864,9 +1726,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'Min_and_max_properties_should_be_set', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='Min_and_max_properties_should_be_set', result='success', message=None, content=None, @@ -1876,9 +1737,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WithMessage_and_WithErrorCode_should_override_error_message_and_error' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WithMessage_and_WithErrorCode_should_override_error_message_and_error' '_code', result='success', message=None, @@ -1889,9 +1749,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_async', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_async', result='success', message=None, content=None, @@ -1901,8 +1760,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Nested_conditions_Rule_For', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Nested_conditions_Rule_For', result='success', message=None, content=None, @@ -1912,9 +1771,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Cascade_mode_can_be_set_after_validator_instantiated_legacy', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Cascade_mode_can_be_set_after_validator_instantiated_legacy', result='success', message=None, content=None, @@ -1924,10 +1782,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(' - 'age: 42, cardNumber: "")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_validation_e' + 'rrors__WhenAsyn_is_used(age: 42, cardNumber: "")', result='success', message=None, content=None, @@ -1937,9 +1794,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.' - 'AddIndexer_throws_when_nothing_added', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='AddIndexer_throws_when_nothing_added', result='success', message=None, content=None, @@ -1949,9 +1805,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Collection_should_be_explicitly_included_with_string', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Collection_should_be_explicitly_included_with_string', result='success', message=None, content=None, @@ -1961,9 +1816,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Executes_rules_not_specified_in_ruleset', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_rules_not_specified_in_ruleset', result='success', message=None, content=None, @@ -1973,9 +1827,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' + class_name='FluentValidation.Tests.RulesetTests', + test_name='Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' 'lidator_using_include_statement', result='success', message=None, @@ -1986,9 +1839,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_model_async', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_model_async', result='success', message=None, content=None, @@ -1998,9 +1850,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Condition_should_work_with_complex_property_when_invoked_async', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Condition_should_work_with_complex_property_when_invoked_async', result='success', message=None, content=None, @@ -2010,9 +1861,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'RuleSet_can_be_used_inside_condition', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='RuleSet_can_be_used_inside_condition', result='success', message=None, content=None, @@ -2022,9 +1872,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' - 'Uses_custom_property_name', + class_name='FluentValidation.Tests.NameResolutionPluggabilityTester', + test_name='Uses_custom_property_name', result='success', message=None, content=None, @@ -2034,9 +1883,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Does_not_execute_customasync_Rule_when_condition_false', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Does_not_execute_customasync_Rule_when_condition_false', result='success', message=None, content=None, @@ -2046,9 +1894,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level_async_legacy', result='success', message=None, @@ -2059,8 +1906,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Matches_model_level_rule', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Matches_model_level_rule', result='success', message=None, content=None, @@ -2070,9 +1917,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Should_work_with_top_level_collection_validator_and_overriden_name', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Should_work_with_top_level_collection_validator_and_overriden_name', result='success', message=None, content=None, @@ -2082,9 +1928,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_does_not_match_the_lambda_regex_regular_expression_then' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_does_not_match_the_lambda_regex_regular_expression_then' '_the_validator_should_fail', result='success', message=None, @@ -2095,9 +1940,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_throws_when_property_does_not_have_child_val' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_throws_when_property_does_not_have_child_val' 'idator', result='success', message=None, @@ -2108,9 +1952,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Collection_should_be_explicitly_included_with_string', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Collection_should_be_explicitly_included_with_string', result='success', message=None, content=None, @@ -2120,10 +1963,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' - '(age: 17, cardNumber: "")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + 'errors__WhenAsyn_Is_Used(age: 17, cardNumber: "")', result='success', message=None, content=None, @@ -2133,9 +1975,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' 'il', result='success', message=None, @@ -2146,9 +1987,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_u' + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_u' 'se_DependentRulesBuilder', result='success', message=None, @@ -2159,9 +1999,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_does_not_match_the_lambda_regular_expression_then_the_v' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_does_not_match_the_lambda_regular_expression_then_the_v' 'alidator_should_fail', result='success', message=None, @@ -2172,9 +2011,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: ' + '"@someDomain.com")', result='success', message=None, content=None, @@ -2184,8 +2023,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AccessorCacheTests.Benchmark', + class_name='FluentValidation.Tests.AccessorCacheTests', + test_name='Benchmark', result='skipped', message=None, content=None, @@ -2195,9 +2034,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Should_set_default_validation_message_when_validation_fails', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Should_set_default_validation_message_when_validation_fails', result='success', message=None, content=None, @@ -2207,9 +2045,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Uses_func_to_get_message', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Uses_func_to_get_message', result='success', message=None, content=None, @@ -2219,9 +2056,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_not_null_cross_property', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_not_null_cross_property', result='success', message=None, content=None, @@ -2231,9 +2067,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_nullable_with_nullable_property', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_nullable_with_nullable_property', result='success', message=None, content=None, @@ -2243,9 +2078,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Can_specify_condition_for_individual_collection_elements', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Can_specify_condition_for_individual_collection_elements', result='success', message=None, content=None, @@ -2255,9 +2089,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Can_validate_using_validator_for_base_type', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Can_validate_using_validator_for_base_type', result='success', message=None, content=None, @@ -2267,9 +2100,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Length_should_create_MaximumLengthValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Length_should_create_MaximumLengthValidator', result='success', message=None, content=None, @@ -2279,8 +2111,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Trims_spaces', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Trims_spaces', result='success', message=None, content=None, @@ -2290,9 +2122,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorDescriptorTester.' - 'Should_retrieve_name_given_to_it_pass_property_as_string', + class_name='FluentValidation.Tests.ValidatorDescriptorTester', + test_name='Should_retrieve_name_given_to_it_pass_property_as_string', result='success', message=None, content=None, @@ -2302,9 +2133,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'WhenAsync_condition_only_executed_once', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='WhenAsync_condition_only_executed_once', result='success', message=None, content=None, @@ -2314,9 +2144,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -2326,9 +2155,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_between_the_range_specified_then_the_validator_shou' 'ld_pass', result='success', message=None, @@ -2339,9 +2167,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Must_should_create_PredicteValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Must_should_create_PredicteValidator', result='success', message=None, content=None, @@ -2351,8 +2178,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Applies_multiple_rulesets_to_rule', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Applies_multiple_rulesets_to_rule', result='success', message=None, content=None, @@ -2362,9 +2189,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Flags_enum_invalid_when_using_outofrange_negative_value', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Flags_enum_invalid_when_using_outofrange_negative_value', result='success', message=None, content=None, @@ -2374,9 +2200,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PredicateValidatorTester.' - 'When_validation_fails_the_default_error_should_be_set', + class_name='FluentValidation.Tests.PredicateValidatorTester', + test_name='When_validation_fails_the_default_error_should_be_set', result='success', message=None, content=None, @@ -2386,9 +2211,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "someName@")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: "someName@")', result='success', message=None, content=None, @@ -2398,9 +2222,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_input_is_null_then_the_validator_should_pass', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_input_is_null_then_the_validator_should_pass', result='success', message=None, content=None, @@ -2410,9 +2233,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Cascade_mode_can_be_set_after_validator_instantiated_async', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Cascade_mode_can_be_set_after_validator_instantiated_async', result='success', message=None, content=None, @@ -2422,9 +2244,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ModelLevelValidatorTests.' - 'Can_use_child_validator_at_model_level', + class_name='FluentValidation.Tests.ModelLevelValidatorTests', + test_name='Can_use_child_validator_at_model_level', result='success', message=None, content=None, @@ -2434,9 +2255,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Separate_validation_on_chained_property_conditional', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Separate_validation_on_chained_property_conditional', result='success', message=None, content=None, @@ -2446,9 +2266,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' 'il', result='success', message=None, @@ -2459,9 +2278,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Flags_enum_invalid_when_using_outofrange_positive_value', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Flags_enum_invalid_when_using_outofrange_positive_value', result='success', message=None, content=None, @@ -2471,9 +2289,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_should_not_throw_when_there_are_errors_with' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_not_throw_when_there_are_errors_with' '_preconstructed_object', result='success', message=None, @@ -2484,9 +2301,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_not_be_valid_when_they_are_equal', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_not_be_valid_when_they_are_equal', result='success', message=None, content=None, @@ -2496,9 +2312,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Validates_single_property_by_path', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Validates_single_property_by_path', result='success', message=None, content=None, @@ -2508,9 +2323,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_async_inverse_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_async_inverse_predicate_is_null', result='success', message=None, content=None, @@ -2520,9 +2334,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_inverse_context_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_inverse_context_predicate_is_null', result='success', message=None, content=None, @@ -2532,9 +2345,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_not_throw_when_there_are_validation_' 'errors_ruleforeach', result='success', message=None, @@ -2545,9 +2357,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_to_second_validator_when_first_validator_succeed' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_to_second_validator_when_first_validator_succeed' 's_and_cascade_set_to_stop_async_legacy', result='success', message=None, @@ -2558,8 +2369,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.Validates_collection', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_collection', result='success', message=None, content=None, @@ -2569,9 +2380,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_context_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_context_predicate_is_null', result='success', message=None, content=None, @@ -2581,9 +2391,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'When_validation_fails_the_error_should_be_set', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='When_validation_fails_the_error_should_be_set', result='success', message=None, content=None, @@ -2593,9 +2402,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Should_throw_when_value_to_compare_is_null', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Should_throw_when_value_to_compare_is_null', result='success', message=None, content=None, @@ -2605,9 +2413,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_between_the_lambda_range_specified_then_the_validato' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_between_the_lambda_range_specified_then_the_validato' 'r_should_pass', result='success', message=None, @@ -2618,9 +2425,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotNullTester.' - 'Fails_when_nullable_value_type_is_null', + class_name='FluentValidation.Tests.NotNullTester', + test_name='Fails_when_nullable_value_type_is_null', result='success', message=None, content=None, @@ -2630,9 +2436,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Does_not_throw_when_valid_async', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Does_not_throw_when_valid_async', result='success', message=None, content=None, @@ -2642,9 +2447,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_the_property_is_initialized_with_null_then_the_validator_should_' + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_the_property_is_initialized_with_null_then_the_validator_should_' 'be_valid', result='success', message=None, @@ -2655,10 +2459,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used' - '(age: 42, cardNumber: "")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + 'errors__WhenAsyn_is_used(age: 42, cardNumber: "")', result='success', message=None, content=None, @@ -2668,9 +2471,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' - 'ian_culture(cultureName: "sr-Latn")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_serbian_culture(cultureName: "sr-Latn")', result='success', message=None, content=None, @@ -2680,9 +2482,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' 'il_for_strings', result='success', message=None, @@ -2693,8 +2494,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.Should_be_subchain', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Should_be_subchain', result='success', message=None, content=None, @@ -2704,9 +2505,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'When_the_objects_are_equal_then_the_validator_should_fail', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='When_the_objects_are_equal_then_the_validator_should_fail', result='success', message=None, content=None, @@ -2716,9 +2516,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'When_the_objects_are_not_equal_validation_should_fail', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='When_the_objects_are_not_equal_validation_should_fail', result='success', message=None, content=None, @@ -2728,9 +2527,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'Passes_for_ienumerable_that_doesnt_implement_ICollection', + class_name='FluentValidation.Tests.EmptyTester', + test_name='Passes_for_ienumerable_that_doesnt_implement_ICollection', result='success', message=None, content=None, @@ -2740,9 +2538,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_enumType_is_not_an_enum_it_should_throw', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_enumType_is_not_an_enum_it_should_throw', result='success', message=None, content=None, @@ -2752,9 +2549,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'When_validation_fails_the_default_error_should_be_set', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='When_validation_fails_the_default_error_should_be_set', result='success', message=None, content=None, @@ -2764,9 +2560,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_executed_synchronosuly_with_synchronous_role', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_executed_synchronosuly_with_synchronous_role', result='success', message=None, content=None, @@ -2776,8 +2571,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Tests_nested_property', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Tests_nested_property', result='success', message=None, content=None, @@ -2787,9 +2582,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Validates_child_validator_asynchronously', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Validates_child_validator_asynchronously', result='success', message=None, content=None, @@ -2799,9 +2593,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Separate_validation_on_chained_property', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Separate_validation_on_chained_property', result='success', message=None, content=None, @@ -2811,9 +2604,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'TestAsyncWithDependentRules_SyncEntry', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='TestAsyncWithDependentRules_SyncEntry', result='success', message=None, content=None, @@ -2823,9 +2615,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_is_applied_to_all_validators_in_the_chain', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_is_applied_to_all_validators_in_the_chain', result='success', message=None, content=None, @@ -2835,9 +2626,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' - '(withoutErrMsg: "bar", errMessages: ["bar"])', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["bar"])', result='success', message=None, content=None, @@ -2847,9 +2637,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_model_async', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_model_async', result='success', message=None, content=None, @@ -2859,9 +2648,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Expected_message_argument_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Expected_message_argument_check', result='success', message=None, content=None, @@ -2871,9 +2659,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorDescriptorTester.' - 'Does_not_throw_when_rule_declared_without_property', + class_name='FluentValidation.Tests.ValidatorDescriptorTester', + test_name='Does_not_throw_when_rule_declared_without_property', result='success', message=None, content=None, @@ -2883,9 +2670,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_executed_synchronosuly_with_asynchronous_rule', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_executed_synchronosuly_with_asynchronous_rule', result='success', message=None, content=None, @@ -2895,9 +2681,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' 'idator_level_and_overriden_at_rule_level_async_legacy', result='success', message=None, @@ -2908,9 +2693,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Validates_collection_several_levels_deep', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Validates_collection_several_levels_deep', result='success', message=None, content=None, @@ -2920,9 +2704,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, @@ -2932,9 +2715,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_value_is_whitespace_validation_should_pass', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_value_is_whitespace_validation_should_pass', result='success', message=None, content=None, @@ -2944,8 +2726,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Disables_localization', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Disables_localization', result='success', message=None, content=None, @@ -2955,9 +2737,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Uses_property_value_in_message', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Uses_property_value_in_message', result='success', message=None, content=None, @@ -2967,9 +2748,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Comparison_type', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Comparison_type', result='success', message=None, content=None, @@ -2979,9 +2759,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'When_condition_only_executed_once', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='When_condition_only_executed_once', result='success', message=None, content=None, @@ -2991,8 +2770,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.Should_not_be_subchain', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Should_not_be_subchain', result='success', message=None, content=None, @@ -3002,9 +2781,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true' '_and_all_individual_rules_are_satisfied', result='success', message=None, @@ -3015,8 +2793,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_colletion_index', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_access_colletion_index', result='success', message=None, content=None, @@ -3026,10 +2804,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' - '(age: 17, cardNumber: null)', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + 'errors__WhenAsyn_Is_Used(age: 17, cardNumber: null)', result='success', message=None, content=None, @@ -3039,9 +2816,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Rules_not_invoked_when_inverse_shared_async_condition_does_not_match', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Rules_not_invoked_when_inverse_shared_async_condition_does_not_match', result='success', message=None, content=None, @@ -3051,10 +2827,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' - 'sed(age: 17, cardNumber: "")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_not_validati' + 'on_errors__WhenAsyn_is_used(age: 17, cardNumber: "")', result='success', message=None, content=None, @@ -3064,9 +2839,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_predicate_is_null', result='success', message=None, content=None, @@ -3076,9 +2850,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Nested_conditions_Rule_For_Each', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Nested_conditions_Rule_For_Each', result='success', message=None, content=None, @@ -3088,9 +2861,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_not_be_valid_for_case_insensitve_comparison_with_expression', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_not_be_valid_for_case_insensitve_comparison_with_expression', result='success', message=None, content=None, @@ -3100,9 +2872,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Correctly_gets_collection_indices', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Correctly_gets_collection_indices', result='success', message=None, content=None, @@ -3112,9 +2883,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_validate_single_property_where_invalid_property_as_string', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_validate_single_property_where_invalid_property_as_string', result='success', message=None, content=None, @@ -3124,9 +2894,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Nullable_enum_valid_when_property_value_is_null', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Nullable_enum_valid_when_property_value_is_null', result='success', message=None, content=None, @@ -3136,9 +2905,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.' - 'Should_not_be_valid_when_there_are_errors', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='Should_not_be_valid_when_there_are_errors', result='success', message=None, content=None, @@ -3148,9 +2916,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Correctly_provides_object_being_validated', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Correctly_provides_object_being_validated', result='success', message=None, content=None, @@ -3160,9 +2927,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Unexpected_error_code_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_error_code_check', result='success', message=None, content=None, @@ -3172,9 +2938,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Complex_property_should_be_excluded', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Complex_property_should_be_excluded', result='success', message=None, content=None, @@ -3184,9 +2949,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainingValidatorsTester.' - 'Should_execute_multiple_validators', + class_name='FluentValidation.Tests.ChainingValidatorsTester', + test_name='Should_execute_multiple_validators', result='success', message=None, content=None, @@ -3196,9 +2960,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_throw_when_there_are_errors', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_errors', result='success', message=None, content=None, @@ -3208,9 +2971,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Should_succeed_when_greater_than_input', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Should_succeed_when_greater_than_input', result='success', message=None, content=None, @@ -3220,10 +2982,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' - '(age: 42, cardNumber: "cardNumber")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + 'errors__WhenAsyn_Is_Used(age: 42, cardNumber: "cardNumber")', result='success', message=None, content=None, @@ -3233,9 +2994,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'TestAsyncWithDependentRules_AsyncEntry', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='TestAsyncWithDependentRules_AsyncEntry', result='success', message=None, content=None, @@ -3245,9 +3005,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'All_localizations_have_same_parameters_as_English', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='All_localizations_have_same_parameters_as_English', result='success', message=None, content=None, @@ -3257,9 +3016,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Async_condition_should_work_with_child_collection', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Async_condition_should_work_with_child_collection', result='success', message=None, content=None, @@ -3269,9 +3027,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.' - 'Calling_ToString_should_construct_string_representation_of_chain', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Calling_ToString_should_construct_string_representation_of_chain', result='success', message=None, content=None, @@ -3281,9 +3038,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Falls_back_to_english_when_translation_missing', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Falls_back_to_english_when_translation_missing', result='success', message=None, content=None, @@ -3293,9 +3049,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotNullTester.' - 'NotNullValidator_should_pass_if_value_has_value', + class_name='FluentValidation.Tests.NotNullTester', + test_name='NotNullValidator_should_pass_if_value_has_value', result='success', message=None, content=None, @@ -3305,9 +3060,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' - '(withoutErrMsg: "bar", errMessages: ["foo"])', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo"])', result='success', message=None, content=None, @@ -3317,9 +3071,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Gets_translation_for_croatian_culture', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_croatian_culture', result='success', message=None, content=None, @@ -3329,9 +3082,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_should_work_with_DependentRules', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_should_work_with_DependentRules', result='success', message=None, content=None, @@ -3341,9 +3093,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' - 'Resolves_nested_properties', + class_name='FluentValidation.Tests.NameResolutionPluggabilityTester', + test_name='Resolves_nested_properties', result='success', message=None, content=None, @@ -3353,9 +3104,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate', result='success', message=None, content=None, @@ -3365,9 +3115,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'To_and_from_properties_should_be_set', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='To_and_from_properties_should_be_set', result='success', message=None, content=None, @@ -3377,8 +3126,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.Uses_explicit_ruleset', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Uses_explicit_ruleset', result='success', message=None, content=None, @@ -3388,9 +3137,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.' - 'ToString_return_error_messages_with_given_separator', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='ToString_return_error_messages_with_given_separator', result='success', message=None, content=None, @@ -3400,9 +3148,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Can_validate_collection_using_validator_for_base_type', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Can_validate_collection_using_validator_for_base_type', result='success', message=None, content=None, @@ -3412,9 +3159,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, @@ -3424,10 +3170,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' - 'sed(age: 42, cardNumber: "cardNumber")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_not_validati' + 'on_errors__WhenAsyn_is_used(age: 42, cardNumber: "cardNumber")', result='success', message=None, content=None, @@ -3437,9 +3182,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_async', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_async', result='success', message=None, content=None, @@ -3449,9 +3193,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' 'tor_should_pass_for_strings', result='success', message=None, @@ -3462,9 +3205,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "0")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: "0")', result='success', message=None, content=None, @@ -3474,9 +3216,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_fail_when_async_condition_does_not_match', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_fail_when_async_condition_does_not_match', result='success', message=None, content=None, @@ -3486,9 +3227,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_not_be_valid', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_not_be_valid', result='success', message=None, content=None, @@ -3498,9 +3238,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Nullable_enum_invalid_when_bad_value_specified', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Nullable_enum_invalid_when_bad_value_specified', result='success', message=None, content=None, @@ -3510,9 +3249,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'LessThan_should_create_LessThanValidator_with_explicit_value', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='LessThan_should_create_LessThanValidator_with_explicit_value', result='success', message=None, content=None, @@ -3522,9 +3260,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_Custom_Returns_single_failure', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_Custom_Returns_single_failure', result='success', message=None, content=None, @@ -3534,8 +3271,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Top_level_collection', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Top_level_collection', result='success', message=None, content=None, @@ -3545,9 +3282,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_should_not_throw_when_there_are_validation_' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_not_throw_when_there_are_validation_' 'errors', result='success', message=None, @@ -3558,8 +3294,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.IsValidTests', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='IsValidTests', result='success', message=None, content=None, @@ -3569,9 +3305,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_value_is_Default_for_type_validator_should_fail_datetime', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_value_is_Default_for_type_validator_should_fail_datetime', result='success', message=None, content=None, @@ -3581,9 +3316,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "!def!xyz%abc@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "!def!xyz%abc@example.com")', result='success', message=None, content=None, @@ -3593,8 +3327,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Validates_collection', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Validates_collection', result='success', message=None, content=None, @@ -3604,8 +3338,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.ImplicitCast', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='ImplicitCast', result='success', message=None, content=None, @@ -3615,9 +3349,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_value_is_Default_for_type_validator_should_fail_int', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_value_is_Default_for_type_validator_should_fail_int', result='success', message=None, content=None, @@ -3627,9 +3360,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Formats_string_with_placeholders', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Formats_string_with_placeholders', result='success', message=None, content=None, @@ -3639,9 +3371,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor', result='success', message=None, content=None, @@ -3651,9 +3382,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Doesnt_throw_NullReferenceException_when_instance_not_null_async', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Doesnt_throw_NullReferenceException_when_instance_not_null_async', result='success', message=None, content=None, @@ -3663,8 +3393,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.SimpleFieldGet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='SimpleFieldGet', result='success', message=None, content=None, @@ -3674,9 +3404,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Replaces_propertyvalue_with_empty_string_when_null', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Replaces_propertyvalue_with_empty_string_when_null', result='success', message=None, content=None, @@ -3686,9 +3415,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedNameTester.' - 'Uses_localized_name_expression', + class_name='FluentValidation.Tests.LocalisedNameTester', + test_name='Uses_localized_name_expression', result='success', message=None, content=None, @@ -3698,9 +3426,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_does_not_match_the_regular_expression_then_the_validato' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_does_not_match_the_regular_expression_then_the_validato' 'r_should_fail', result='success', message=None, @@ -3711,9 +3438,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomFailureActionTester.' - 'Does_not_invoke_action_if_validation_success', + class_name='FluentValidation.Tests.CustomFailureActionTester', + test_name='Does_not_invoke_action_if_validation_success', result='success', message=None, content=None, @@ -3723,9 +3449,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Should_succeed_when_less_than_input', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Should_succeed_when_less_than_input', result='success', message=None, content=None, @@ -3735,9 +3460,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'CanValidateInstancesOfType_returns_true_when_comparing_against_same_t' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='CanValidateInstancesOfType_returns_true_when_comparing_against_same_t' 'ype', result='success', message=None, @@ -3748,9 +3472,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' 'alidator_level_async', result='success', message=None, @@ -3761,9 +3484,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Executes_custom_rule_when_async_condition_true', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Executes_custom_rule_when_async_condition_true', result='success', message=None, content=None, @@ -3773,9 +3495,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Should_not_scramble_property_name_when_using_collection_validators_se' + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Should_not_scramble_property_name_when_using_collection_validators_se' 'veral_levels_deep_with_ValidateAsync', result='success', message=None, @@ -3786,9 +3507,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Adds_formatted_argument_and_formatted_custom_arguments', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Adds_formatted_argument_and_formatted_custom_arguments', result='success', message=None, content=None, @@ -3798,9 +3518,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "\\"Abc\\\\@def\\"@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "\\"Abc\\\\@def\\"@example.com")', result='success', message=None, content=None, @@ -3810,9 +3529,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PredicateValidatorTester.' - 'When_validation_fails_metadata_should_be_set_on_failure', + class_name='FluentValidation.Tests.PredicateValidatorTester', + test_name='When_validation_fails_metadata_should_be_set_on_failure', result='success', message=None, content=None, @@ -3822,9 +3540,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.' - 'Calling_ToString_should_construct_string_representation_of_chain_with' + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Calling_ToString_should_construct_string_representation_of_chain_with' '_indexers', result='success', message=None, @@ -3835,9 +3552,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Does_not_throw_when_valid_and_a_ruleset', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Does_not_throw_when_valid_and_a_ruleset', result='success', message=None, content=None, @@ -3847,9 +3563,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -3859,9 +3574,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Can_replace_default_errorcode_resolver', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Can_replace_default_errorcode_resolver', result='success', message=None, content=None, @@ -3871,9 +3585,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Calling_validate_should_delegate_to_underlying_validator', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Calling_validate_should_delegate_to_underlying_validator', result='success', message=None, content=None, @@ -3883,9 +3596,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NullTester.' - 'NullValidator_should_pass_if_value_is_null', + class_name='FluentValidation.Tests.NullTester', + test_name='NullValidator_should_pass_if_value_is_null', result='success', message=None, content=None, @@ -3895,9 +3607,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserStateTester.' - 'Correctly_provides_object_being_validated', + class_name='FluentValidation.Tests.UserStateTester', + test_name='Correctly_provides_object_being_validated', result='success', message=None, content=None, @@ -3907,9 +3618,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_larger_than_the_range_then_the_validator_should_fail', result='success', message=None, content=None, @@ -3919,9 +3629,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'When_the_enum_is_initialized_with_invalid_value_then_the_validator_sh' + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='When_the_enum_is_initialized_with_invalid_value_then_the_validator_sh' 'ould_fail', result='success', message=None, @@ -3932,9 +3641,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Tests_nested_property_using_obsolete_method', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Tests_nested_property_using_obsolete_method', result='success', message=None, content=None, @@ -3944,9 +3652,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Can_access_expression_in_message', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Can_access_expression_in_message', result='success', message=None, content=None, @@ -3956,8 +3663,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.Can_serialize_result', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='Can_serialize_result', result='success', message=None, content=None, @@ -3967,9 +3674,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' 'idator_level_and_overriden_at_rule_level_async', result='success', message=None, @@ -3980,9 +3686,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Async_condition_can_be_used_inside_ruleset', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Async_condition_can_be_used_inside_ruleset', result='success', message=None, content=None, @@ -3992,8 +3697,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.Comparison_Type', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Comparison_Type', result='success', message=None, content=None, @@ -4003,9 +3708,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Validates_child_validator_synchronously', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Validates_child_validator_synchronously', result='success', message=None, content=None, @@ -4015,8 +3719,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CreditCardValidatorTests.IsValidTests', + class_name='FluentValidation.Tests.CreditCardValidatorTests', + test_name='IsValidTests', result='success', message=None, content=None, @@ -4026,9 +3730,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_to_second_validator_when_first_validator_succeed' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_to_second_validator_when_first_validator_succeed' 's_and_cascade_set_to_stop', result='success', message=None, @@ -4039,9 +3742,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_enumType_is_null_it_should_throw', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_enumType_is_null_it_should_throw', result='success', message=None, content=None, @@ -4051,9 +3753,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_nullable_with_nullable_property', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_nullable_with_nullable_property', result='success', message=None, content=None, @@ -4063,9 +3764,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Replaces_propertyvalue_placeholder', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Replaces_propertyvalue_placeholder', result='success', message=None, content=None, @@ -4075,9 +3775,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_not_validation_' 'errors_ruleforeach', result='success', message=None, @@ -4088,9 +3787,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_store_property_to_compare', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_store_property_to_compare', result='success', message=None, content=None, @@ -4100,9 +3798,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_property', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_property', result='success', message=None, content=None, @@ -4112,9 +3809,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_nullable_property', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_property', result='success', message=None, content=None, @@ -4124,9 +3820,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously', result='success', message=None, content=None, @@ -4136,9 +3831,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass', result='success', message=None, content=None, @@ -4148,9 +3842,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Executes_rules_in_specified_ruleset', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_rules_in_specified_ruleset', result='success', message=None, content=None, @@ -4160,9 +3853,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Async_condition_should_work_with_complex_property_when_validator_invo' + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Async_condition_should_work_with_complex_property_when_validator_invo' 'ked_synchronously', result='success', message=None, @@ -4173,9 +3865,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "someName@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"someName@someDomain.com")', result='success', message=None, content=None, @@ -4185,9 +3877,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WithErrorCode_should_override_error_code', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WithErrorCode_should_override_error_code', result='success', message=None, content=None, @@ -4197,9 +3888,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validat' + class_name='FluentValidation.Tests.OnFailureTests', + test_name='WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validat' 'or', result='success', message=None, @@ -4210,9 +3900,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' 'e_level_async', result='success', message=None, @@ -4223,9 +3912,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Should_allow_normal_rules_and_chained_property_on_same_property', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Should_allow_normal_rules_and_chained_property_on_same_property', result='success', message=None, content=None, @@ -4235,9 +3923,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inn' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inn' 'er_Unless_predicate_fails', result='success', message=None, @@ -4248,9 +3935,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_wi' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_wi' 'th_other_Nullable', result='success', message=None, @@ -4261,9 +3947,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_with_nullable_when_property_null_cross_property', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_with_nullable_when_property_null_cross_property', result='success', message=None, content=None, @@ -4273,9 +3958,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'When_the_objects_are_not_equal_then_the_validator_should_pass', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='When_the_objects_are_not_equal_then_the_validator_should_pass', result='success', message=None, content=None, @@ -4285,9 +3969,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails', result='success', message=None, content=None, @@ -4297,9 +3980,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.' - 'Should_be_valid_when_there_are_no_errors', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='Should_be_valid_when_there_are_no_errors', result='success', message=None, content=None, @@ -4309,9 +3991,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Default_error_code_should_be_class_name', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Default_error_code_should_be_class_name', result='success', message=None, content=None, @@ -4321,9 +4002,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_' 'validator_should_pass', result='success', message=None, @@ -4334,9 +4014,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StandalonePropertyValidationTester.' - 'Should_validate_property_value_without_instance', + class_name='FluentValidation.Tests.StandalonePropertyValidationTester', + test_name='Should_validate_property_value_without_instance', result='success', message=None, content=None, @@ -4346,9 +4025,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Includes_nested_property_using_expression', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Includes_nested_property_using_expression', result='success', message=None, content=None, @@ -4358,9 +4036,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: null)', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: null)', result='success', message=None, content=None, @@ -4370,9 +4047,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'MustAsync_should_create_AsyncPredicteValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='MustAsync_should_create_AsyncPredicteValidator', result='success', message=None, content=None, @@ -4382,9 +4058,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Length_should_create_ExactLengthValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Length_should_create_ExactLengthValidator', result='success', message=None, content=None, @@ -4394,9 +4069,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Can_access_expression_in_message_lambda_regex', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Can_access_expression_in_message_lambda_regex', result='success', message=None, content=None, @@ -4406,9 +4080,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Should_set_default_error_when_validation_fails', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Should_set_default_error_when_validation_fails', result='success', message=None, content=None, @@ -4418,9 +4091,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' 'tor_should_fail_for_strings', result='success', message=None, @@ -4431,9 +4103,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_in' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_in' 'ner_Unless_predicate_is_satisfied', result='success', message=None, @@ -4444,9 +4115,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.' - 'ToString_return_empty_string_when_there_is_no_error', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='ToString_return_empty_string_when_there_is_no_error', result='success', message=None, content=None, @@ -4456,9 +4126,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Allows_only_one_failure_to_match', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Allows_only_one_failure_to_match', result='success', message=None, content=None, @@ -4468,9 +4137,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Executes_custom_rule_when_condition_true', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Executes_custom_rule_when_condition_true', result='success', message=None, content=None, @@ -4480,10 +4148,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(' - 'age: 42, cardNumber: null)', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_validation_e' + 'rrors__WhenAsyn_is_used(age: 42, cardNumber: null)', result='success', message=None, content=None, @@ -4493,9 +4160,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' - 'ian_latin_culture(cultureName: "bs-Latn-BA")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn-BA")', result='success', message=None, content=None, @@ -4505,9 +4171,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_smaller_than_the_range_then_the_validator_should_fa' 'il_for_strings', result='success', message=None, @@ -4518,9 +4183,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Validates_chained_property', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Validates_chained_property', result='success', message=None, content=None, @@ -4530,9 +4194,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Runs_otherwise_conditions_for_WhenAsync', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Runs_otherwise_conditions_for_WhenAsync', result='success', message=None, content=None, @@ -4542,9 +4205,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'When_async_condition_executed_for_each_instance_of_RuleForEach_condit' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='When_async_condition_executed_for_each_instance_of_RuleForEach_condit' 'ion_should_not_be_cached', result='success', message=None, @@ -4555,9 +4217,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Length_should_create_MinimumLengthValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Length_should_create_MinimumLengthValidator', result='success', message=None, content=None, @@ -4567,9 +4228,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Executes_in_rule_in_ruleset_and_default', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_in_rule_in_ruleset_and_default', result='success', message=None, content=None, @@ -4579,9 +4239,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Should_set_default_error_when_validation_fails', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Should_set_default_error_when_validation_fails', result='success', message=None, content=None, @@ -4591,9 +4250,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Can_use_custom_subclass_with_nongeneric_overload', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Can_use_custom_subclass_with_nongeneric_overload', result='success', message=None, content=None, @@ -4603,8 +4261,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.Serializes_exception', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Serializes_exception', result='success', message=None, content=None, @@ -4614,9 +4272,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Nested_async_conditions_with_Custom_rule', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Nested_async_conditions_with_Custom_rule', result='success', message=None, content=None, @@ -4626,9 +4283,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'PreValidate_bypasses_nullcheck_on_instance', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='PreValidate_bypasses_nullcheck_on_instance', result='success', message=None, content=None, @@ -4638,9 +4294,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'GreaterThan_should_create_GreaterThanValidator_with_explicit_value', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='GreaterThan_should_create_GreaterThanValidator_with_explicit_value', result='success', message=None, content=None, @@ -4650,9 +4305,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' - 'gex(email: "thisisaverylongstringcodeplex.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Invalid_email_addressex_regex(email: ' + '"thisisaverylongstringcodeplex.com")', result='success', message=None, content=None, @@ -4662,9 +4317,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WithMessage_should_override_error_message', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WithMessage_should_override_error_message', result='success', message=None, content=None, @@ -4674,9 +4328,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Expected_error_code_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Expected_error_code_check', result='success', message=None, content=None, @@ -4686,9 +4339,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Understands_numeric_formats', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Understands_numeric_formats', result='success', message=None, content=None, @@ -4698,9 +4350,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Should_override_property_name', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Should_override_property_name', result='success', message=None, content=None, @@ -4710,9 +4361,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Adds_formatted_argument_and_custom_arguments', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Adds_formatted_argument_and_custom_arguments', result='success', message=None, content=None, @@ -4722,9 +4372,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Nested_conditions_with_Custom_rule', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Nested_conditions_with_Custom_rule', result='success', message=None, content=None, @@ -4734,9 +4383,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_Custom_When_property_name_omitted_infers_property_name_nested', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_Custom_When_property_name_omitted_infers_property_name_nested', result='success', message=None, content=None, @@ -4746,9 +4394,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Validates_property_using_expression', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Validates_property_using_expression', result='success', message=None, content=None, @@ -4758,10 +4405,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' - 'sed(age: 17, cardNumber: "cardNumber")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_not_validati' + 'on_errors__WhenAsyn_is_used(age: 17, cardNumber: "cardNumber")', result='success', message=None, content=None, @@ -4771,9 +4417,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Extracts_property_from_expression', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Extracts_property_from_expression', result='success', message=None, content=None, @@ -4783,9 +4428,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Validates_collection_several_levels_deep_async', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Validates_collection_several_levels_deep_async', result='success', message=None, content=None, @@ -4795,9 +4439,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level_and_async_validator_is_invoked_synchronously_l' 'egacy', result='success', @@ -4809,9 +4452,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_use_ordinal_comparison_by_default', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_use_ordinal_comparison_by_default', result='success', message=None, content=None, @@ -4821,9 +4463,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AssemblyScannerTester.' - 'Finds_validators_for_types', + class_name='FluentValidation.Tests.AssemblyScannerTester', + test_name='Finds_validators_for_types', result='success', message=None, content=None, @@ -4833,9 +4474,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Falls_back_to_parent_culture', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Falls_back_to_parent_culture', result='success', message=None, content=None, @@ -4845,9 +4485,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'ShouldHaveChildValidator_should_be_true', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='ShouldHaveChildValidator_should_be_true', result='success', message=None, content=None, @@ -4857,9 +4496,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_inv' + class_name='FluentValidation.Tests.OnFailureTests', + test_name='WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_inv' 'oked_synchronously', result='success', message=None, @@ -4870,9 +4508,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_legacy', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_legacy', result='success', message=None, content=None, @@ -4882,9 +4519,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_the_property_is_initialized_with_empty_string_then_the_validator' + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_the_property_is_initialized_with_empty_string_then_the_validator' '_should_fail', result='success', message=None, @@ -4895,9 +4531,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AssemblyScannerTester.' - 'ForEach_iterates_over_types', + class_name='FluentValidation.Tests.AssemblyScannerTester', + test_name='ForEach_iterates_over_types', result='success', message=None, content=None, @@ -4907,9 +4542,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_serb' - 'ian_culture(cultureName: "sr-Latn-RS")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_serbian_culture(cultureName: "sr-Latn-RS")', result='success', message=None, content=None, @@ -4919,9 +4553,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Nullable_object_with_condition_should_not_throw', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Nullable_object_with_condition_should_not_throw', result='success', message=None, content=None, @@ -4931,9 +4564,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_smaller_than_the_range_then_the_validator_should_fai' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_smaller_than_the_range_then_the_validator_should_fai' 'l', result='success', message=None, @@ -4944,8 +4576,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AccessorCacheTests.Equality_comparison_check', + class_name='FluentValidation.Tests.AccessorCacheTests', + test_name='Equality_comparison_check', result='success', message=None, content=None, @@ -4955,9 +4587,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "\\"Joe\\\\Blow\\"@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "\\"Joe\\\\Blow\\"@example.com")', result='success', message=None, content=None, @@ -4967,9 +4598,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Property_should_return_null_when_it_is_not_a_property_being_validated', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Property_should_return_null_when_it_is_not_a_property_being_validated', result='success', message=None, content=None, @@ -4979,8 +4609,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_severity_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Expected_severity_check', result='success', message=None, content=None, @@ -4990,8 +4620,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_parent_index', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_access_parent_index', result='success', message=None, content=None, @@ -5001,9 +4631,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_if_overriding_validator_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_if_overriding_validator_is_null', result='success', message=None, content=None, @@ -5013,9 +4642,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_between_the_range_specified_then_the_validator_shoul' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_between_the_range_specified_then_the_validator_shoul' 'd_pass', result='success', message=None, @@ -5026,9 +4654,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Should_succeed_when_less_than_input', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Should_succeed_when_less_than_input', result='success', message=None, content=None, @@ -5038,9 +4665,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_succeed_when_async_condition_matches', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_succeed_when_async_condition_matches', result='success', message=None, content=None, @@ -5050,9 +4676,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Should_format_custom_message', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Should_format_custom_message', result='success', message=None, content=None, @@ -5062,9 +4687,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Should_allow_normal_rules_and_complex_property_on_same_property', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Should_allow_normal_rules_and_complex_property_on_same_property', result='success', message=None, content=None, @@ -5074,10 +4698,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldNotHaveValidationE' - 'rror_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_u' - 'sed(age: 17, cardNumber: null)', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_not_validati' + 'on_errors__WhenAsyn_is_used(age: 17, cardNumber: null)', result='success', message=None, content=None, @@ -5087,8 +4710,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Collection_should_be_excluded', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Collection_should_be_excluded', result='success', message=None, content=None, @@ -5098,9 +4721,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_' 'value', result='success', message=None, @@ -5111,9 +4733,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Executes_rules_in_default_ruleset_and_specific_ruleset', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_rules_in_default_ruleset_and_specific_ruleset', result='success', message=None, content=None, @@ -5123,8 +4744,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Includes_all_rulesets', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Includes_all_rulesets', result='success', message=None, content=None, @@ -5134,9 +4755,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Complex_validator_should_not_be_invoked_on_null_property', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Complex_validator_should_not_be_invoked_on_null_property', result='success', message=None, content=None, @@ -5146,9 +4766,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_not_throw_when_there_are_not_vali' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_not_throw_when_there_are_not_vali' 'dation_errors_ruleforeach', result='success', message=None, @@ -5159,9 +4778,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Condition_should_work_with_chained_property', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Condition_should_work_with_chained_property', result='success', message=None, content=None, @@ -5171,9 +4789,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_executed_synchronosuly_with_synchronous_collection_ro' + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_executed_synchronosuly_with_synchronous_collection_ro' 'le', result='success', message=None, @@ -5184,9 +4801,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_works_on_model_level_rules', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_works_on_model_level_rules', result='success', message=None, content=None, @@ -5196,9 +4812,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'CanValidateInstancesOfType_returns_false_when_comparing_against_some_' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='CanValidateInstancesOfType_returns_false_when_comparing_against_some_' 'other_type', result='success', message=None, @@ -5209,9 +4824,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'To_and_from_properties_should_be_set_for_strings', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='To_and_from_properties_should_be_set_for_strings', result='success', message=None, content=None, @@ -5221,9 +4835,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Collection_should_be_excluded', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Collection_should_be_excluded', result='success', message=None, content=None, @@ -5233,9 +4846,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Ruleset_cascades_to_child_collection_validator', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Ruleset_cascades_to_child_collection_validator', result='success', message=None, content=None, @@ -5245,8 +4857,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Skips_null_items', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Skips_null_items', result='success', message=None, content=None, @@ -5256,9 +4868,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_is_null_cross_property', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_is_null_cross_property', result='success', message=None, content=None, @@ -5268,9 +4879,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TransformTests.' - 'Transforms_collection_element_async', + class_name='FluentValidation.Tests.TransformTests', + test_name='Transforms_collection_element_async', result='success', message=None, content=None, @@ -5280,9 +4890,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' - 'nsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: )', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(p' + 'reValidationResult: )', result='success', message=None, content=None, @@ -5292,9 +4902,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', result='success', message=None, content=None, @@ -5304,9 +4913,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Cascade_mode_can_be_set_after_validator_instantiated_async_legacy', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Cascade_mode_can_be_set_after_validator_instantiated_async_legacy', result='success', message=None, content=None, @@ -5316,9 +4924,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'CanValidateInstancesOfType_returns_true_when_comparing_against_subcla' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='CanValidateInstancesOfType_returns_true_when_comparing_against_subcla' 'ss', result='success', message=None, @@ -5329,9 +4936,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_maxlength_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_maxlength_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -5341,9 +4947,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_' 'should_throw_an_exception', result='success', message=None, @@ -5354,9 +4959,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_when_set_to_Continue_at_validator_level_async', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_when_set_to_Continue_at_validator_level_async', result='success', message=None, content=None, @@ -5366,8 +4970,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_state_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_state_check', result='success', message=None, content=None, @@ -5377,9 +4981,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "!#$%&\'*+-/=?^_`|~@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"!#$%&\'*+-/=?^_`|~@someDomain.com")', result='success', message=None, content=None, @@ -5389,9 +4993,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -5401,9 +5004,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_succeed_when_condition_matches', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_succeed_when_condition_matches', result='success', message=None, content=None, @@ -5413,8 +5015,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.WithMessage_works_inside_rulesets', + class_name='FluentValidation.Tests.RulesetTests', + test_name='WithMessage_works_inside_rulesets', result='success', message=None, content=None, @@ -5424,9 +5026,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'NotNull_should_create_NotNullValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='NotNull_should_create_NotNullValidator', result='success', message=None, content=None, @@ -5436,9 +5037,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidato' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidato' 'rContext', result='success', message=None, @@ -5449,9 +5049,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WithName_should_override_field_name', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WithName_should_override_field_name', result='success', message=None, content=None, @@ -5461,9 +5060,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' 'en_at_rule_level', result='success', message=None, @@ -5474,9 +5072,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainingValidatorsTester.' - 'Options_should_only_apply_to_current_validator', + class_name='FluentValidation.Tests.ChainingValidatorsTester', + test_name='Options_should_only_apply_to_current_validator', result='success', message=None, content=None, @@ -5486,9 +5083,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "someName@some~domain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"someName@some~domain.com")', result='success', message=None, content=None, @@ -5498,9 +5095,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotNullTester.' - 'Not_null_validator_should_not_crash_with_non_nullable_value_type', + class_name='FluentValidation.Tests.NotNullTester', + test_name='Not_null_validator_should_not_crash_with_non_nullable_value_type', result='success', message=None, content=None, @@ -5510,9 +5106,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is' '_false', result='success', message=None, @@ -5523,9 +5118,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_if_property_name_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_if_property_name_is_null', result='success', message=None, content=None, @@ -5535,9 +5129,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_nullable_property', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_nullable_property', result='success', message=None, content=None, @@ -5547,9 +5140,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'ToString_provides_error_details', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='ToString_provides_error_details', result='success', message=None, content=None, @@ -5559,9 +5151,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' + class_name='FluentValidation.Tests.RulesetTests', + test_name='Ruleset_selection_should_cascade_downwards_with_when_setting_child_va' 'lidator_using_include_statement_with_lambda', result='success', message=None, @@ -5572,9 +5163,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Uses_named_parameters_to_validate_ruleset', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Uses_named_parameters_to_validate_ruleset', result='success', message=None, content=None, @@ -5584,9 +5174,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_validation_fails_error_should_be_set', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_validation_fails_error_should_be_set', result='success', message=None, content=None, @@ -5596,9 +5185,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Sync_condition_is_applied_to_async_validators', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Sync_condition_is_applied_to_async_validators', result='success', message=None, content=None, @@ -5608,9 +5196,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "someName@someDomain\uffef.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"someName@someDomain\uffef.com")', result='success', message=None, content=None, @@ -5620,9 +5208,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Should_store_property_to_compare', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Should_store_property_to_compare', result='success', message=None, content=None, @@ -5632,9 +5219,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' - 'ian_latin_culture(cultureName: "bs-Latn")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn")', result='success', message=None, content=None, @@ -5644,9 +5230,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'TestValidate_runs_async_throws', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='TestValidate_runs_async_throws', result='success', message=None, content=None, @@ -5656,9 +5241,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'WhenWithOnFailure_should_invoke_condition_on_inner_validator', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='WhenWithOnFailure_should_invoke_condition_on_inner_validator', result='success', message=None, content=None, @@ -5668,9 +5252,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Nested_conditions_with_CustomAsync_rule', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Nested_conditions_with_CustomAsync_rule', result='success', message=None, content=None, @@ -5680,9 +5263,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Can_validate_using_validator_for_base_type', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Can_validate_using_validator_for_base_type', result='success', message=None, content=None, @@ -5692,9 +5274,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_value_is_empty_string_validator_should_fail', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_value_is_empty_string_validator_should_fail', result='success', message=None, content=None, @@ -5704,9 +5285,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "\\"firstName.lastName\\"@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"\\"firstName.lastName\\"@someDomain.com")', result='success', message=None, content=None, @@ -5716,8 +5297,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_state_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Expected_state_check', result='success', message=None, content=None, @@ -5727,9 +5308,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validat' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validat' 'or_should_pass', result='success', message=None, @@ -5740,9 +5320,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Does_not_throw_when_valid', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Does_not_throw_when_valid', result='success', message=None, content=None, @@ -5752,8 +5331,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Overrides_indexer_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Overrides_indexer_async', result='success', message=None, content=None, @@ -5763,9 +5342,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_should_not_throw_when_property_has_collectio' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_should_not_throw_when_property_has_collectio' 'n_validators', result='success', message=None, @@ -5776,9 +5354,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_be_valid_when_ignoring_trailing_zeroes', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_be_valid_when_ignoring_trailing_zeroes', result='success', message=None, content=None, @@ -5788,9 +5365,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'All_languages_should_be_loaded', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='All_languages_should_be_loaded', result='success', message=None, content=None, @@ -5800,9 +5376,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'When_the_validators_fail_then_validatorrunner_should_return_false', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='When_the_validators_fail_then_validatorrunner_should_return_false', result='success', message=None, content=None, @@ -5812,9 +5387,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_when_async_predicate_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_when_async_predicate_is_null', result='success', message=None, content=None, @@ -5824,9 +5398,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_there_is_a_value_then_the_validator_should_pass', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_there_is_a_value_then_the_validator_should_pass', result='success', message=None, content=None, @@ -5836,9 +5409,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'To_and_from_properties_should_be_set_for_strings', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='To_and_from_properties_should_be_set_for_strings', result='success', message=None, content=None, @@ -5848,9 +5420,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Should_fail_when_equal_to_input', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Should_fail_when_equal_to_input', result='success', message=None, content=None, @@ -5860,8 +5431,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.Can_serialize_failure', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='Can_serialize_failure', result='success', message=None, content=None, @@ -5871,9 +5442,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Unexpected_severity_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_severity_check', result='success', message=None, content=None, @@ -5883,9 +5453,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' 'idator_level_and_overriden_at_rule_level_legacy', result='success', message=None, @@ -5896,9 +5465,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_is_empty_then_the_validator_should_fail', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_is_empty_then_the_validator_should_fail', result='success', message=None, content=None, @@ -5908,9 +5476,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TransformTests.' - 'Transforms_property_value_to_another_type', + class_name='FluentValidation.Tests.TransformTests', + test_name='Transforms_property_value_to_another_type', result='success', message=None, content=None, @@ -5920,9 +5487,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -5932,9 +5498,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'LessThan_should_create_LessThanValidator_with_lambda', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='LessThan_should_create_LessThanValidator_with_lambda', result='success', message=None, content=None, @@ -5944,9 +5509,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Can_use_property_with_include', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Can_use_property_with_include', result='success', message=None, content=None, @@ -5956,9 +5520,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inne' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inne' 'r_fails_but_the_outer_is_satisfied', result='success', message=None, @@ -5969,9 +5532,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "__somename@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "__somename@example.com")', result='success', message=None, content=None, @@ -5981,9 +5543,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NullTester.' - 'When_the_validator_passes_the_error_message_should_be_set', + class_name='FluentValidation.Tests.NullTester', + test_name='When_the_validator_passes_the_error_message_should_be_set', result='success', message=None, content=None, @@ -5993,9 +5554,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' - 'gex(email: "first.last@test..co.uk")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Invalid_email_addressex_regex(email: "first.last@test..co.uk")', result='success', message=None, content=None, @@ -6005,9 +5565,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_' 'the_inner_Unless_predicate_is_satisfied', result='success', message=None, @@ -6018,8 +5577,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TrackingCollectionTests.Add_AddsItem', + class_name='FluentValidation.Tests.TrackingCollectionTests', + test_name='Add_AddsItem', result='success', message=None, content=None, @@ -6029,9 +5588,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Executes_correct_rule_when_using_property_with_include', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Executes_correct_rule_when_using_property_with_include', result='success', message=None, content=None, @@ -6041,9 +5599,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AccessorCacheTests.' - 'Gets_member_for_nested_property', + class_name='FluentValidation.Tests.AccessorCacheTests', + test_name='Gets_member_for_nested_property', result='success', message=None, content=None, @@ -6053,9 +5610,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Async_condition_should_work_with_complex_property', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Async_condition_should_work_with_complex_property', result='success', message=None, content=None, @@ -6065,8 +5621,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.Should_ignore_blanks', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Should_ignore_blanks', result='success', message=None, content=None, @@ -6076,9 +5632,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' 'ding_object_to_validate_and_other_property_fails_validation', result='success', message=None, @@ -6089,9 +5644,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'OnFailure_called_for_each_failed_rule_asyncAsync', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='OnFailure_called_for_each_failed_rule_asyncAsync', result='success', message=None, content=None, @@ -6101,9 +5655,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "\\"Abc@def\\"@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "\\"Abc@def\\"@example.com")', result='success', message=None, content=None, @@ -6113,8 +5666,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Can_access_parent_index_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_access_parent_index_async', result='success', message=None, content=None, @@ -6124,9 +5677,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'Should_be_able_to_access_error_message_in_OnFailure', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='Should_be_able_to_access_error_message_in_OnFailure', result='success', message=None, content=None, @@ -6136,9 +5688,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Always_use_specific_language_with_string_source', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Always_use_specific_language_with_string_source', result='success', message=None, content=None, @@ -6148,9 +5699,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_with_nullable_property', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_with_nullable_property', result='success', message=None, content=None, @@ -6160,8 +5710,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Overrides_indexer', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Overrides_indexer', result='success', message=None, content=None, @@ -6171,9 +5721,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_Should_support_nested_properties', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_Should_support_nested_properties', result='success', message=None, content=None, @@ -6183,9 +5732,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TrackingCollectionTests.' - 'When_Item_Added_Raises_ItemAdded', + class_name='FluentValidation.Tests.TrackingCollectionTests', + test_name='When_Item_Added_Raises_ItemAdded', result='success', message=None, content=None, @@ -6195,8 +5743,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.Should_compile_expression', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_compile_expression', result='success', message=None, content=None, @@ -6206,9 +5754,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserStateTester.' - 'Can_Provide_state_for_item_in_collection', + class_name='FluentValidation.Tests.UserStateTester', + test_name='Can_Provide_state_for_item_in_collection', result='success', message=None, content=None, @@ -6218,9 +5765,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "testperson@gmail.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "testperson@gmail.com")', result='success', message=None, content=None, @@ -6230,9 +5776,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomFailureActionTester.' - 'Invokes_custom_action_on_failure', + class_name='FluentValidation.Tests.CustomFailureActionTester', + test_name='Invokes_custom_action_on_failure', result='success', message=None, content=None, @@ -6242,9 +5787,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Condition_is_applied_to_single_validator_in_the_chain_when_ApplyCondi' + class_name='FluentValidation.Tests.ConditionTests', + test_name='Condition_is_applied_to_single_validator_in_the_chain_when_ApplyCondi' 'tionTo_set_to_CurrentValidator', result='success', message=None, @@ -6255,9 +5799,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Explicitly_included_properties_should_be_propagated_to_nested_validat' 'ors', result='success', message=None, @@ -6268,9 +5811,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Should_store_comparison_type', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Should_store_comparison_type', result='success', message=None, content=None, @@ -6280,9 +5822,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'IsValidTests_CaseInsensitive_CaseCorrect', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='IsValidTests_CaseInsensitive_CaseCorrect', result='success', message=None, content=None, @@ -6292,9 +5833,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'When_the_text_length_is_smaller_the_validator_should_fail', + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='When_the_text_length_is_smaller_the_validator_should_fail', result='success', message=None, content=None, @@ -6304,9 +5844,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'Fails_for_ienumerable_that_doesnt_implement_ICollection', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='Fails_for_ienumerable_that_doesnt_implement_ICollection', result='success', message=None, content=None, @@ -6316,9 +5855,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Should_not_be_valid_for_case_insensitve_comparison', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Should_not_be_valid_for_case_insensitve_comparison', result='success', message=None, content=None, @@ -6328,9 +5866,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_with_callback_accepting_derived', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_with_callback_accepting_derived', result='success', message=None, content=None, @@ -6340,9 +5877,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Nullable_object_with_async_condition_should_not_throw', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Nullable_object_with_async_condition_should_not_throw', result='success', message=None, content=None, @@ -6352,9 +5888,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -6364,9 +5899,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_have_validation_error_details_whe' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_have_validation_error_details_whe' 'n_thrown_ruleforeach', result='success', message=None, @@ -6377,9 +5911,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEqualValidatorTests.' - 'Validates_across_properties', + class_name='FluentValidation.Tests.NotEqualValidatorTests', + test_name='Validates_across_properties', result='success', message=None, content=None, @@ -6389,9 +5922,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NameResolutionPluggabilityTester.' - 'ShouldHaveValidationError_Should_support_custom_propertynameresolver', + class_name='FluentValidation.Tests.NameResolutionPluggabilityTester', + test_name='ShouldHaveValidationError_Should_support_custom_propertynameresolver', result='success', message=None, content=None, @@ -6401,9 +5933,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fail' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fail' 's_but_the_outer_is_satisfied', result='success', message=None, @@ -6414,9 +5945,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InlineValidatorTester.' - 'Uses_inline_validator_to_build_rules', + class_name='FluentValidation.Tests.InlineValidatorTester', + test_name='Uses_inline_validator_to_build_rules', result='success', message=None, content=None, @@ -6426,9 +5956,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_is_null_cross_property', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_is_null_cross_property', result='success', message=None, content=None, @@ -6438,9 +5967,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Should_use_last_supplied_severity', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Should_use_last_supplied_severity', result='success', message=None, content=None, @@ -6450,9 +5978,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Can_use_indexer_in_string_message', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Can_use_indexer_in_string_message', result='success', message=None, content=None, @@ -6462,9 +5989,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Runs_otherwise_conditions_for_UnlessAsync', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Runs_otherwise_conditions_for_UnlessAsync', result='success', message=None, content=None, @@ -6474,8 +6000,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.Should_add_errors', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='Should_add_errors', result='success', message=None, content=None, @@ -6485,9 +6011,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildvalidator_throws_when_collection_property_Does_not_hav' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildvalidator_throws_when_collection_property_Does_not_hav' 'e_child_validator', result='success', message=None, @@ -6498,9 +6023,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'OverridePropertyName_with_lambda_should_override_property_name', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='OverridePropertyName_with_lambda_should_override_property_name', result='success', message=None, content=None, @@ -6510,8 +6034,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Executes_all_rules', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_all_rules', result='success', message=None, content=None, @@ -6521,9 +6045,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Calling_ValidateAsync_should_delegate_to_underlying_sync_validator', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Calling_ValidateAsync_should_delegate_to_underlying_sync_validator', result='success', message=None, content=None, @@ -6533,9 +6056,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Does_not_execute_customasync_Rule_when_async_condition_false', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Does_not_execute_customasync_Rule_when_async_condition_false', result='success', message=None, content=None, @@ -6545,8 +6067,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Expected_message_check', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Expected_message_check', result='success', message=None, content=None, @@ -6556,8 +6078,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.Fails_for_array', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='Fails_for_array', result='success', message=None, content=None, @@ -6567,9 +6089,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_be_valid', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_be_valid', result='success', message=None, content=None, @@ -6579,9 +6100,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorDescriptorTester.' - 'Gets_validators_for_property', + class_name='FluentValidation.Tests.ValidatorDescriptorTester', + test_name='Gets_validators_for_property', result='success', message=None, content=None, @@ -6591,9 +6111,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomMessageFormatTester.' - 'Uses_custom_delegate_for_building_message_only_for_specific_validator', + class_name='FluentValidation.Tests.CustomMessageFormatTester', + test_name='Uses_custom_delegate_for_building_message_only_for_specific_validator', result='success', message=None, content=None, @@ -6603,9 +6122,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Explicitly_included_properties_should_be_propagated_to_nested_validat' 'ors_using_strings', result='success', message=None, @@ -6616,9 +6134,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Correctly_gets_collection_indices_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Correctly_gets_collection_indices_async', result='success', message=None, content=None, @@ -6628,9 +6145,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_to_second_validator_when_first_validator_succeed' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_to_second_validator_when_first_validator_succeed' 's_and_cascade_set_to_stop_legacy', result='success', message=None, @@ -6641,9 +6157,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_larger_than_the_lambda_range_then_the_validator_shou' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_larger_than_the_lambda_range_then_the_validator_shou' 'ld_fail', result='success', message=None, @@ -6654,9 +6169,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_inheritance_async', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_inheritance_async', result='success', message=None, content=None, @@ -6666,9 +6180,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_custom_uses_empty_property_name_for_model_level_rule', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_custom_uses_empty_property_name_for_model_level_rule', result='success', message=None, content=None, @@ -6678,8 +6191,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.Comparison_type', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Comparison_type', result='success', message=None, content=None, @@ -6689,9 +6202,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Correctly_assigns_default_localized_error_message', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Correctly_assigns_default_localized_error_message', result='success', message=None, content=None, @@ -6701,9 +6213,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Gets_translation_for_specific_culture', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_specific_culture', result='success', message=None, content=None, @@ -6713,9 +6224,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_text_is_larger_than_the_range_then_the_validator_should_fail', result='success', message=None, content=None, @@ -6725,8 +6235,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PropertyChainTests.Creates_from_expression', + class_name='FluentValidation.Tests.PropertyChainTests', + test_name='Creates_from_expression', result='success', message=None, content=None, @@ -6736,9 +6246,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'Min_and_max_properties_should_be_set', + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='Min_and_max_properties_should_be_set', result='success', message=None, content=None, @@ -6748,8 +6257,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.Populates_errors', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Populates_errors', result='success', message=None, content=None, @@ -6759,9 +6268,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'OverridePropertyName_should_override_property_name', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='OverridePropertyName_should_override_property_name', result='success', message=None, content=None, @@ -6771,9 +6279,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes', result='success', message=None, content=None, @@ -6783,8 +6290,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedNameTester.Uses_localized_name', + class_name='FluentValidation.Tests.LocalisedNameTester', + test_name='Uses_localized_name', result='success', message=None, content=None, @@ -6794,9 +6301,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'IsValidTests_CaseSensitive_CaseIncorrect', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='IsValidTests_CaseSensitive_CaseIncorrect', result='success', message=None, content=None, @@ -6806,9 +6312,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Executes_customasync_rule_when_condition_true', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Executes_customasync_rule_when_condition_true', result='success', message=None, content=None, @@ -6818,9 +6323,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'MustAsync_should_not_throw_InvalidCastException', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='MustAsync_should_not_throw_InvalidCastException', result='success', message=None, content=None, @@ -6830,9 +6334,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -6842,9 +6345,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predic' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predic' 'ate_is_false', result='success', message=None, @@ -6855,9 +6357,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' - '(withoutErrMsg: "bar", errMessages: ["foo", "bar"])', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo", ' + '"bar"])', result='success', message=None, content=None, @@ -6867,9 +6369,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Does_not_execute_custom_Rule_when_async_condition_false', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Does_not_execute_custom_Rule_when_async_condition_false', result='success', message=None, content=None, @@ -6879,9 +6380,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda', result='success', message=None, content=None, @@ -6891,9 +6391,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_there_is_a_value_then_the_validator_should_fail', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_there_is_a_value_then_the_validator_should_fail', result='success', message=None, content=None, @@ -6903,9 +6402,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' 'for_strings', result='success', message=None, @@ -6916,9 +6414,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_model_async_throws', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_model_async_throws', result='success', message=None, content=None, @@ -6928,9 +6425,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Gets_translation_for_bosn' - 'ian_latin_culture(cultureName: "bs")', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Gets_translation_for_bosnian_latin_culture(cultureName: "bs")', result='success', message=None, content=None, @@ -6940,9 +6436,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Condition_should_work_with_child_collection', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Condition_should_work_with_child_collection', result='success', message=None, content=None, @@ -6952,9 +6447,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_between_the_range_specified_then_the_validator_shou' 'ld_pass_for_strings', result='success', message=None, @@ -6965,9 +6459,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' 'tor_should_fail', result='success', message=None, @@ -6978,9 +6471,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'PropertyDescription_should_return_custom_property_name', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='PropertyDescription_should_return_custom_property_name', result='success', message=None, content=None, @@ -6990,9 +6482,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExtensionTester.' - 'Should_return_null_for_non_member_expressions', + class_name='FluentValidation.Tests.ExtensionTester', + test_name='Should_return_null_for_non_member_expressions', result='success', message=None, content=None, @@ -7002,9 +6493,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Property_should_return_property_being_validated', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Property_should_return_property_being_validated', result='success', message=None, content=None, @@ -7014,9 +6504,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Condition_should_work_with_child_collection', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Condition_should_work_with_child_collection', result='success', message=None, content=None, @@ -7026,9 +6515,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_succeed_when_condition_does_not_match', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_succeed_when_condition_does_not_match', result='success', message=None, content=None, @@ -7038,9 +6526,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Adds_PropertyName_to_message', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Adds_PropertyName_to_message', result='success', message=None, content=None, @@ -7050,9 +6537,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validat' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validat' 'or_should_pass', result='success', message=None, @@ -7063,9 +6549,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "firstName.lastName@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"firstName.lastName@someDomain.com")', result='success', message=None, content=None, @@ -7075,9 +6561,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rul' 'e_level', result='success', message=None, @@ -7088,9 +6573,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_' 'validator_should_pass', result='success', message=None, @@ -7101,9 +6585,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' 'tor_should_pass', result='success', message=None, @@ -7114,9 +6597,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "someName@a@b.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: ' + '"someName@a@b.com")', result='success', message=None, content=None, @@ -7126,9 +6609,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_text_is_larger_than_the_range_then_the_validator_should_fail', result='success', message=None, content=None, @@ -7138,9 +6620,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Dependent_rules_inside_when', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Dependent_rules_inside_when', result='success', message=None, content=None, @@ -7150,9 +6631,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Rule_for_a_non_memberexpression_should_not_generate_property_name', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Rule_for_a_non_memberexpression_should_not_generate_property_name', result='success', message=None, content=None, @@ -7162,9 +6642,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_' 'is_true', result='success', message=None, @@ -7175,9 +6654,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_to_second_validator_when_first_validator_succeed' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_to_second_validator_when_first_validator_succeed' 's_and_cascade_set_to_stop_async', result='success', message=None, @@ -7188,9 +6666,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Ruleset_selection_should_not_cascade_downwards_when_set_on_property', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Ruleset_selection_should_not_cascade_downwards_when_set_on_property', result='success', message=None, content=None, @@ -7200,9 +6677,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' 'tor_should_fail', result='success', message=None, @@ -7213,9 +6689,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Separate_validation_on_chained_property_valid', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Separate_validation_on_chained_property_valid', result='success', message=None, content=None, @@ -7225,9 +6700,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync', result='success', message=None, content=None, @@ -7237,9 +6711,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHAveValidationError_should_not_throw_When_there_are_no_error' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHAveValidationError_should_not_throw_When_there_are_no_error' 's_with_preconstructed_object', result='success', message=None, @@ -7250,9 +6723,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' 'tor_should_pass', result='success', message=None, @@ -7263,9 +6735,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_val' 'idator_level_and_overriden_at_rule_level', result='success', message=None, @@ -7276,8 +6747,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.Adds_value_to_message', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Adds_value_to_message', result='success', message=None, content=None, @@ -7287,8 +6758,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.TestValidate_runs_async', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='TestValidate_runs_async', result='success', message=None, content=None, @@ -7298,9 +6769,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level', result='success', message=None, @@ -7311,9 +6781,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Condition_is_applied_to_all_validators_in_the_chain', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Condition_is_applied_to_all_validators_in_the_chain', result='success', message=None, content=None, @@ -7323,9 +6792,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_nullable_when_property_not_null_cross_property', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_nullable_when_property_not_null_cross_property', result='success', message=None, content=None, @@ -7335,9 +6803,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_tru' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_tru' 'e', result='success', message=None, @@ -7348,9 +6815,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Dependent_rules_inside_ruleset', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Dependent_rules_inside_ruleset', result='success', message=None, content=None, @@ -7360,9 +6826,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_valida' 'tor_should_pass_for_strings', result='success', message=None, @@ -7373,9 +6838,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'Perserves_property_chain_using_custom', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='Perserves_property_chain_using_custom', result='success', message=None, content=None, @@ -7385,9 +6849,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.Unexpected_message_check' - '(withoutErrMsg: "bar", errMessages: [])', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Unexpected_message_check(withoutErrMsg: "bar", errMessages: [])', result='success', message=None, content=None, @@ -7397,9 +6860,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Empty_should_create_EmptyValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Empty_should_create_EmptyValidator', result='success', message=None, content=None, @@ -7409,9 +6871,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'ShouldHaveChildValidator_works_with_Include', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='ShouldHaveChildValidator_works_with_Include', result='success', message=None, content=None, @@ -7421,9 +6882,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'ValidationException_provides_correct_message_when_appendDefaultMessag' + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='ValidationException_provides_correct_message_when_appendDefaultMessag' 'e_false', result='success', message=None, @@ -7434,9 +6894,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExactLengthValidatorTester.' - 'When_the_text_is_an_exact_length_the_validator_should_pass', + class_name='FluentValidation.Tests.ExactLengthValidatorTester', + test_name='When_the_text_is_an_exact_length_the_validator_should_pass', result='success', message=None, content=None, @@ -7446,9 +6905,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'ValidationException_provides_correct_message_when_appendDefaultMessag' + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='ValidationException_provides_correct_message_when_appendDefaultMessag' 'e_true', result='success', message=None, @@ -7459,9 +6917,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'PropertyDescription_should_return_property_name_split', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='PropertyDescription_should_return_property_name_split', result='success', message=None, content=None, @@ -7471,9 +6928,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Should_fail_when_less_than_input', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Should_fail_when_less_than_input', result='success', message=None, content=None, @@ -7483,9 +6939,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_Custom_within_ruleset', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_Custom_within_ruleset', result='success', message=None, content=None, @@ -7495,9 +6950,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'IsValidTests_CaseInsensitive_CaseIncorrect', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='IsValidTests_CaseInsensitive_CaseIncorrect', result='success', message=None, content=None, @@ -7507,9 +6961,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'RuleForeach_with_null_instances', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='RuleForeach_with_null_instances', result='success', message=None, content=None, @@ -7519,9 +6972,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'When_the_validators_fail_then_the_errors_Should_be_accessible_via_the' + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='When_the_validators_fail_then_the_errors_Should_be_accessible_via_the' '_errors_property', result='success', message=None, @@ -7532,8 +6984,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.Should_set_custom_error', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_set_custom_error', result='success', message=None, content=None, @@ -7543,9 +6995,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_async', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_async', result='success', message=None, content=None, @@ -7555,9 +7006,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Nested_dependent_rules_inside_ruleset', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Nested_dependent_rules_inside_ruleset', result='success', message=None, content=None, @@ -7567,9 +7017,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Invokes_dependent_rule_if_parent_rule_passes', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Invokes_dependent_rule_if_parent_rule_passes', result='success', message=None, content=None, @@ -7579,9 +7028,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Should_work_with_top_level_collection_validator', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Should_work_with_top_level_collection_validator', result='success', message=None, content=None, @@ -7591,9 +7039,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, @@ -7603,9 +7050,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "$A12345@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "$A12345@example.com")', result='success', message=None, content=None, @@ -7615,9 +7061,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Must_should_create_PredicateValidator_with_PropertyValidatorContext', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Must_should_create_PredicateValidator_with_PropertyValidatorContext', result='success', message=None, content=None, @@ -7627,8 +7072,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.SimpleFieldSet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='SimpleFieldSet', result='success', message=None, content=None, @@ -7638,9 +7083,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, @@ -7650,9 +7094,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Can_Provide_severity_for_item_in_collection', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Can_Provide_severity_for_item_in_collection', result='success', message=None, content=None, @@ -7662,9 +7105,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'NotEqual_should_create_NotEqualValidator_with_explicit_value', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='NotEqual_should_create_NotEqualValidator_with_explicit_value', result='success', message=None, content=None, @@ -7674,9 +7116,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_set_custom_property_name', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_set_custom_property_name', result='success', message=None, content=None, @@ -7686,9 +7127,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_not_null_cross_property', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_not_null_cross_property', result='success', message=None, content=None, @@ -7698,9 +7138,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, @@ -7710,9 +7149,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_text_is_larger_than_the_range_then_the_validator_should_fail' '_for_strings', result='success', message=None, @@ -7723,9 +7161,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ScalePrecisionValidatorTests.' - 'Scale_precision_should_be_valid_when_they_are_equal', + class_name='FluentValidation.Tests.ScalePrecisionValidatorTests', + test_name='Scale_precision_should_be_valid_when_they_are_equal', result='success', message=None, content=None, @@ -7735,8 +7172,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.Throws_exception_async', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Throws_exception_async', result='success', message=None, content=None, @@ -7746,9 +7183,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_valida' 'tor_should_fail_for_strings', result='success', message=None, @@ -7759,8 +7195,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Includes_all_rulesets_async', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Includes_all_rulesets_async', result='success', message=None, content=None, @@ -7770,9 +7206,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Should_succeed_on_case_insensitive_comparison', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Should_succeed_on_case_insensitive_comparison', result='success', message=None, content=None, @@ -7782,9 +7217,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_should_throw_when_property_has_a_different_c' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_should_throw_when_property_has_a_different_c' 'hild_validator', result='success', message=None, @@ -7795,9 +7229,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChildRulesTests.' - 'Can_define_nested_rules_for_collection', + class_name='FluentValidation.Tests.ChildRulesTests', + test_name='Can_define_nested_rules_for_collection', result='success', message=None, content=None, @@ -7807,9 +7240,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Should_not_scramble_property_name_when_using_collection_validators_se' + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Should_not_scramble_property_name_when_using_collection_validators_se' 'veral_levels_deep', result='success', message=None, @@ -7820,9 +7252,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure', result='success', message=None, content=None, @@ -7832,9 +7263,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Can_specify_condition_for_individual_collection_elements', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_specify_condition_for_individual_collection_elements', result='success', message=None, content=None, @@ -7844,9 +7274,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PredicateValidatorTester.' - 'Should_fail_when_predicate_returns_false', + class_name='FluentValidation.Tests.PredicateValidatorTester', + test_name='Should_fail_when_predicate_returns_false', result='success', message=None, content=None, @@ -7856,9 +7285,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EnumValidatorTests.' - 'Flags_enum_valid_when_using_bitwise_value', + class_name='FluentValidation.Tests.EnumValidatorTests', + test_name='Flags_enum_valid_when_using_bitwise_value', result='success', message=None, content=None, @@ -7868,9 +7296,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Explicitly_included_properties_should_be_propagated_to_nested_validat' 'ors', result='success', message=None, @@ -7881,9 +7308,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationErrorFor_takes_account_of_rulesets', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationErrorFor_takes_account_of_rulesets', result='success', message=None, content=None, @@ -7893,9 +7319,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.' - 'Combines_rulesets_and_explicit_properties', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Combines_rulesets_and_explicit_properties', result='success', message=None, content=None, @@ -7905,9 +7330,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_against_property', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_against_property', result='success', message=None, content=None, @@ -7917,9 +7341,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' 'ld_validator_and_expecting_a_basetype', result='success', message=None, @@ -7930,8 +7353,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.Can_replace_message', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Can_replace_message', result='success', message=None, content=None, @@ -7941,9 +7364,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -7953,8 +7375,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.Validates_against_property', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Validates_against_property', result='success', message=None, content=None, @@ -7964,9 +7386,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -7976,9 +7397,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_validate_single_Field', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_validate_single_Field', result='success', message=None, content=None, @@ -7988,9 +7408,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Runs_otherwise_conditons_for_Unless', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Runs_otherwise_conditons_for_Unless', result='success', message=None, content=None, @@ -8000,9 +7419,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "someName")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: "someName")', result='success', message=None, content=None, @@ -8012,8 +7430,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.Equality', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='Equality', result='success', message=None, content=None, @@ -8023,8 +7441,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.SimplePropertySet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='SimplePropertySet', result='success', message=None, content=None, @@ -8034,9 +7452,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_value_is_null_validator_should_pass', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_value_is_null_validator_should_pass', result='success', message=None, content=None, @@ -8046,9 +7463,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Can_access_colletion_index_async', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_access_colletion_index_async', result='success', message=None, content=None, @@ -8058,9 +7474,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Chained_validator_should_not_be_invoked_on_null_property', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Chained_validator_should_not_be_invoked_on_null_property', result='success', message=None, content=None, @@ -8070,9 +7485,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_with_callback_accepting_derived_async', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_with_callback_accepting_derived_async', result='success', message=None, content=None, @@ -8082,9 +7496,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Can_directly_validate_multiple_fields_of_same_type', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Can_directly_validate_multiple_fields_of_same_type', result='success', message=None, content=None, @@ -8094,9 +7507,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_text_is_larger_than_the_range_then_the_validator_should_fail' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_text_is_larger_than_the_range_then_the_validator_should_fail' '_for_strings', result='success', message=None, @@ -8107,9 +7519,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "1234@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"1234@someDomain.com")', result='success', message=None, content=None, @@ -8119,9 +7531,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Does_not_validate_other_property_using_expression', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Does_not_validate_other_property_using_expression', result='success', message=None, content=None, @@ -8131,9 +7542,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'When_validation_fails_the_default_error_should_be_set', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='When_validation_fails_the_default_error_should_be_set', result='success', message=None, content=None, @@ -8143,9 +7553,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_ruleset_async', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_ruleset_async', result='success', message=None, content=None, @@ -8155,9 +7564,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_collection_async', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_collection_async', result='success', message=None, content=None, @@ -8167,9 +7575,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approac' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approac' 'h', result='success', message=None, @@ -8180,9 +7587,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainingValidatorsTester.' - 'Should_create_multiple_validators', + class_name='FluentValidation.Tests.ChainingValidatorsTester', + test_name='Should_create_multiple_validators', result='success', message=None, content=None, @@ -8192,9 +7598,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_' 'preconstructed_object', result='success', message=None, @@ -8205,9 +7610,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "someName@1234.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: ' + '"someName@1234.com")', result='success', message=None, content=None, @@ -8217,9 +7622,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserSeverityTester.' - 'Defaults_user_severity_to_error', + class_name='FluentValidation.Tests.UserSeverityTester', + test_name='Defaults_user_severity_to_error', result='success', message=None, content=None, @@ -8229,9 +7633,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'OnFailure_called_for_each_failed_rule', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='OnFailure_called_for_each_failed_rule', result='success', message=None, content=None, @@ -8241,8 +7644,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.Validates_ruleset', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_ruleset', result='success', message=None, content=None, @@ -8252,9 +7655,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'RuleSet_can_be_used_inside_async_condition', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='RuleSet_can_be_used_inside_async_condition', result='success', message=None, content=None, @@ -8264,9 +7666,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Equal_should_create_EqualValidator_with_explicit_value', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Equal_should_create_EqualValidator_with_explicit_value', result='success', message=None, content=None, @@ -8276,9 +7677,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.' - 'Adds_argument_and_custom_arguments', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Adds_argument_and_custom_arguments', result='success', message=None, content=None, @@ -8288,9 +7688,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Validates_collection_asynchronously', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Validates_collection_asynchronously', result='success', message=None, content=None, @@ -8300,9 +7699,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Uses_regex_object', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Uses_regex_object', result='success', message=None, content=None, @@ -8312,9 +7710,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_if_message_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_if_message_is_null', result='success', message=None, content=None, @@ -8324,9 +7721,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'When_condition_executed_for_each_instance_of_RuleForEach_condition_sh' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='When_condition_executed_for_each_instance_of_RuleForEach_condition_sh' 'ould_not_be_cached', result='success', message=None, @@ -8337,9 +7733,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Uses_error_code_as_localization_key', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Uses_error_code_as_localization_key', result='success', message=None, content=None, @@ -8349,9 +7744,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_is_null_then_the_validator_should_pass', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_is_null_then_the_validator_should_pass', result='success', message=None, content=None, @@ -8361,9 +7755,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -8373,9 +7766,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lam' 'bda_with_other_Nullable', result='success', message=None, @@ -8386,8 +7778,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.Name', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='Name', result='success', message=None, content=None, @@ -8397,9 +7789,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_value_is_Default_for_type_validator_should_pass_int', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_value_is_Default_for_type_validator_should_pass_int', result='success', message=None, content=None, @@ -8409,9 +7800,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "TestPerson@gmail.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "TestPerson@gmail.com")', result='success', message=None, content=None, @@ -8421,8 +7811,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.Throws_exception', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Throws_exception', result='success', message=None, content=None, @@ -8432,10 +7822,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.ShouldHaveValidationErro' - 'r_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used' - '(age: 17, cardNumber: "cardNumber")', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_should_throw_when_there_are_not_validation_' + 'errors__WhenAsyn_Is_Used(age: 17, cardNumber: "cardNumber")', result='success', message=None, content=None, @@ -8445,9 +7834,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.StringEnumValidatorTests.' - 'IsValidTests_CaseSensitive_CaseCorrect', + class_name='FluentValidation.Tests.StringEnumValidatorTests', + test_name='IsValidTests_CaseSensitive_CaseCorrect', result='success', message=None, content=None, @@ -8457,9 +7845,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Can_access_expression_in_message_lambda', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Can_access_expression_in_message_lambda', result='success', message=None, content=None, @@ -8469,9 +7856,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_aspn' - 'etcore_compatible(email: "\xa0@someDomain.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_aspnetcore_compatible(email: "\xa0' + '@someDomain.com")', result='success', message=None, content=None, @@ -8481,9 +7868,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Async_inside_dependent_rules_when_parent_rule_not_async', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Async_inside_dependent_rules_when_parent_rule_not_async', result='success', message=None, content=None, @@ -8493,10 +7879,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' - 'nsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: ' - 'AnotherInt Test Message)', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(p' + 'reValidationResult: AnotherInt Test Message)', result='success', message=None, content=None, @@ -8506,9 +7891,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Adding_a_validator_should_return_builder', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Adding_a_validator_should_return_builder', result='success', message=None, content=None, @@ -8518,9 +7902,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_nullable_with_nullable_property', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_nullable_with_nullable_property', result='success', message=None, content=None, @@ -8530,9 +7913,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'When_the_Validators_pass_then_the_validatorRunner_should_return_true', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='When_the_Validators_pass_then_the_validatorRunner_should_return_true', result='success', message=None, content=None, @@ -8542,9 +7924,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'When_the_text_matches_the_lambda_regex_regular_expression_then_the_va' + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='When_the_text_matches_the_lambda_regex_regular_expression_then_the_va' 'lidator_should_pass', result='success', message=None, @@ -8555,8 +7936,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MessageFormatterTests.Understands_date_formats', + class_name='FluentValidation.Tests.MessageFormatterTests', + test_name='Understands_date_formats', result='success', message=None, content=None, @@ -8566,8 +7947,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.MemberAccessorTests.ComplexPropertyGet', + class_name='FluentValidation.Tests.MemberAccessorTests', + test_name='ComplexPropertyGet', result='success', message=None, content=None, @@ -8577,9 +7958,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "\\"Fred Bloggs\\"@example.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "\\"Fred Bloggs\\"@example.com")', result='success', message=None, content=None, @@ -8589,9 +7969,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Length_should_create_LengthValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Length_should_create_LengthValidator', result='success', message=None, content=None, @@ -8601,9 +7980,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Creates_validator_using_context_from_property_value', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Creates_validator_using_context_from_property_value', result='success', message=None, content=None, @@ -8613,9 +7991,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExtensionTester.' - 'SplitPascalCase_should_return_null_when_input_is_null', + class_name='FluentValidation.Tests.ExtensionTester', + test_name='SplitPascalCase_should_return_null_when_input_is_null', result='success', message=None, content=None, @@ -8625,9 +8002,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExtensionTester.' - 'Should_split_pascal_cased_member_name', + class_name='FluentValidation.Tests.ExtensionTester', + test_name='Should_split_pascal_cased_member_name', result='success', message=None, content=None, @@ -8637,9 +8013,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LocalisedMessagesTester.' - 'Formats_string_with_placeholders_when_you_cant_edit_the_string', + class_name='FluentValidation.Tests.LocalisedMessagesTester', + test_name='Formats_string_with_placeholders_when_you_cant_edit_the_string', result='success', message=None, content=None, @@ -8649,9 +8024,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.UserStateTester.' - 'Stores_user_state_against_validation_failure', + class_name='FluentValidation.Tests.UserStateTester', + test_name='Stores_user_state_against_validation_failure', result='success', message=None, content=None, @@ -8661,9 +8035,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ChainedValidationTester.' - 'Chained_validator_descriptor', + class_name='FluentValidation.Tests.ChainedValidationTester', + test_name='Chained_validator_descriptor', result='success', message=None, content=None, @@ -8673,9 +8046,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'RuleForEach_async_RunsTasksSynchronously', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='RuleForEach_async_RunsTasksSynchronously', result='success', message=None, content=None, @@ -8685,9 +8057,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'MemberNameValidatorSelector_returns_true_when_property_name_matches', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='MemberNameValidatorSelector_returns_true_when_property_name_matches', result='success', message=None, content=None, @@ -8697,9 +8068,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Condition_should_work_with_complex_property', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Condition_should_work_with_complex_property', result='success', message=None, content=None, @@ -8709,8 +8079,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.TransformTests.Transforms_property_value', + class_name='FluentValidation.Tests.TransformTests', + test_name='Transforms_property_value', result='success', message=None, content=None, @@ -8720,9 +8090,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_throw_when_there_are_validation_e' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_throw_when_there_are_validation_e' 'rrors_ruleforeach', result='success', message=None, @@ -8733,9 +8102,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_validate_public_Field', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_validate_public_Field', result='success', message=None, content=None, @@ -8745,9 +8113,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveChildValidator_should_not_throw_when_property_Does_have_chi' 'ld_validator', result='success', message=None, @@ -8758,9 +8125,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Can_validate_collection_using_validator_for_base_type', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Can_validate_collection_using_validator_for_base_type', result='success', message=None, content=None, @@ -8770,9 +8136,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Comparison_type', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Comparison_type', result='success', message=None, content=None, @@ -8782,9 +8147,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_async_throws', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_async_throws', result='success', message=None, content=None, @@ -8794,9 +8158,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_t' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_t' 'he_inner_Unless_predicate_fails', result='success', message=None, @@ -8807,9 +8170,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CollectionValidatorWithParentTests.' - 'Collection_should_be_explicitly_included_with_expression', + class_name='FluentValidation.Tests.CollectionValidatorWithParentTests', + test_name='Collection_should_be_explicitly_included_with_expression', result='success', message=None, content=None, @@ -8819,9 +8181,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' 'alidator_level', result='success', message=None, @@ -8832,9 +8193,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester.' - 'Should_succeed_when_equal_to_input', + class_name='FluentValidation.Tests.LessThanOrEqualToValidatorTester', + test_name='Should_succeed_when_equal_to_input', result='success', message=None, content=None, @@ -8844,9 +8204,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_should_correctly_handle_explicitly_provi' 'ding_object_to_validate', result='success', message=None, @@ -8857,9 +8216,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'MustAsync_should_create_AsyncPredicateValidator_with_context', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='MustAsync_should_create_AsyncPredicateValidator_with_context', result='success', message=None, content=None, @@ -8869,9 +8227,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Async_condition_is_applied_to_all_validators_in_the_chain_when_execut' + class_name='FluentValidation.Tests.ConditionTests', + test_name='Async_condition_is_applied_to_all_validators_in_the_chain_when_execut' 'ed_synchronously', result='success', message=None, @@ -8882,9 +8239,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "testperson+label@gmail.com")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "testperson+label@gmail.com")', result='success', message=None, content=None, @@ -8894,9 +8250,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'New_CustomAsync_within_ruleset', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='New_CustomAsync_within_ruleset', result='success', message=None, content=None, @@ -8906,9 +8261,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Executes_rule_for_each_item_in_collection', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Executes_rule_for_each_item_in_collection', result='success', message=None, content=None, @@ -8918,9 +8272,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Cascade_mode_can_be_set_after_validator_instantiated', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Cascade_mode_can_be_set_after_validator_instantiated', result='success', message=None, content=None, @@ -8930,9 +8283,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_async_legacy', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_async_legacy', result='success', message=None, content=None, @@ -8942,9 +8294,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomValidatorTester.' - 'Runs_async_rule_synchronously_when_validator_invoked_synchronously', + class_name='FluentValidation.Tests.CustomValidatorTester', + test_name='Runs_async_rule_synchronously_when_validator_invoked_synchronously', result='success', message=None, content=None, @@ -8954,9 +8305,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_o' 'verriden_at_rule_level_legacy', result='success', message=None, @@ -8967,9 +8317,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Condition_can_be_used_inside_ruleset', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Condition_can_be_used_inside_ruleset', result='success', message=None, content=None, @@ -8979,9 +8328,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Does_not_throw_when_valid_and_a_ruleset_async', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Does_not_throw_when_valid_and_a_ruleset_async', result='success', message=None, content=None, @@ -8991,9 +8339,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Comparison_property_uses_custom_resolver', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Comparison_property_uses_custom_resolver', result='success', message=None, content=None, @@ -9003,9 +8350,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Fails_email_validation_asp' - 'netcore_compatible(email: "")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Fails_email_validation_aspnetcore_compatible(email: "")', result='success', message=None, content=None, @@ -9015,9 +8361,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldNotHaveValidationError_async_throws', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldNotHaveValidationError_async_throws', result='success', message=None, content=None, @@ -9027,9 +8372,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_on_failure_when_set_to_Stop_globally_and_overrid' 'en_at_rule_level_async', result='success', message=None, @@ -9040,9 +8384,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'Uses_useful_error_message_when_used_on_non_property', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Uses_useful_error_message_when_used_on_non_property', result='success', message=None, content=None, @@ -9052,9 +8395,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_' 'for_strings', result='success', message=None, @@ -9065,9 +8407,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidateAndThrowTester.' - 'Throws_exception_with_a_ruleset_async', + class_name='FluentValidation.Tests.ValidateAndThrowTester', + test_name='Throws_exception_with_a_ruleset_async', result='success', message=None, content=None, @@ -9077,9 +8418,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EqualValidatorTests.' - 'Should_succeed_on_case_insensitive_comparison_using_expression', + class_name='FluentValidation.Tests.EqualValidatorTests', + test_name='Should_succeed_on_case_insensitive_comparison_using_expression', result='success', message=None, content=None, @@ -9089,9 +8429,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.' - 'When_runs_outside_RuleForEach_loop', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='When_runs_outside_RuleForEach_loop', result='success', message=None, content=None, @@ -9101,9 +8440,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -9113,8 +8451,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ForEachRuleTests.Should_override_property_name', + class_name='FluentValidation.Tests.ForEachRuleTests', + test_name='Should_override_property_name', result='success', message=None, content=None, @@ -9124,9 +8462,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmptyTester.' - 'When_value_is_empty_string_validator_should_pass', + class_name='FluentValidation.Tests.EmptyTester', + test_name='When_value_is_empty_string_validator_should_pass', result='success', message=None, content=None, @@ -9136,9 +8473,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_if_overriding_validator_provider_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_if_overriding_validator_provider_is_null', result='success', message=None, content=None, @@ -9148,9 +8484,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'Equal_should_create_EqualValidator_with_lambda', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='Equal_should_create_EqualValidator_with_lambda', result='success', message=None, content=None, @@ -9160,9 +8495,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotNullTester.' - 'When_the_validator_fails_the_error_message_should_be_set', + class_name='FluentValidation.Tests.NotNullTester', + test_name='When_the_validator_fails_the_error_message_should_be_set', result='success', message=None, content=None, @@ -9172,9 +8506,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_i' + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_i' 's_true_and_all_individual_rules_are_satisfied', result='success', message=None, @@ -9185,8 +8518,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.Should_build_property_name', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_build_property_name', result='success', message=None, content=None, @@ -9196,9 +8529,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CreditCardValidatorTests.' - 'When_validation_fails_the_default_error_should_be_set', + class_name='FluentValidation.Tests.CreditCardValidatorTests', + test_name='When_validation_fails_the_default_error_should_be_set', result='success', message=None, content=None, @@ -9208,9 +8540,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_to_is_smaller_than_the_from_then_the_validator_should_throw', result='success', message=None, content=None, @@ -9220,9 +8551,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'ScalePrecision_should_create_ScalePrecisionValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='ScalePrecision_should_create_ScalePrecisionValidator', result='success', message=None, content=None, @@ -9232,9 +8562,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidationResultTests.' - 'ToString_return_error_messages_with_newline_as_separator', + class_name='FluentValidation.Tests.ValidationResultTests', + test_name='ToString_return_error_messages_with_newline_as_separator', result='success', message=None, content=None, @@ -9244,9 +8573,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Validates_child_validator_asynchronously', + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Validates_child_validator_asynchronously', result='success', message=None, content=None, @@ -9256,9 +8584,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LengthValidatorTests.' - 'When_the_text_is_smaller_than_the_lambda_range_then_the_validator_sho' + class_name='FluentValidation.Tests.LengthValidatorTests', + test_name='When_the_text_is_smaller_than_the_lambda_range_then_the_validator_sho' 'uld_fail', result='success', message=None, @@ -9269,9 +8596,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Rules_not_invoked_when_inverse_shared_condition_does_not_match', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Rules_not_invoked_when_inverse_shared_condition_does_not_match', result='success', message=None, content=None, @@ -9281,9 +8607,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_between_the_range_specified_then_the_validator_shou' 'ld_pass', result='success', message=None, @@ -9294,9 +8619,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ConditionTests.' - 'Validation_should_fail_when_async_condition_matches', + class_name='FluentValidation.Tests.ConditionTests', + test_name='Validation_should_fail_when_async_condition_matches', result='success', message=None, content=None, @@ -9306,9 +8630,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Can_use_indexer_in_string_message_inverse', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Can_use_indexer_in_string_message_inverse', result='success', message=None, content=None, @@ -9318,9 +8641,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExtensionTester.' - 'Should_extract_member_from_member_expression', + class_name='FluentValidation.Tests.ExtensionTester', + test_name='Should_extract_member_from_member_expression', result='success', message=None, content=None, @@ -9330,9 +8652,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ComplexValidationTester.' - 'Explicitly_included_properties_should_be_propagated_to_nested_validat' + class_name='FluentValidation.Tests.ComplexValidationTester', + test_name='Explicitly_included_properties_should_be_propagated_to_nested_validat' 'ors_using_strings', result='success', message=None, @@ -9343,9 +8664,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_with_nullable_when_property_not_null', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_with_nullable_when_property_not_null', result='success', message=None, content=None, @@ -9355,9 +8675,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Does_not_validate_other_property', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Does_not_validate_other_property', result='success', message=None, content=None, @@ -9367,9 +8686,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleBuilderTests.' - 'Should_throw_if_validator_is_null', + class_name='FluentValidation.Tests.RuleBuilderTests', + test_name='Should_throw_if_validator_is_null', result='success', message=None, content=None, @@ -9379,8 +8697,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AccessorCacheTests.Gets_accessor', + class_name='FluentValidation.Tests.AccessorCacheTests', + test_name='Gets_accessor', result='success', message=None, content=None, @@ -9390,9 +8708,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_continues_when_set_to_Continue_at_validator_level', + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_continues_when_set_to_Continue_at_validator_level', result='success', message=None, content=None, @@ -9402,9 +8719,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RegularExpressionValidatorTests.' - 'Uses_lazily_loaded_expression', + class_name='FluentValidation.Tests.RegularExpressionValidatorTests', + test_name='Uses_lazily_loaded_expression', result='success', message=None, content=None, @@ -9414,9 +8730,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanValidatorTester.' - 'Validates_with_nullable_when_property_is_null_cross_property', + class_name='FluentValidation.Tests.GreaterThanValidatorTester', + test_name='Validates_with_nullable_when_property_is_null_cross_property', result='success', message=None, content=None, @@ -9426,9 +8741,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LessThanValidatorTester.' - 'Validates_nullable_with_nullable_property', + class_name='FluentValidation.Tests.LessThanValidatorTester', + test_name='Validates_nullable_with_nullable_property', result='success', message=None, content=None, @@ -9438,9 +8752,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InclusiveBetweenValidatorTests.' - 'When_the_value_is_between_the_range_specified_then_the_validator_shou' + class_name='FluentValidation.Tests.InclusiveBetweenValidatorTests', + test_name='When_the_value_is_between_the_range_specified_then_the_validator_shou' 'ld_pass_for_strings', result='success', message=None, @@ -9451,9 +8764,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.InheritanceValidatorTest.' - 'Validates_with_callback', + class_name='FluentValidation.Tests.InheritanceValidatorTest', + test_name='Validates_with_callback', result='success', message=None, content=None, @@ -9463,9 +8775,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.OnFailureTests.' - 'WhenWithOnFailure_should_invoke_condition_on_async_inner_validator', + class_name='FluentValidation.Tests.OnFailureTests', + test_name='WhenWithOnFailure_should_invoke_condition_on_async_inner_validator', result='success', message=None, content=None, @@ -9475,9 +8786,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Should_succeed_when_equal_to_input', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Should_succeed_when_equal_to_input', result='success', message=None, content=None, @@ -9487,9 +8797,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trai' + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trai' 'ling_zeros', result='success', message=None, @@ -9500,9 +8809,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.LanguageManagerTests.' - 'Always_use_specific_language', + class_name='FluentValidation.Tests.LanguageManagerTests', + test_name='Always_use_specific_language', result='success', message=None, content=None, @@ -9512,9 +8820,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.SharedConditionTests.' - 'Does_not_execute_custom_Rule_when_condition_false', + class_name='FluentValidation.Tests.SharedConditionTests', + test_name='Does_not_execute_custom_Rule_when_condition_false', result='success', message=None, content=None, @@ -9524,9 +8831,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'ShouldHaveValidationError_preconstructed_object_does_not_throw_for_un' + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='ShouldHaveValidationError_preconstructed_object_does_not_throw_for_un' 'writable_property', result='success', message=None, @@ -9537,9 +8843,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorTesterTester.' - 'Model_level_check_fails_if_no_model_level_failures', + class_name='FluentValidation.Tests.ValidatorTesterTester', + test_name='Model_level_check_fails_if_no_model_level_failures', result='success', message=None, content=None, @@ -9549,9 +8854,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.' - 'Should_throw_when_rule_is_null', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='Should_throw_when_rule_is_null', result='success', message=None, content=None, @@ -9561,10 +8865,9 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.AbstractValidatorTester.WhenPreValidationRetur' - 'nsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResul' - 't: AnotherInt Test Message)', + class_name='FluentValidation.Tests.AbstractValidatorTester', + test_name='WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAs' + 'ync(preValidationResult: AnotherInt Test Message)', result='success', message=None, content=None, @@ -9574,9 +8877,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Valid_email_addresses_rege' - 'x(email: "first.last@test.co.uk")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Valid_email_addresses_regex(email: "first.last@test.co.uk")', result='success', message=None, content=None, @@ -9586,9 +8888,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RuleDependencyTests.' - 'Nested_dependent_rules_inside_ruleset_inside_method', + class_name='FluentValidation.Tests.RuleDependencyTests', + test_name='Nested_dependent_rules_inside_ruleset_inside_method', result='success', message=None, content=None, @@ -9598,8 +8899,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.RulesetTests.Executes_multiple_rulesets', + class_name='FluentValidation.Tests.RulesetTests', + test_name='Executes_multiple_rulesets', result='success', message=None, content=None, @@ -9609,9 +8910,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NullTester.' - 'Passes_when_nullable_value_type_is_null', + class_name='FluentValidation.Tests.NullTester', + test_name='Passes_when_nullable_value_type_is_null', result='success', message=None, content=None, @@ -9621,9 +8921,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ValidatorSelectorTests.' - 'Includes_nested_property', + class_name='FluentValidation.Tests.ValidatorSelectorTests', + test_name='Includes_nested_property', result='success', message=None, content=None, @@ -9633,9 +8932,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.PredicateValidatorTester.' - 'Should_succeed_when_predicate_returns_true', + class_name='FluentValidation.Tests.PredicateValidatorTester', + test_name='Should_succeed_when_predicate_returns_true', result='success', message=None, content=None, @@ -9645,9 +8943,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NotEmptyTester.' - 'When_value_is_whitespace_validation_should_fail', + class_name='FluentValidation.Tests.NotEmptyTester', + test_name='When_value_is_whitespace_validation_should_fail', result='success', message=None, content=None, @@ -9657,9 +8954,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests.' - 'When_the_validator_fails_the_error_message_should_be_set_for_strings', + class_name='FluentValidation.Tests.ExclusiveBetweenValidatorTests', + test_name='When_the_validator_fails_the_error_message_should_be_set_for_strings', result='success', message=None, content=None, @@ -9669,9 +8965,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.NullTester.' - 'NullValidator_should_fail_if_value_has_value', + class_name='FluentValidation.Tests.NullTester', + test_name='NullValidator_should_fail_if_value_has_value', result='success', message=None, content=None, @@ -9681,9 +8976,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CustomFailureActionTester.' - 'Passes_object_being_validated_to_action', + class_name='FluentValidation.Tests.CustomFailureActionTester', + test_name='Passes_object_being_validated_to_action', result='success', message=None, content=None, @@ -9693,9 +8987,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.DefaultValidatorExtensionTester.' - 'NotEmpty_should_create_NotEmptyValidator', + class_name='FluentValidation.Tests.DefaultValidatorExtensionTester', + test_name='NotEmpty_should_create_NotEmptyValidator', result='success', message=None, content=None, @@ -9705,9 +8998,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.CascadingFailuresTester.' - 'Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' + class_name='FluentValidation.Tests.CascadingFailuresTester', + test_name='Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_v' 'alidator_level_legacy', result='success', message=None, @@ -9718,9 +9010,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.EmailValidatorTests.Invalid_email_addressex_re' - 'gex(email: "")', + class_name='FluentValidation.Tests.EmailValidatorTests', + test_name='Invalid_email_addressex_regex(email: "")', result='success', message=None, content=None, @@ -9730,9 +9021,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/FluentValidation.Tests.trx', test_file=None, line=None, - class_name='', - test_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester.' - 'Validates_with_nullable_when_property_is_null', + class_name='FluentValidation.Tests.GreaterThanOrEqualToValidatorTester', + test_name='Validates_with_nullable_when_property_is_null', result='success', message=None, content=None, diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml index 0e97b71d..d3120e51 100644 --- a/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml +++ b/python/test/files/trx/nunit/NUnit-net461-sample.junit-xml @@ -1,26 +1,26 @@ - + Expected: False But was: True at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 - + Ignore test - - + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 - + Expected: True But was: False at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 - + diff --git a/python/test/files/trx/nunit/NUnit-net461-sample.results b/python/test/files/trx/nunit/NUnit-net461-sample.results index 3aa191c1..f91af859 100644 --- a/python/test/files/trx/nunit/NUnit-net461-sample.results +++ b/python/test/files/trx/nunit/NUnit-net461-sample.results @@ -12,7 +12,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestTheory(False)', result='failure', message=' Expected: False\r\n But was: True\r\n', @@ -26,7 +26,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='SkipTest', result='skipped', message='Ignore test', @@ -37,7 +37,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestTheory(True)', result='success', message=None, @@ -48,7 +48,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestThrowingException', result='failure', message='System.Exception : Pretty good exception', @@ -65,7 +65,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='FailTest', result='failure', message=' Expected: True\r\n But was: False\r\n', @@ -79,7 +79,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-net461-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='PassingTest', result='success', message=None, diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml index efa23c2c..4c528220 100644 --- a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.junit-xml @@ -1,26 +1,26 @@ - + Expected: True But was: False at SampleProject.NUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 61 - + Ignore test - + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.NUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 50 - + Expected: False But was: True at SampleProject.NUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.NUnit\TestServiceTests.cs:line 25 - - + + diff --git a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results index ed820b3b..02360905 100644 --- a/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results +++ b/python/test/files/trx/nunit/NUnit-netcoreapp3.1-sample.results @@ -12,7 +12,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='FailTest', result='failure', message=' Expected: True\r\n But was: False\r\n', @@ -26,7 +26,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='SkipTest', result='skipped', message='Ignore test', @@ -37,7 +37,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestThrowingException', result='failure', message='System.Exception : Pretty good exception', @@ -54,7 +54,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestTheory(False)', result='failure', message=' Expected: False\r\n But was: True\r\n', @@ -68,7 +68,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='TestTheory(True)', result='success', message=None, @@ -79,7 +79,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/NUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', + class_name='SampleProject.NUnit.TestServiceTests', test_name='PassingTest', result='success', message=None, diff --git a/python/test/files/trx/nunit/SilentNotes.junit-xml b/python/test/files/trx/nunit/SilentNotes.junit-xml index f49b4fb6..96ecc337 100644 --- a/python/test/files/trx/nunit/SilentNotes.junit-xml +++ b/python/test/files/trx/nunit/SilentNotes.junit-xml @@ -1,108 +1,108 @@ - - - + + + Opens the authorization page in the system browse, to get a real access-token - - - - - - - - - - - + + + + + + + + + + + Refreshes a real token - - - + + + Too many consecutive fails seems to block an FTP server. - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets a real access-token - + Opens the authorization page in the system browse, to get a real authorization-code - - - - - - - - - - + + + + + + + + + + Gets a real access-token - - - + + + Gets a real access-token - + Refreshes a real token - - - + + + Opens the authorization page in the system browse, to get a real authorization-code - - + + Too many consecutive fails seems to block an FTP server. - - - - - - + + + + + + Too many consecutive fails seems to block an FTP server. - - - - - - + + + + + + Refreshes a real token - - + + diff --git a/python/test/files/trx/nunit/SilentNotes.results b/python/test/files/trx/nunit/SilentNotes.results index 378ad8dd..e5d732fe 100644 --- a/python/test/files/trx/nunit/SilentNotes.results +++ b/python/test/files/trx/nunit/SilentNotes.results @@ -12,7 +12,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest', test_name='FetchTokenReturnsNullForDeniedAccess', result='success', message=None, @@ -23,7 +23,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedJsonDoesNotContainPlaintextData', result='success', message=None, @@ -34,7 +35,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'DropboxCloudStorageClientTest', test_name='ReallyDoOpenAuthorizationPageInBrowser', result='skipped', message='Opens the authorization page in the system browse, to get a real ' @@ -47,7 +49,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='FileLifecycleWorks', result='success', message=None, @@ -58,7 +61,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsStringToSecureString', result='success', message=None, @@ -69,7 +72,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='ValidateAcceptsValidCredentials', result='success', message=None, @@ -80,7 +83,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='BuildAuthorizationRequestUrlThrowsWithMissingRedirectUrlForTokenFlow', result='success', message=None, @@ -91,7 +94,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='ParseRealWorldDropboxSuccessResponse', result='success', message=None, @@ -102,7 +105,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='BuildAuthorizationRequestUrlUsesAllParameters', result='success', message=None, @@ -113,7 +116,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedDatacontractDoesNotContainNullProperties', result='success', message=None, @@ -124,7 +128,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='CorrectlyConvertsSecureStringToString', result='success', message=None, @@ -135,7 +139,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedJsonDoesNotContainNullProperties', result='success', message=None, @@ -146,7 +151,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedDatacontractCanBeReadBack', result='success', message=None, @@ -157,7 +163,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'OnedriveCloudStorageClientTest', test_name='ReallyDoRefreshToken', result='skipped', message='Refreshes a real token', @@ -168,7 +175,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'WebdavCloudStorageClientTest', test_name='ParseStratoWebdavResponseCorrectly', result='success', message=None, @@ -179,7 +187,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedXmlDoesNotContainNullProperties', result='success', message=None, @@ -190,7 +199,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='ThrowsWithInvalidUrl', result='skipped', message='Too many consecutive fails seems to block an FTP server.', @@ -201,7 +211,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='NeedsRefreshReturnsFalseIfNotExpired', result='success', message=None, @@ -212,7 +222,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'WebdavCloudStorageClientTest', test_name='ThrowsWithInvalidUsername', result='success', message=None, @@ -223,7 +234,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='ThrowsWithHttpInsteadOfFtp', result='success', message=None, @@ -234,7 +246,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedXmlDoesNotContainPlaintextData', result='success', message=None, @@ -245,7 +258,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'WebdavCloudStorageClientTest', test_name='ThrowsWithInvalidPath', result='success', message=None, @@ -256,7 +270,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='BuildAuthorizationRequestUrlLeavesOutOptionalParameters', result='success', message=None, @@ -267,7 +281,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='SanitizeCredentials_ChangesInvalidPrefix', result='success', message=None, @@ -278,7 +293,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsUnicodeBytesToSecureString', result='success', message=None, @@ -289,7 +304,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='NeedsRefreshReturnsTrueIfNoExpirationDate', result='success', message=None, @@ -300,7 +315,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='ParseRealWorldDropboxRejectResponse', result='success', message=None, @@ -311,7 +326,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedJsonCanBeReadBack', result='success', message=None, @@ -322,7 +338,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GmxCloudStorageClientTest', test_name='ChoosesCorrectUrlForGmxNetEmail', result='success', message=None, @@ -333,7 +350,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'DropboxCloudStorageClientTest', test_name='ThrowsAccessDeniedExceptionWithInvalidToken', result='success', message=None, @@ -344,7 +362,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedDatacontractDoesNotContainPlaintextData', result='success', message=None, @@ -355,7 +374,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest', test_name='RefreshTokenCanInterpretGoogleResponse', result='success', message=None, @@ -366,7 +385,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'WebdavCloudStorageClientTest', test_name='ParseGmxWebdavResponseCorrectly', result='success', message=None, @@ -377,7 +397,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsUtf8BytesToSecureString', result='success', message=None, @@ -388,7 +408,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='CorrectlyConvertsStringToSecureString', result='success', message=None, @@ -399,7 +419,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='AreEqualWorksWithSameContent', result='success', message=None, @@ -410,7 +430,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsSecureStringToString', result='success', message=None, @@ -421,7 +441,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest', test_name='ParsesNullErrorCodeCorrectly', result='success', message=None, @@ -432,7 +452,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GmxCloudStorageClientTest', test_name='ChoosesCorrectUrlForGmxComEmail', result='success', message=None, @@ -443,7 +464,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'WebdavCloudStorageClientTest', test_name='FileLifecycleWorks', result='success', message=None, @@ -454,7 +476,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='SetExpiryDateBySecondsWorksWithNull', result='success', message=None, @@ -465,7 +487,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='ValidateRejectsInvalidCredentials', result='success', message=None, @@ -476,7 +498,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='EncryptBeforeSerializationProtectsAllNecessaryProperties', result='success', message=None, @@ -487,7 +510,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='DecryptAfterDesrializationRespectsNullProperties', result='success', message=None, @@ -498,7 +522,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'DropboxCloudStorageClientTest', test_name='ReallyDoFetchToken', result='skipped', message='Gets a real access-token', @@ -509,7 +534,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'OnedriveCloudStorageClientTest', test_name='ReallyDoOpenAuthorizationPageInBrowser', result='skipped', message='Opens the authorization page in the system browse, to get a real ' @@ -522,7 +548,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='DecryptAfterDesrializationCanReadAllPropertiesBack', result='success', message=None, @@ -533,7 +560,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='SecureSslConnectionWorks', result='success', message=None, @@ -544,7 +572,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='NeedsRefreshReturnsFalseForTokenFlow', result='success', message=None, @@ -555,7 +583,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest', test_name='FetchTokenCanInterpretGoogleResponse', result='success', message=None, @@ -566,7 +594,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='NeedsRefreshReturnsTrueIfExpired', result='success', message=None, @@ -577,7 +605,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='ParseRealWorldGoogleSuccessResponse', result='success', message=None, @@ -588,7 +616,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GoogleCloudStorageClientTest', test_name='FileLifecycleWorks', result='success', message=None, @@ -599,7 +628,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='SetExpiryDateBySecondsWorks', result='success', message=None, @@ -610,7 +639,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='SetExpiryDateBySecondsWorksWithVeryShortPeriod', result='success', message=None, @@ -621,7 +650,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GoogleCloudStorageClientTest', test_name='ReallyDoFetchToken', result='skipped', message='Gets a real access-token', @@ -632,7 +662,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'OnedriveCloudStorageClientTest', test_name='FileLifecycleWorks', result='success', message=None, @@ -643,7 +674,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest', test_name='ParsesAllErrorCodesCorrectly', result='success', message=None, @@ -654,7 +685,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'OnedriveCloudStorageClientTest', test_name='ReallyDoFetchToken', result='skipped', message='Gets a real access-token', @@ -665,7 +697,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GoogleCloudStorageClientTest', test_name='ReallyDoRefreshToken', result='skipped', message='Refreshes a real token', @@ -676,7 +709,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'DropboxCloudStorageClientTest', test_name='FileLifecycleWorks', result='success', message=None, @@ -687,7 +721,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='ParseRealWorldGoogleRejectResponse', result='success', message=None, @@ -698,7 +732,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'GoogleCloudStorageClientTest', test_name='ReallyDoOpenAuthorizationPageInBrowser', result='skipped', message='Opens the authorization page in the system browse, to get a real ' @@ -711,7 +746,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsSecureStringToUnicodeBytes', result='success', message=None, @@ -722,7 +757,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='ThrowsWithInvalidUsername', result='skipped', message='Too many consecutive fails seems to block an FTP server.', @@ -733,7 +769,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='BuildAuthorizationRequestUrlEscapesParameters', result='success', message=None, @@ -744,7 +780,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest', test_name='FetchTokenThrowsWithWrongState', result='success', message=None, @@ -755,7 +791,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest', test_name='BuildOAuth2AuthorizationRequestUrlWorks', result='success', message=None, @@ -766,7 +802,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='AreEqualsWorksCorrectly', result='success', message=None, @@ -777,7 +813,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='EncryptBeforeSerializationRespectsNullProperties', result='success', message=None, @@ -788,7 +825,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'FtpCloudStorageClientTest', test_name='ThrowsWithInvalidPassword', result='skipped', message='Too many consecutive fails seems to block an FTP server.', @@ -799,7 +837,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageCredentialsTest', test_name='AreEqualWorksWithDifferentPassword', result='success', message=None, @@ -810,7 +848,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='AreEqualWorksWithNullDate', result='success', message=None, @@ -821,7 +859,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.' + 'SerializeableCloudStorageCredentialsTest', test_name='SerializedXmlCanBeReadBack', result='success', message=None, @@ -832,7 +871,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest', test_name='BuildAuthorizationRequestUrlUsesCodeVerifier', result='success', message=None, @@ -843,7 +882,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.SecureStringExtensionsTest', test_name='CorrectlyConvertsSecureStringToUtf8Bytes', result='success', message=None, @@ -854,7 +893,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageProviders.' + 'DropboxCloudStorageClientTest', test_name='ReallyDoRefreshToken', result='skipped', message='Refreshes a real token', @@ -865,7 +905,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest', test_name='ParsesUnknownErrorCodeCorrectly', result='success', message=None, @@ -876,7 +916,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='nunit/SilentNotes.trx', test_file=None, line=None, - class_name='', + class_name='VanillaCloudStorageClientTest.CloudStorageTokenTest', test_name='AreEqualWorksWithSameContent', result='success', message=None, diff --git a/python/test/files/trx/xunit/dotnet-trx.junit-xml b/python/test/files/trx/xunit/dotnet-trx.junit-xml index fe401d3c..f0632825 100644 --- a/python/test/files/trx/xunit/dotnet-trx.junit-xml +++ b/python/test/files/trx/xunit/dotnet-trx.junit-xml @@ -1,32 +1,32 @@ - - - + + + Assert.True() Failure Expected: True Actual: False at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 67 - + - - - + + + System.DivideByZeroException : Attempted to divide by zero. at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.Unit\Calculator.cs:line 9 at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 33 - + System.Exception : Test at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 39 - + Assert.Equal() Failure Expected: 3 Actual: 2 at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 27 - - + + Assert.True() Failure Expected: True Actual: False at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\Users\Michal\Workspace\dorny\test-reporter\reports\dotnet\DotnetTests.XUnitTests\CalculatorTests.cs:line 59 diff --git a/python/test/files/trx/xunit/dotnet-trx.results b/python/test/files/trx/xunit/dotnet-trx.results index 8552d390..bc6c378e 100644 --- a/python/test/files/trx/xunit/dotnet-trx.results +++ b/python/test/files/trx/xunit/dotnet-trx.results @@ -12,8 +12,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Timeout_Test', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Timeout_Test', result='success', message=None, content=None, @@ -23,8 +23,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Passing_Test', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Passing_Test', result='success', message=None, content=None, @@ -34,7 +34,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', + class_name='DotnetTests.XUnitTests.CalculatorTests', test_name='Should be even number(i: 3)', result='failure', message='Assert.True() Failure\r\nExpected: True\r\nActual: False', @@ -49,8 +49,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Skipped_Test', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Skipped_Test', result='skipped', message=None, content=None, @@ -60,7 +60,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', + class_name='DotnetTests.XUnitTests.CalculatorTests', test_name='Custom Name', result='success', message=None, @@ -71,7 +71,7 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', + class_name='DotnetTests.XUnitTests.CalculatorTests', test_name='Should be even number(i: 2)', result='success', message=None, @@ -82,8 +82,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Exception_In_TargetTest', result='failure', message='System.DivideByZeroException : Attempted to divide by zero.', content='System.DivideByZeroException : Attempted to divide by zero. at ' @@ -99,8 +99,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Exception_In_Test', result='failure', message='System.Exception : Test', content='System.Exception : Test at ' @@ -113,8 +113,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Failing_Test', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Failing_Test', result='failure', message='Assert.Equal() Failure\r\nExpected: 3\r\nActual: 2', content='Assert.Equal() Failure\r\nExpected: 3\r\nActual: 2 at ' @@ -127,8 +127,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(i: 2)', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Is_Even_Number(i: 2)', result='success', message=None, content=None, @@ -138,8 +138,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/dotnet-trx.trx', test_file=None, line=None, - class_name='', - test_name='DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(i: 3)', + class_name='DotnetTests.XUnitTests.CalculatorTests', + test_name='Is_Even_Number(i: 3)', result='failure', message='Assert.True() Failure\r\nExpected: True\r\nActual: False', content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml index 0a453a40..794d427f 100644 --- a/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml +++ b/python/test/files/trx/xunit/xUnit-net461-sample.junit-xml @@ -1,24 +1,24 @@ - + Assert.Equal() Failure Expected: False Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 - + Assert.True() Failure Expected: True Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 - + - + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 - - + + diff --git a/python/test/files/trx/xunit/xUnit-net461-sample.results b/python/test/files/trx/xunit/xUnit-net461-sample.results index 4a657be7..f9bfb85a 100644 --- a/python/test/files/trx/xunit/xUnit-net461-sample.results +++ b/python/test/files/trx/xunit/xUnit-net461-sample.results @@ -12,8 +12,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: False)', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestTheory(expected: False)', result='failure', message='Assert.Equal() Failure\r\nExpected: False\r\nActual: True', content='Assert.Equal() Failure\r\nExpected: False\r\nActual: True at ' @@ -26,8 +26,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.FailTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='FailTest', result='failure', message='Assert.True() Failure\r\nExpected: True\r\nActual: False', content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' @@ -40,8 +40,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.SkipTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='SkipTest', result='skipped', message=None, content=None, @@ -51,8 +51,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestThrowingException', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestThrowingException', result='failure', message='System.Exception : Pretty good exception', content='System.Exception : Pretty good exception at ' @@ -68,8 +68,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: True)', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestTheory(expected: True)', result='success', message=None, content=None, @@ -79,8 +79,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-net461-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.PassingTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='PassingTest', result='success', message=None, content=None, diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml index 7d487db0..78f5e1b6 100644 --- a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.junit-xml @@ -1,22 +1,22 @@ - + Assert.True() Failure Expected: True Actual: False at SampleProject.xUnit.TestServiceTests.FailTest() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 65 - + Assert.Equal() Failure Expected: False Actual: True at SampleProject.xUnit.TestServiceTests.TestTheory(Boolean expected) in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 29 - + - - - + + + System.Exception : Pretty good exception at SampleProject.TestService.GetException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject\TestService.cs:line 19 at SampleProject.xUnit.TestServiceTests.TestThrowingException() in C:\Dev\LiquidTestReports\test\SampleProject\SampleProject.Tests.xUnit\TestServiceTests.cs:line 54 diff --git a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results index d42007d9..65c64135 100644 --- a/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results +++ b/python/test/files/trx/xunit/xUnit-netcoreapp3.1-sample.results @@ -12,8 +12,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.FailTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='FailTest', result='failure', message='Assert.True() Failure\r\nExpected: True\r\nActual: False', content='Assert.True() Failure\r\nExpected: True\r\nActual: False at ' @@ -26,8 +26,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: False)', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestTheory(expected: False)', result='failure', message='Assert.Equal() Failure\r\nExpected: False\r\nActual: True', content='Assert.Equal() Failure\r\nExpected: False\r\nActual: True at ' @@ -40,8 +40,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.SkipTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='SkipTest', result='skipped', message=None, content=None, @@ -51,8 +51,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.PassingTest', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='PassingTest', result='success', message=None, content=None, @@ -62,8 +62,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestTheory(expected: True)', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestTheory(expected: True)', result='success', message=None, content=None, @@ -73,8 +73,8 @@ publish.unittestresults.ParsedUnitTestResults( result_file='xunit/xUnit-netcoreapp3.1-sample.trx', test_file=None, line=None, - class_name='', - test_name='SampleProject.xUnit.TestServiceTests.TestThrowingException', + class_name='SampleProject.xUnit.TestServiceTests', + test_name='TestThrowingException', result='failure', message='System.Exception : Pretty good exception', content='System.Exception : Pretty good exception at ' From 9ceb86ec684707347f3ce209e324cd140c8772b8 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 22:59:47 +0200 Subject: [PATCH 24/32] Do not produce NaN times --- python/publish/junit.py | 2 +- python/publish/xslt/trx-to-junit.xslt | 10 ++++- ...yami_YAMILEX 2015-10-24 04_18_59.junit-xml | 40 +++++++++--------- .../yami_YAMILEX 2015-10-24 04_18_59.results | 42 +++++++++---------- 4 files changed, 50 insertions(+), 44 deletions(-) diff --git a/python/publish/junit.py b/python/publish/junit.py index 40b2ba55..856023e8 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -175,7 +175,7 @@ def create_junitxml(filepath: str, tree: JUnitTree) -> Union[JUnitXml, JUnitXmlE suite_skipped = sum([suite.skipped + suite.disabled for result_file, suite in suites]) suite_failures = sum([suite.failures for result_file, suite in suites]) suite_errors = sum([suite.errors for result_file, suite in suites]) - suite_time = int(sum([suite.time for result_file, suite in suites if not math.isnan(suite.time)]) * time_factor) + suite_time = int(sum([suite.time for result_file, suite in suites]) * time_factor) def int_opt(string: Optional[str]) -> Optional[int]: try: diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 7be421f1..355db927 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -26,11 +26,14 @@ - + + + + @@ -112,11 +115,14 @@ - + + + + diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml index 94f84057..6ca34d1a 100644 --- a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.junit-xml @@ -2,7 +2,7 @@ - + UTA007: la firma del método CompareTest definido en la clase Prueba_Sistema.SIARAlgorithmTest no es correcta. El método de prueba marcado con el atributo [TestMethod] debe ser no estático, público, no debe devolver ningún valor ni tomar ningún parámetro. Por ejemplo: public void Test.Class1.Test(). @@ -27,61 +27,61 @@ Nombre del parámetro: index en System.ThrowHelper.ThrowArgumentOutOfRangeExc - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results index 90b20fe6..31a6be70 100644 --- a/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results +++ b/python/test/files/trx/yami_YAMILEX 2015-10-24 04_18_59.results @@ -6,7 +6,7 @@ publish.unittestresults.ParsedUnitTestResults( suite_skipped=21, suite_failures=2, suite_errors=0, - suite_time=0, + suite_time=26, cases=[ publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -36,7 +36,7 @@ publish.unittestresults.ParsedUnitTestResults( 'marcado con el atributo [TestMethod] debe ser no estático, público, ' 'no debe devolver ningún valor ni tomar ningún parámetro. Por ' 'ejemplo: public void Test.Class1.Test().', - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -122,7 +122,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -133,7 +133,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -144,7 +144,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -155,7 +155,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -166,7 +166,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -177,7 +177,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -188,7 +188,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -199,7 +199,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -210,7 +210,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -221,7 +221,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -232,7 +232,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -243,7 +243,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -254,7 +254,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -265,7 +265,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -276,7 +276,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -287,7 +287,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -298,7 +298,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -309,7 +309,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ), publish.unittestresults.UnitTestCase( result_file='yami_YAMILEX 2015-10-24 04_18_59.trx', @@ -320,7 +320,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message=None, content=None, - time=float('nan') + time=0.0 ) ] ) \ No newline at end of file From c66c89615b7d88e9e9c29b88370067686d5dd17b Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 23:05:50 +0200 Subject: [PATCH 25/32] Push UnitTest selection by id into xpath select --- python/publish/xslt/trx-to-junit.xslt | 198 +++++++++++++------------- 1 file changed, 96 insertions(+), 102 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 355db927..abb30179 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -49,57 +49,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138,57 +135,54 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9e06502eacfdf61399abd1b5c8ac367644fff172 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Sun, 5 Jun 2022 23:18:03 +0200 Subject: [PATCH 26/32] Update stats over all test example files --- python/test/test_action_script.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/python/test/test_action_script.py b/python/test/test_action_script.py index 8c5aa43c..ccd5f4ae 100644 --- a/python/test/test_action_script.py +++ b/python/test/test_action_script.py @@ -803,15 +803,15 @@ def test_parse_files(self): gha.warning.assert_not_called() gha.error.assert_not_called() - self.assertEqual(27, actual.files) + self.assertEqual(35, actual.files) self.assertEqual(4, len(actual.errors)) - self.assertEqual(24, actual.suites) - self.assertEqual(454, actual.suite_tests) - self.assertEqual(57, actual.suite_skipped) - self.assertEqual(29, actual.suite_failures) + self.assertEqual(32, actual.suites) + self.assertEqual(1397, actual.suite_tests) + self.assertEqual(96, actual.suite_skipped) + self.assertEqual(48, actual.suite_failures) self.assertEqual(7, actual.suite_errors) - self.assertEqual(2361, actual.suite_time) - self.assertEqual(444, len(actual.cases)) + self.assertEqual(2392, actual.suite_time) + self.assertEqual(1387, len(actual.cases)) self.assertEqual('commit', actual.commit) def test_parse_files_no_matches(self): From e1fe3d19525bcd833f0d67cf706a1b8c35bf27fb Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 6 Jun 2022 12:36:09 +0200 Subject: [PATCH 27/32] Make duration from timestamps work with date boundaries and daylight saving switch --- python/publish/xslt/trx-to-junit.xslt | 84 ++++++++++++++++--- .../files/trx/nunit/SilentNotes.junit-xml | 14 ++-- .../test/files/trx/nunit/SilentNotes.results | 14 ++-- 3 files changed, 88 insertions(+), 24 deletions(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index abb30179..8ad92b13 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -24,13 +24,20 @@ - + - - - - + + + + + + + + + + + @@ -110,13 +117,20 @@ - + - - - - + + + + + + + + + + + @@ -198,4 +212,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/test/files/trx/nunit/SilentNotes.junit-xml b/python/test/files/trx/nunit/SilentNotes.junit-xml index 96ecc337..68f1453f 100644 --- a/python/test/files/trx/nunit/SilentNotes.junit-xml +++ b/python/test/files/trx/nunit/SilentNotes.junit-xml @@ -3,7 +3,7 @@ - + Opens the authorization page in the system browse, to get a real access-token @@ -21,7 +21,7 @@ - + Too many consecutive fails seems to block an FTP server. @@ -51,7 +51,7 @@ - + Gets a real access-token @@ -66,7 +66,7 @@ - + Gets a real access-token @@ -79,11 +79,11 @@ - + Opens the authorization page in the system browse, to get a real authorization-code - + Too many consecutive fails seems to block an FTP server. @@ -99,7 +99,7 @@ - + Refreshes a real token diff --git a/python/test/files/trx/nunit/SilentNotes.results b/python/test/files/trx/nunit/SilentNotes.results index e5d732fe..8927a096 100644 --- a/python/test/files/trx/nunit/SilentNotes.results +++ b/python/test/files/trx/nunit/SilentNotes.results @@ -43,7 +43,7 @@ publish.unittestresults.ParsedUnitTestResults( 'access-token', content='Opens the authorization page in the system browse, to get a real ' 'access-token', - time=8.4e-06 + time=8.3e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -205,7 +205,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message='Too many consecutive fails seems to block an FTP server.', content='Too many consecutive fails seems to block an FTP server.', - time=1.3e-06 + time=1.4e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -528,7 +528,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message='Gets a real access-token', content='Gets a real access-token', - time=0.0004562 + time=0.0004561 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -656,7 +656,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message='Gets a real access-token', content='Gets a real access-token', - time=3.2e-06 + time=3.1e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -740,7 +740,7 @@ publish.unittestresults.ParsedUnitTestResults( 'authorization-code', content='Opens the authorization page in the system browse, to get a real ' 'authorization-code', - time=1e-06 + time=1.2e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -763,7 +763,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message='Too many consecutive fails seems to block an FTP server.', content='Too many consecutive fails seems to block an FTP server.', - time=9e-07 + time=1e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', @@ -899,7 +899,7 @@ publish.unittestresults.ParsedUnitTestResults( result='skipped', message='Refreshes a real token', content='Refreshes a real token', - time=1.1e-06 + time=1.2e-06 ), publish.unittestresults.UnitTestCase( result_file='nunit/SilentNotes.trx', From f4b1f391eb8c80053c0918c2265467baac31568c Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 6 Jun 2022 13:17:18 +0200 Subject: [PATCH 28/32] Make duration from timestamps work beyond 2038 (32-bit seconds) --- python/publish/xslt/trx-to-junit.xslt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/publish/xslt/trx-to-junit.xslt b/python/publish/xslt/trx-to-junit.xslt index 8ad92b13..483536c4 100644 --- a/python/publish/xslt/trx-to-junit.xslt +++ b/python/publish/xslt/trx-to-junit.xslt @@ -258,8 +258,10 @@ + + - + From a9af6a25154f92bdfcf1ffa28fa2c5e34ded8346 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 6 Jun 2022 13:21:07 +0200 Subject: [PATCH 29/32] Guard against NaN suite times --- python/publish/junit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/publish/junit.py b/python/publish/junit.py index 856023e8..40b2ba55 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -175,7 +175,7 @@ def create_junitxml(filepath: str, tree: JUnitTree) -> Union[JUnitXml, JUnitXmlE suite_skipped = sum([suite.skipped + suite.disabled for result_file, suite in suites]) suite_failures = sum([suite.failures for result_file, suite in suites]) suite_errors = sum([suite.errors for result_file, suite in suites]) - suite_time = int(sum([suite.time for result_file, suite in suites]) * time_factor) + suite_time = int(sum([suite.time for result_file, suite in suites if not math.isnan(suite.time)]) * time_factor) def int_opt(string: Optional[str]) -> Optional[int]: try: From e9d990a09111c9ee3464ea884f05fc4a0a3d1886 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 6 Jun 2022 15:21:10 +0200 Subject: [PATCH 30/32] Fix single file publish --- .github/workflows/ci-cd.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 7999b3df..3fc2ab3b 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -409,7 +409,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Copy test junit xml files + - name: Copy test files run: cp -rv python/test/files test-files - name: Prepare publish action from this branch @@ -452,9 +452,7 @@ jobs: uses: actions/checkout@v3 - name: Copy test junit xml files - run: | - mkdir -p test-files - cp -v python/test/files/*.xml test-files/ + run: cp -rv python/test/files/junit-xml test-files - name: Prepare publish action from this branch run: | @@ -466,7 +464,7 @@ jobs: with: check_name: Test Results (Test File) fail_on: nothing - files: "test-files/junit.gloo.standalone.xml" + files: "test-files/pytest/junit.gloo.standalone.xml" json_file: "tests.json" log_level: DEBUG From 0bcc2185d9cb9fd112b0d658eb50920d9e001c8f Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Mon, 6 Jun 2022 19:45:23 +0200 Subject: [PATCH 31/32] Some changes in README.md got lost, added again --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e413c0a7..b899a5ee 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ The list of most notable options: |Option|Default Value|Description| |:-----|:-----:|:----------| -|`junit_files`
`trx_files`| |At least one of these `*_files` must be set. File patterns of JUnit XML and TRX test result files, respectively. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| +|`junit_files`
`trx_files`|At least one of these `*_files` must be set.|File patterns of JUnit XML and TRX test result files, respectively. Supports `*`, `**`, `?`, and `[]`. Use multiline string for multiple patterns. Patterns starting with `!` exclude the matching files. There have to be at least one pattern starting without a `!`.| |`check_name`|`"Test Results"`|An alternative name for the check result.| |`comment_title`|same as `check_name`|An alternative name for the pull request comment.| |`comment_mode`|`always`|The action posts comments to pull requests that are associated with the commit. Set to:
`always` - always comment
`changes` - comment when changes w.r.t. the target branch exist
`changes in failures` - when changes in the number of failures and errors exist
`changes in errors` - when changes in the number of (only) errors exist
`failures` - when failures or errors exist
`errors` - when (only) errors exist
`off` - to not create pull request comments.| From 7067fa3f2c7bf78ed4c04338d8c1157a8d154294 Mon Sep 17 00:00:00 2001 From: Enrico Minack Date: Tue, 14 Jun 2022 17:38:46 +0200 Subject: [PATCH 32/32] Introduce JUnitTreeOrException and ParsedJUnitFile --- python/publish/junit.py | 11 ++++++----- python/publish/trx.py | 10 +++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/python/publish/junit.py b/python/publish/junit.py index 40b2ba55..4ae3972e 100644 --- a/python/publish/junit.py +++ b/python/publish/junit.py @@ -120,13 +120,15 @@ def close(self) -> Element: JUnitTree = etree.ElementTree +JUnitTreeOrException = Union[JUnitTree, BaseException] +ParsedJUnitFile = Tuple[str, JUnitTreeOrException] def parse_junit_xml_files(files: Iterable[str], drop_testcases: bool = False, - progress: Callable[[Tuple[str, Union[JUnitTree, BaseException]]], Tuple[str, Union[JUnitTree, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitTree, BaseException]]]: - """Parses junit xml files and returns aggregated statistics as a ParsedUnitTestResults.""" - def parse(path: str) -> Union[JUnitXml, BaseException]: + progress: Callable[[ParsedJUnitFile], ParsedJUnitFile] = lambda x: x) -> Iterable[ParsedJUnitFile]: + def parse(path: str) -> JUnitTreeOrException: + """Parses a junit xml file and returns either a JUnitTree or an Exception.""" if not os.path.exists(path): return FileNotFoundError(f'File does not exist.') if os.stat(path).st_size == 0: @@ -143,8 +145,7 @@ def parse(path: str) -> Union[JUnitXml, BaseException]: return [progress((result_file, parse(result_file))) for result_file in files] -def process_junit_xml_elems(trees: Iterable[Tuple[str, Union[JUnitTree, BaseException]]], - time_factor: float = 1.0) -> ParsedUnitTestResults: +def process_junit_xml_elems(trees: Iterable[ParsedJUnitFile], time_factor: float = 1.0) -> ParsedUnitTestResults: # TODO: move upstream into JUnitTree def create_junitxml(filepath: str, tree: JUnitTree) -> Union[JUnitXml, JUnitXmlError]: root_elem = tree.getroot() diff --git a/python/publish/trx.py b/python/publish/trx.py index 3a085f5a..77e3d31e 100644 --- a/python/publish/trx.py +++ b/python/publish/trx.py @@ -1,19 +1,19 @@ import os import pathlib -from typing import Iterable, Tuple, Union, Callable +from typing import Iterable, Callable from lxml import etree -from publish.junit import JUnitTree +from publish.junit import JUnitTreeOrException, ParsedJUnitFile with (pathlib.Path(__file__).parent / 'xslt' / 'trx-to-junit.xslt').open('r', encoding='utf-8') as r: transform_trx_to_junit = etree.XSLT(etree.parse(r)) def parse_trx_files(files: Iterable[str], - progress: Callable[[Tuple[str, Union[JUnitTree, BaseException]]], Tuple[str, Union[JUnitTree, BaseException]]] = lambda x: x) -> Iterable[Tuple[str, Union[JUnitTree, BaseException]]]: - """Parses trx files and returns aggregated statistics as a ParsedUnitTestResults.""" - def parse(path: str) -> Union[JUnitTree, BaseException]: + progress: Callable[[ParsedJUnitFile], ParsedJUnitFile] = lambda x: x) -> Iterable[ParsedJUnitFile]: + def parse(path: str) -> JUnitTreeOrException: + """Parses a trx file and returns either a JUnitTree or an Exception.""" if not os.path.exists(path): return FileNotFoundError(f'File does not exist.') if os.stat(path).st_size == 0: