Git fork

ci: optionally mark up output in the GitHub workflow

A couple of commands exist to spruce up the output in GitHub workflows:
https://docs.github.com/en/actions/learn-github-actions/workflow-commands-for-github-actions

In addition to the `::group::<label>`/`::endgroup::` commands (which we
already use to structure the output of the build step better), we also
use `::error::`/`::notice::` to draw the attention to test failures and
to test cases that were expected to fail but didn't.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Johannes Schindelin and committed by
Junio C Hamano
0f5ae593 dab73aeb

+56 -3
+2 -2
t/test-lib-functions.sh
··· 795 795 } 796 796 797 797 test_expect_failure () { 798 - test_start_ 798 + test_start_ "$@" 799 799 test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq= 800 800 test "$#" = 2 || 801 801 BUG "not 2 or 3 parameters to test-expect-failure" ··· 815 815 } 816 816 817 817 test_expect_success () { 818 - test_start_ 818 + test_start_ "$@" 819 819 test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq= 820 820 test "$#" = 2 || 821 821 BUG "not 2 or 3 parameters to test-expect-success"
+50
t/test-lib-github-workflow-markup.sh
··· 1 + # Library of functions to mark up test scripts' output suitable for 2 + # pretty-printing it in GitHub workflows. 3 + # 4 + # Copyright (c) 2022 Johannes Schindelin 5 + # 6 + # This program is free software: you can redistribute it and/or modify 7 + # it under the terms of the GNU General Public License as published by 8 + # the Free Software Foundation, either version 2 of the License, or 9 + # (at your option) any later version. 10 + # 11 + # This program is distributed in the hope that it will be useful, 12 + # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 + # GNU General Public License for more details. 15 + # 16 + # You should have received a copy of the GNU General Public License 17 + # along with this program. If not, see http://www.gnu.org/licenses/ . 18 + # 19 + # The idea is for `test-lib.sh` to source this file when run in GitHub 20 + # workflows; these functions will then override (empty) functions 21 + # that are are called at the appropriate times during the test runs. 22 + 23 + start_test_output () { 24 + test -n "$GIT_TEST_TEE_OUTPUT_FILE" || 25 + die "--github-workflow-markup requires --verbose-log" 26 + github_markup_output="${GIT_TEST_TEE_OUTPUT_FILE%.out}.markup" 27 + >$github_markup_output 28 + GIT_TEST_TEE_OFFSET=0 29 + } 30 + 31 + # No need to override start_test_case_output 32 + 33 + finalize_test_case_output () { 34 + test_case_result=$1 35 + shift 36 + case "$test_case_result" in 37 + failure) 38 + echo >>$github_markup_output "::error::failed: $this_test.$test_count $1" 39 + ;; 40 + fixed) 41 + echo >>$github_markup_output "::notice::fixed: $this_test.$test_count $1" 42 + ;; 43 + esac 44 + echo >>$github_markup_output "::group::$test_case_result: $this_test.$test_count $*" 45 + test-tool >>$github_markup_output path-utils skip-n-bytes \ 46 + "$GIT_TEST_TEE_OUTPUT_FILE" $GIT_TEST_TEE_OFFSET 47 + echo >>$github_markup_output "::endgroup::" 48 + } 49 + 50 + # No need to override finalize_test_output
+4 -1
t/test-lib.sh
··· 204 204 --write-junit-xml) 205 205 . "$TEST_DIRECTORY/test-lib-junit.sh" 206 206 ;; 207 + --github-workflow-markup) 208 + . "$TEST_DIRECTORY/test-lib-github-workflow-markup.sh" 209 + ;; 207 210 --stress) 208 211 stress=t ;; 209 212 --stress=*) ··· 1082 1085 test_count=$(($test_count+1)) 1083 1086 maybe_setup_verbose 1084 1087 maybe_setup_valgrind 1085 - start_test_case_output 1088 + start_test_case_output "$@" 1086 1089 } 1087 1090 1088 1091 test_finish_ () {