diff options
| author | Lexi Winter <lexi@le-fay.org> | 2025-06-29 19:25:29 +0100 |
|---|---|---|
| committer | Lexi Winter <lexi@le-fay.org> | 2025-06-29 19:25:29 +0100 |
| commit | bc524d70253a4ab2fe40c3ca3e5666e267c0a4d1 (patch) | |
| tree | 1e629e7b46b1d9972a973bc93fd100bcebd395be /tests/TestScripts/testPartialTestCaseEvent.py | |
| download | nihil-vendor/catch2.tar.gz nihil-vendor/catch2.tar.bz2 | |
import catch2 3.8.1vendor/catch2/3.8.1vendor/catch2
Diffstat (limited to 'tests/TestScripts/testPartialTestCaseEvent.py')
| -rwxr-xr-x | tests/TestScripts/testPartialTestCaseEvent.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/TestScripts/testPartialTestCaseEvent.py b/tests/TestScripts/testPartialTestCaseEvent.py new file mode 100755 index 0000000..55c6e29 --- /dev/null +++ b/tests/TestScripts/testPartialTestCaseEvent.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +# Copyright Catch2 Authors +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE.txt or copy at +# https://www.boost.org/LICENSE_1_0.txt) + +# SPDX-License-Identifier: BSL-1.0 + +""" +This test script verifies that the testCasePartial{Starting,Ended} reporter +events fire properly. This is done by calling a test binary compiled with +reporter that reports specifically testCase* events, and verifying the +outputs match what we expect. +""" + +import subprocess +import sys + +expected_section_output = '''\ +TestCaseStarting: section +TestCaseStartingPartial: section#0 +TestCasePartialEnded: section#0 +TestCaseStartingPartial: section#1 +TestCasePartialEnded: section#1 +TestCaseStartingPartial: section#2 +TestCasePartialEnded: section#2 +TestCaseStartingPartial: section#3 +TestCasePartialEnded: section#3 +TestCaseEnded: section +''' + +expected_generator_output = '''\ +TestCaseStarting: generator +TestCaseStartingPartial: generator#0 +TestCasePartialEnded: generator#0 +TestCaseStartingPartial: generator#1 +TestCasePartialEnded: generator#1 +TestCaseStartingPartial: generator#2 +TestCasePartialEnded: generator#2 +TestCaseStartingPartial: generator#3 +TestCasePartialEnded: generator#3 +TestCaseEnded: generator +''' + + +from typing import List + +def get_test_output(test_exe: str, sections: bool) -> List[str]: + cmd = [test_exe, '--reporter', 'partial'] + if sections: + cmd.append('section') + else: + cmd.append('generator') + + ret = subprocess.run(cmd, + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + timeout = 10, + check = True, + universal_newlines = True) + + return ret.stdout + +def main(): + test_exe, = sys.argv[1:] + actual_section_output = get_test_output(test_exe, sections = True) + + assert actual_section_output == expected_section_output, ( + 'Sections\nActual:\n{}\nExpected:\n{}\n'.format(actual_section_output, expected_section_output)) + + actual_generator_output = get_test_output(test_exe, sections = False) + assert actual_generator_output == expected_generator_output, ( + 'Generators\nActual:\n{}\nExpected:\n{}\n'.format(actual_generator_output, expected_generator_output)) + + + +if __name__ == '__main__': + sys.exit(main()) |
