From b1cf8ea0d8449a40215e147ebe78ec6bdb356d95 Mon Sep 17 00:00:00 2001 From: Dieter Baron Date: Fri, 19 Apr 2024 15:29:14 +0200 Subject: [PATCH] Add directive test-case-source. --- NEWS.md | 4 ++++ manpages/nihtest-case.mdoc | 5 +++++ nihtest/Test.py | 2 +- nihtest/TestCase.py | 8 ++++++++ tests/test-case-source.input | 3 +++ tests/test-case-source.test | 12 ++++++++++++ 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/test-case-source.input create mode 100644 tests/test-case-source.test diff --git a/NEWS.md b/NEWS.md index db4ce8e..e35d920 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# 1.7.0 [2024-04-19] + +- Add `test-case-source` directory for better support of script generated test cases. + # 1.6.0 [2024-04-10] - Print command line for `--verbose --setup-only`. diff --git a/manpages/nihtest-case.mdoc b/manpages/nihtest-case.mdoc index 2e35fbb..3620506 100644 --- a/manpages/nihtest-case.mdoc +++ b/manpages/nihtest-case.mdoc @@ -205,6 +205,11 @@ before comparing them. See .Ic stderr-replace for details. +.It Ic test-case-source Ar filename +Use +.Ar filename +to refer to test case in error messages. +This is useful if the test case is created by a script. .\" .It Ic ulimit Ar C VALUE .\" Set .\" .Xr ulimit 1 diff --git a/nihtest/Test.py b/nihtest/Test.py index 6975e51..03d2f51 100644 --- a/nihtest/Test.py +++ b/nihtest/Test.py @@ -102,7 +102,7 @@ def run(self): st = os.stat(full_file) os.chmod(full_file, st.st_mode | stat.S_IWRITE) - output = Output.Output(self.case.file_name + ":1: test case failed", self.case.configuration.verbose != Configuration.When.NEVER) + output = Output.Output(self.case.test_case_source + ":1: test case failed", self.case.configuration.verbose != Configuration.When.NEVER) self.compare(output, "exit code", [str(self.case.exit_code)], [str(command.exit_code)]) self.compare(output,"output", self.case.stdout, self.process_output_replace(command.stdout, self.case.stdout_replace)) diff --git a/nihtest/TestCase.py b/nihtest/TestCase.py index 5b5c97d..c133c5f 100644 --- a/nihtest/TestCase.py +++ b/nihtest/TestCase.py @@ -38,6 +38,7 @@ def __init__(self, configuration, args): if file_name[-5:] != ".test": file_name += ".test" self.file_name = self.configuration.find_input_file(file_name) + self.test_case_source = self.file_name self.file = open(self.file_name, mode="r", encoding='utf-8') self.line_number = 0 self.directives_seen = {} @@ -207,6 +208,9 @@ def directive_stdout(self, arguments): def directive_stdout_replace(self, arguments): self.stdout_replace.append((re.compile(arguments[0]), arguments[1])) + def directive_test_case_source(self, arguments): + self.test_case_source = arguments[0] + def directive_working_directory(self, arguments): self.working_directory = arguments[0] @@ -277,6 +281,10 @@ def directive_working_directory(self, arguments): "stdout-replace": Directive(method=directive_stdout_replace, usage="pattern replacement", minimum_arguments=2), + "test-case-source": Directive(method=directive_test_case_source, + usage="file", + minimum_arguments=1, + only_once=True), "working-directory": Directive(method=directive_working_directory, usage="directory", minimum_arguments=1, diff --git a/tests/test-case-source.input b/tests/test-case-source.input new file mode 100644 index 0000000..a6adb72 --- /dev/null +++ b/tests/test-case-source.input @@ -0,0 +1,3 @@ +test-case-source source.test +program nihtest-false +return 0 diff --git a/tests/test-case-source.test b/tests/test-case-source.test new file mode 100644 index 0000000..d6fbd5b --- /dev/null +++ b/tests/test-case-source.test @@ -0,0 +1,12 @@ +program nihtest +arguments test.test +return 1 +file test.test test-case-source.input +file nihtest.conf nihtest-conf +stdout +source.test:1: test case failed +exit code differs: +-0 ++1 +test -- FAIL: exit code +end-of-inline-data