From patchwork Thu Apr 21 18:36:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822224 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F21B3C433EF for ; Thu, 21 Apr 2022 18:36:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391424AbiDUSjg (ORCPT ); Thu, 21 Apr 2022 14:39:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391404AbiDUSjb (ORCPT ); Thu, 21 Apr 2022 14:39:31 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82E4D37A95 for ; Thu, 21 Apr 2022 11:36:40 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id n126-20020a1c2784000000b0038e8af3e788so3998222wmn.1 for ; Thu, 21 Apr 2022 11:36:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eBZ0gns+yMZj+MFoorlPBtWgymE4bmRlinap/Si4gaI=; b=ZKqOsq5HZDOkyvwDAGnzCTnpSW70ubkuHrACFIQM0j1uQvMzdlYker0TcE7GLqplU8 vDr/PedoK5abNnEMKYBwHHJ+PO3uLZPmuFyRFqJKMIlGlUXgaQdYxLt1pWL+4T7eXG4k s8NCghi86iAbpS3299jOMq86lt5myVCXRk53UDFIksPqrSjmlZXihsRI5TtM2/N0+wtW XAtFPgiyrPmeB6Uf6+QkDEikSbgaP5Ip9EeikaqvapviHfKTkE3MoLDUmcexFFqJHsUB VvCxriDLP/g1Oicmyu3BD0v6uJINO+cySvNs7mOPU4rCMHhnaEGgn4KKYx3P+qvV3gea kg8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eBZ0gns+yMZj+MFoorlPBtWgymE4bmRlinap/Si4gaI=; b=LRBH13WFvZRfMQKcoPJMOcaMsQOmabd+JmZahYnRSwNZrb9zHnLmKxmbJpp532O+DB HBJdJUxXpEtL8cW/vR1n34ETP2Zr7S8O/RN3nz42uzm4ycuxz4Bxlh0edfktMsJ9ymew ffUo3tswAZuXsTIzrf8n2UxkQToGzUBcO6h9xbviPOgT3rCXf84b0S3mlK9Uxu6CWaAM t8U8gf4gRVXzUAM9smhEHe22zXRQGXdaWOhMGhs9GbweKNOjTm6rU2a0naFGZzkSv19s s2eu1QURS8YVGj1KHv6Ad+xY4yUOJUAyYVwqOq0tEbgBwrc+MXBqd5LhO3QRirKX5WiO lo1A== X-Gm-Message-State: AOAM531Swwat4BkxFQg1QFLYKnLqWez3LQgve1HsGNIOIEQyoSWrb7VO aez+CXsNTrJP8cY3Nn7CqgoaROOJJiYL0g== X-Google-Smtp-Source: ABdhPJw4zXHEfovoGqGyYt95Xk9mnLGSw5kKI0rtRikaDVJhgpwKi6/4QzNL8R0XFhPpB2HEPfG6QA== X-Received: by 2002:a05:600c:154b:b0:38f:f7f4:8139 with SMTP id f11-20020a05600c154b00b0038ff7f48139mr653097wmg.60.1650566198890; Thu, 21 Apr 2022 11:36:38 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:38 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , =?utf-8?b?w4Z2YXIgQXJuZmrDtnI=?= =?utf-8?b?w7AgQmphcm1hc29u?= Subject: [RFC PATCH v5 01/10] CI: don't "cd" in ci/print-test-failures.sh Date: Thu, 21 Apr 2022 20:36:25 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the logic in ci/print-test-failures.sh so that we don't need to "cd" at the top-level, we'll now only do so for the "tar" command. This way we can remove some duplicate code added in aea8879a6ac (travis-ci: include the trash directories of failed tests in the trace log, 2018-08-01), i.e. not have both a $TEST_NAME and $test_name. The output is exactly the same as before, i.e. "test-results/" was included in the heading. Signed-off-by: Ævar Arnfjörð Bjarmason --- ci/print-test-failures.sh | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index ec395c79ccd..f6736f424e0 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -8,33 +8,36 @@ set -e . ${0%/*}/lib-ci-type.sh . ${0%/*}/lib-tput.sh -cd t/ - -if ! ls test-results/*.exit >/dev/null 2>/dev/null +if ! ls t/test-results/*.exit >/dev/null 2>/dev/null then echo "Build job failed before the tests could have been run" exit fi -for TEST_EXIT in test-results/*.exit +for TEST_EXIT in t/test-results/*.exit do if [ "$(cat "$TEST_EXIT")" != "0" ] then - TEST_OUT="${TEST_EXIT%exit}out" + TEST_NAME="${TEST_EXIT%.exit}" + TEST_NAME="${TEST_NAME##*/}" + TEST_OUT="${TEST_NAME}.out" + TEST_MARKUP="${TEST_NAME}.markup" + echo "------------------------------------------------------------------------" - echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)" + echo "$(tput setaf 1)test-results/${TEST_OUT}...$(tput sgr0)" echo "------------------------------------------------------------------------" - cat "${TEST_OUT}" + cat "t/test-results/${TEST_OUT}" - test_name="${TEST_EXIT%.exit}" - test_name="${test_name##*/}" - trash_dir="trash directory.$test_name" + trash_dir="trash directory.$TEST_NAME" case "$CI_TYPE" in github-actions) - mkdir -p failed-test-artifacts + mkdir -p t/failed-test-artifacts echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV - cp "${TEST_EXIT%.exit}.out" failed-test-artifacts/ - tar czf failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir" + cp "t/test-results/${TEST_OUT}" t/failed-test-artifacts/ + ( + cd t && + tar czf failed-test-artifacts/"$TEST_NAME".trash.tar.gz "$trash_dir" + ) ;; esac fi From patchwork Thu Apr 21 18:36:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822223 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2ABCC433EF for ; Thu, 21 Apr 2022 18:36:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391421AbiDUSje (ORCPT ); Thu, 21 Apr 2022 14:39:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391408AbiDUSjb (ORCPT ); Thu, 21 Apr 2022 14:39:31 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AC3B3818D for ; Thu, 21 Apr 2022 11:36:41 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id v12so1081568wrv.10 for ; Thu, 21 Apr 2022 11:36:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=j9Vq0HkJ2RRvZSQV89fC6AYlCIJhMdzcRGujQSX+4J0=; b=AtagkKebqdCdpTBQRyakrRgm9C4+Wag43OUM3HHuOF68axzqHcncPWC7ddY1ymd4Iv YgRC8vGsWJ+I4Z8aodWO6wO/+vdm77V97UGNO+Tj7RZfxxWs4e5oVmJvq2FklbvadsaK vRuqcXEUmzosIzlshALOFk7v3HF5jISythyM5xo1P5HWSIdW3zwk4iA/zlg6cAX/9FK0 cr0LFUeiAlGr6JfMhydS7v13zMsvNEMqjRgU6mYdezhaEcT87deHmuf9MkcqbbRO1n/A LLUQP/BZmNcZwze3hi584YMCrk58KW1i02zSOEOFRrIbduag0+WCAKPTK+1I8r5+WuM4 l6sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=j9Vq0HkJ2RRvZSQV89fC6AYlCIJhMdzcRGujQSX+4J0=; b=I2sP5bhnKsActe4dBvdWJQ4k15ai5RtIavV8T7MZ6cVAKYUh+J5FEVPfwGN2e/w6JU 8J25cbJuiOA8yjO+5YOQwIcZRfBkS7aihBdvKYFKsepGBOJz/jp3llSpKHqJcrYqpxXc aNjWYqicilYn4mi/z0xjcZk3Kz5lcNbjZYhEZsW5gSZ0dzuZNwWrL+Pzct/oBoIliVrY LWHZhFH64zIlTmfwrNbmmjdTIaMum34g9zg2sSmPxLYZV5oEMcqZIbwQbCrVvHnHPeYs hja6Oo1m0mqESSdkOLvA+caPOg3vu6AwTM3ZI6+XN6yqhVT6HBUT3Uvx4303/XGN2YE8 O52A== X-Gm-Message-State: AOAM530AGk5a0H9mTivy673GoQNHyI5871vIxwlmVt3o7RvnnK/w3ZKL qtHWL0IZRTyVVtKAOeTH/GWpHFeDouJ9rw== X-Google-Smtp-Source: ABdhPJwdJjAgxZD+//2GGKiKE7sepDzoCbGFf82mgSh6FDxkdHGrdvx/x0cdSQO2k2gkVIDJAbmW6g== X-Received: by 2002:adf:f088:0:b0:20a:8709:d381 with SMTP id n8-20020adff088000000b0020a8709d381mr746464wro.303.1650566199769; Thu, 21 Apr 2022 11:36:39 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:39 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , =?utf-8?b?w4Z2YXIgQXJuZmrDtnI=?= =?utf-8?b?w7AgQmphcm1hc29u?= Subject: [RFC PATCH v5 02/10] CI: add --exit-code to ci/print-test-failures.sh Date: Thu, 21 Apr 2022 20:36:26 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The ci/print-test-failures.sh scripts will exit 0 when there's failed tests, let's teach it --exit-code to have it exit non-zero in those cases. Signed-off-by: Ævar Arnfjörð Bjarmason --- ci/print-test-failures.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index f6736f424e0..d00cd0e4944 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -8,16 +8,33 @@ set -e . ${0%/*}/lib-ci-type.sh . ${0%/*}/lib-tput.sh +exit_code= +while test $# != 0 +do + case "$1" in + --exit-code) + exit_code=t + ;; + *) + echo "BUG: invalid $0 argument: $1" >&2 + exit 1 + ;; + esac + shift +done + if ! ls t/test-results/*.exit >/dev/null 2>/dev/null then echo "Build job failed before the tests could have been run" exit fi +failed= for TEST_EXIT in t/test-results/*.exit do if [ "$(cat "$TEST_EXIT")" != "0" ] then + failed=t TEST_NAME="${TEST_EXIT%.exit}" TEST_NAME="${TEST_NAME##*/}" TEST_OUT="${TEST_NAME}.out" @@ -42,3 +59,11 @@ do esac fi done + +if test -n "$failed" +then + if test -n "$exit_code" + then + exit 1 + fi +fi From patchwork Thu Apr 21 18:36:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822225 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC474C433F5 for ; Thu, 21 Apr 2022 18:36:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391430AbiDUSjh (ORCPT ); Thu, 21 Apr 2022 14:39:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391417AbiDUSjc (ORCPT ); Thu, 21 Apr 2022 14:39:32 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 551B23915C for ; Thu, 21 Apr 2022 11:36:42 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id p189so3724041wmp.3 for ; Thu, 21 Apr 2022 11:36:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vYWESYHne+pdVldbGBz6F4rStUl2M3wv76bqGMzu4zQ=; b=oWFxBrSBVAja0iGDT2TWUb+u0RKg/21/Pdo1PA3etG6lUSYAzqSBH4bBA/Bk6+a+zv TQcfhMCfZcE4DruUuytgoKHxbSiSfaMBbl78ksNhqf+NddhUl7Uez9RjaZ5P/ySB61PV APaQQ1MT7HrzzixaAT0t+ei36no2LS15jBHYWNfzrMWiAB4TViw/AM+7REhYck/osWl3 ARKYmByM+lHnE5BnBQkvNltMoPPgbOW3VINVTqGYJZ2FCpmhffZIewZ5aG4hC1KqxkA4 zzAwHcz+To4wjBM7+RvuSYkL+4gQc5PXzW1lTB14uQyZqyUbUpHwm6xRaUJYBUGcTCq+ KaNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vYWESYHne+pdVldbGBz6F4rStUl2M3wv76bqGMzu4zQ=; b=XNHGjULjx/VggxGa5QXVqZxjLP7i640iuwkPX2rwDZapNd83W0Ta+tqCmONgLu8iw0 pDZTBcKGlOCap2pPl0VivyhiGxcdKYYuRckG8Iin4NIa9txrqqBRblWsEaeyLYmcMZ2e Wjf2wTqRpTvuZ8Pg0rkOf4vquLl46IDq7YnODtgTfsJBCQd+KxjTDUX7eDOwy2/AqN6a ahi87+3ECrKfK37erHopjSuPf6lTq4OMmdziFIqrIS0aPQNGZmNSzKp5SgJfHTufyDlq si5YhFFX46rxuvr4jj4T6RrCCJjqoU+Qt1TX/hB9DZ+dYyEVlayT9Bt4y/dlNALg4Ipu xayw== X-Gm-Message-State: AOAM530NBzUAYuILtYFdlBd5XaUERHB9O5p/FFe12aXVjZZZYcKZajXx FjN6jVv7af6ANC7jW+QRdSMm195Ux2lWBg== X-Google-Smtp-Source: ABdhPJwdCSyRRyDxGicZ8m6tY2Qi66604W1RUpeMENvEFNEf2bu8zI09Su1oyPWq0NJVQ6GZFDmyRg== X-Received: by 2002:a05:600c:354c:b0:38f:20d9:4f12 with SMTP id i12-20020a05600c354c00b0038f20d94f12mr661430wmq.24.1650566200700; Thu, 21 Apr 2022 11:36:40 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:40 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , =?utf-8?b?w4Z2YXIgQXJuZmrDtnI=?= =?utf-8?b?w7AgQmphcm1hc29u?= Subject: [RFC PATCH v5 03/10] CI: don't include "test-results/" in ci/print-test-failures.sh output Date: Thu, 21 Apr 2022 20:36:27 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the ci/print-test-failures.sh output introduced in 657343a602e (travis-ci: move Travis CI code into dedicated scripts, 2017-09-10) to stop including "test-results/" in the heading, it was more of an artifact of how the iteration was being done in that initial version than anything else. Signed-off-by: Ævar Arnfjörð Bjarmason --- ci/print-test-failures.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index d00cd0e4944..23324021f13 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -41,7 +41,7 @@ do TEST_MARKUP="${TEST_NAME}.markup" echo "------------------------------------------------------------------------" - echo "$(tput setaf 1)test-results/${TEST_OUT}...$(tput sgr0)" + echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)" echo "------------------------------------------------------------------------" cat "t/test-results/${TEST_OUT}" From patchwork Thu Apr 21 18:36:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822226 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C66AAC433F5 for ; Thu, 21 Apr 2022 18:36:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391432AbiDUSjk (ORCPT ); Thu, 21 Apr 2022 14:39:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391413AbiDUSjd (ORCPT ); Thu, 21 Apr 2022 14:39:33 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34B61DFAE for ; Thu, 21 Apr 2022 11:36:43 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id 17-20020a05600c021100b00393a19f8f98so979151wmi.4 for ; Thu, 21 Apr 2022 11:36:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gerUcm0RQ7FKi3rPBSNYEkF1iOo7Dtn1rz8L3WP1hjk=; b=GYjdlhdqkFSf581tPiwQ7mgOuXcFjq14jTSgJWkcNH8IP3ZfFNLH8ijioYVRi/j4iA ijQJeMnMuHvlf60RS1zKp6VuwydNXD8KBx/fe4GF2Li5xOpF/LiczOFZWqF31VXrSxXy tM6cm8Loc5GeLM6LVCMu+2ueKHrFPPapTc8ZNOlwwrBuoBJ9Dy1B24jNrPUvMJbXXxm1 HHg7twu3bgL6tSlKmAAWvDIZRytFKpKYsILAc5qEcbTaHB04EWjdbP3cBTTT6PB/TQhB T+NWamb4P8SZ9z2FyaeZl+YoQZr8E7/xG+6STqiDGktKHY8f9ASte3239O02neKt8tXA TMQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gerUcm0RQ7FKi3rPBSNYEkF1iOo7Dtn1rz8L3WP1hjk=; b=DUuFp8219vAx7AyNXha436O058mVCwk55yKTk12jzUNCvA20Bf6VRgV8+jSxaQSPUy OZ0saAKv0PbFZNCA2SGhms8FUBZqFQLjre4+fl5I4xWip4khMAPiQ/SfWyb9rSspp2uB BDHbSt2C9+gTxPa1UQxCY0NY2ba1ht8BpDPQdeAmHXp/UgTR4RIHcAYZCAD7A4VqOhA5 zShU+HbsFhJdCoHXCWEPkCx6VvD0KFS2uiOzf2QUihspx3i4kyOc8ECYtXMdtAQL7f8I 3GzfwSf/tCL18hQoGlkoMcB/TEJHii30ggexEhREWNwF8+g+N/WfNcghJzJ6TpPdqSgx Pn2g== X-Gm-Message-State: AOAM533+SSXdkE5ue+hCPepE9jC+K5oO7HUIXbAWkzjb3v93naKdPk5K HJLk89iMTKcAXYhsW6ocwFyOQ4pEGpnllQ== X-Google-Smtp-Source: ABdhPJxRZ/RQCFuHcIIPiqvjgWnsCFkmIxfCbiHlg65LUQ5HG6QtQq/gGINYWOsqWpTiASEPWsTODA== X-Received: by 2002:a05:600c:34c4:b0:38e:b628:da95 with SMTP id d4-20020a05600c34c400b0038eb628da95mr641074wmq.150.1650566201559; Thu, 21 Apr 2022 11:36:41 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:41 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , =?utf-8?b?w4Z2YXIgQXJuZmrDtnI=?= =?utf-8?b?w7AgQmphcm1hc29u?= Subject: [RFC PATCH v5 04/10] CI: stop setting FAILED_TEST_ARTIFACTS N times Date: Thu, 21 Apr 2022 20:36:28 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The FAILED_TEST_ARTIFACTS variable introduced in f72f328bc57 (ci: let GitHub Actions upload failed tests' directories, 2020-04-11) is only used once in the main.yml, there is no need to set it N times if we have N failing tests. See also 92bf1b60673 (ci: avoid `set-env` construct in print-test-failures.sh, 2020-11-17) which moved it to using $GITHUB_ENV, we'll now check if it's set like ci/lib.sh, this makes it easier to test this script locally. Signed-off-by: Ævar Arnfjörð Bjarmason --- ci/print-test-failures.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index 23324021f13..27df5081f8b 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -49,7 +49,6 @@ do case "$CI_TYPE" in github-actions) mkdir -p t/failed-test-artifacts - echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV cp "t/test-results/${TEST_OUT}" t/failed-test-artifacts/ ( cd t && @@ -62,6 +61,11 @@ done if test -n "$failed" then + if test -n "$GITHUB_ENV" + then + echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV + fi + if test -n "$exit_code" then exit 1 From patchwork Thu Apr 21 18:36:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822227 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10EBFC433F5 for ; Thu, 21 Apr 2022 18:36:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391428AbiDUSjq (ORCPT ); Thu, 21 Apr 2022 14:39:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391422AbiDUSjf (ORCPT ); Thu, 21 Apr 2022 14:39:35 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 664BDDFAE for ; Thu, 21 Apr 2022 11:36:44 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id p189so3724086wmp.3 for ; Thu, 21 Apr 2022 11:36:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1mP6wvTLf/dgvkcckh+5f84TeImwWu+K3byxCceeAyU=; b=OzK4ldPc+O+nlTb7ANrKv5/zc53KHecoDyInZN0WaMb+mAZycBm5lV7eyvw7xot5gm ZgPcJcchMjnprqM3Dw1pjRn19ufugFZ4z4E8q/sBWWbfP7JO0oBnnOHUL/9acO1xodfc gHxQmE6m+zMvFVasZlLWa7LMLNF5w7wnmbhI6yrskfi7qiH2jIXMUWwzA8MnKHyTrFdq NR6pFmSb/GJsfjMJGp0qAH7ZvmupmqRAIqZzO3M26zjySi1G4ztxUGf8LR/A2cbNAVU9 6Zyq7oshtghk9JbAnK1OFQnSkEwst4Kj6VFpjhwj3aLGGHkYM/iHdX28jRCIb6bNzT7H qZ+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1mP6wvTLf/dgvkcckh+5f84TeImwWu+K3byxCceeAyU=; b=YbGsv6JLGsM3QCC7s1yMQXh5tPvZoHEfy5hqykWSxbS5gOfdylV2iEoPGzlWa4x/U1 Pk2esr03/6wa1itXZrzPT1MI6PlC2N082TSP1QFbPExcM6Hx7VlLEiuCeV41FL9YI+Gt uI2etQHnyY411qpYrsqNIh/5nDFv7O8MaTTaf9zz3gdJgdVH/tfGaj6Zae/jBwkIrYNH a9P65k6eijkv/0J8iMFkBNLGRHqxOTacFYdswdvQ5Uzk5pw2lQa9RqO+F+W4/c8n+6sj c0gbjpBusMtKfagcXdR7C54HMGvepJiYddIBBEiTSNqGrk4Gtl/qOrfpkeXIRrWVwFUe pGaw== X-Gm-Message-State: AOAM532dcU5we58122EcFXQ6obVPcB+daR6CRVEEfLyaDryPB27lOFzF 2UOD+dVhdZQpz385l+6ZEaMRlr9fOECEMw== X-Google-Smtp-Source: ABdhPJz1V1AY29iuoMuprscDKcPv6/DetlnDyfim1NcQ7pimLo+ZVevA4aJgpw+HWf94EcLNFa8A5A== X-Received: by 2002:a05:600c:1c89:b0:38e:d1a6:bf7a with SMTP id k9-20020a05600c1c8900b0038ed1a6bf7amr10017563wms.204.1650566202583; Thu, 21 Apr 2022 11:36:42 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:42 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , Johannes Schindelin , =?utf-8?b?w4Z2YXIgQXJu?= =?utf-8?b?ZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC PATCH v5 05/10] ci: make it easier to find failed tests' logs in the GitHub workflow Date: Thu, 21 Apr 2022 20:36:29 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin When investigating a test failure, the time that matters most is the time it takes from getting aware of the failure to displaying the output of the failing test case. You currently have to know a lot of implementation details when investigating test failures in the CI runs. The first step is easy: the failed job is marked quite clearly, but when opening it, the failed step is expanded, which in our case is the one running `ci/run-build-and-tests.sh`. This step, most notably, only offers a high-level view of what went wrong: it prints the output of `prove` which merely tells the reader which test script failed. The actually interesting part is in the detailed log of said failed test script. But that log is shown in the CI run's step that runs `ci/print-test-failures.sh`. And that step is _not_ expanded in the web UI by default. It is even marked as "successful", which makes it very easy to miss that there is useful information hidden in there. Let's help the reader by showing the failed tests' detailed logs in the step that is expanded automatically, i.e. directly after the test suite failed. This also helps the situation where the _build_ failed and the `print-test-failures` step was executed under the assumption that the _test suite_ failed, and consequently failed to find any failed tests. An alternative way to implement this patch would be to source `ci/print-test-failures.sh` in the `handle_test_failures` function to show these logs. However, over the course of the next few commits, we want to introduce some grouping which would be harder to achieve that way (for example, we do want a leaner, and colored, preamble for each failed test script, and it would be trickier to accommodate the lack of nested groupings in GitHub workflows' output). Signed-off-by: Johannes Schindelin Signed-off-by: Ævar Arnfjörð Bjarmason --- .github/workflows/main.yml | 20 ++++---------------- ci/print-test-failures.sh | 32 ++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6835e942280..aa31c78d4c2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -129,11 +129,7 @@ jobs: shell: bash - name: test shell: bash - run: . /etc/profile && make -C t -e - - name: ci/print-test-failures.sh - if: failure() - shell: bash - run: ci/print-test-failures.sh + run: . /etc/profile && make -C t -e || ci/print-test-failures.sh - name: Upload failed tests' directories if: failure() && env.FAILED_TEST_ARTIFACTS != '' uses: actions/upload-artifact@v2 @@ -218,11 +214,7 @@ jobs: shell: bash - name: test shell: bash - run: . /etc/profile && make -C t -e - - name: ci/print-test-failures.sh - if: failure() - shell: bash - run: ci/print-test-failures.sh + run: . /etc/profile && make -C t -e || ci/print-test-failures-github.sh - name: Upload failed tests' directories if: failure() && env.FAILED_TEST_ARTIFACTS != '' uses: actions/upload-artifact@v2 @@ -265,10 +257,8 @@ jobs: - run: ci/lib.sh --build - run: make - run: ci/lib.sh --test - - run: make test + - run: make test || ci/print-test-failures-github.sh if: success() - - run: ci/print-test-failures.sh - if: failure() - name: Upload failed tests' directories if: failure() && env.FAILED_TEST_ARTIFACTS != '' uses: actions/upload-artifact@v2 @@ -302,10 +292,8 @@ jobs: - run: make - run: ci/lib.sh --test if: success() && matrix.vector.skip-tests != 'yes' - - run: make test + - run: make test || ci/print-test-failures-github.sh if: success() && matrix.vector.skip-tests != 'yes' - - run: ci/print-test-failures.sh - if: failure() && matrix.vector.skip-tests != 'yes' - name: Upload failed tests' directories if: failure() && env.FAILED_TEST_ARTIFACTS != '' uses: actions/upload-artifact@v1 diff --git a/ci/print-test-failures.sh b/ci/print-test-failures.sh index 27df5081f8b..814c7799b68 100755 --- a/ci/print-test-failures.sh +++ b/ci/print-test-failures.sh @@ -8,13 +8,32 @@ set -e . ${0%/*}/lib-ci-type.sh . ${0%/*}/lib-tput.sh -exit_code= +case "$CI_TYPE" in +github-actions) + exit_code=t + github_workflow_markup=t + ;; +*) + exit_code= + github_workflow_markup= + ;; +esac + while test $# != 0 do case "$1" in --exit-code) exit_code=t ;; + --no-exit-code) + exit_code= + ;; + --github-workflow-markup) + github_workflow_markup=t + ;; + --no-github-workflow-markup) + github_workflow_markup= + ;; *) echo "BUG: invalid $0 argument: $1" >&2 exit 1 @@ -40,9 +59,14 @@ do TEST_OUT="${TEST_NAME}.out" TEST_MARKUP="${TEST_NAME}.markup" - echo "------------------------------------------------------------------------" - echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)" - echo "------------------------------------------------------------------------" + if test -n "$github_workflow_markup" + then + printf "\\e[33m\\e[1m=== Failed test: ${TEST_NAME} ===\\e[m\\n" + else + echo "------------------------------------------------------------------------" + echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)" + echo "------------------------------------------------------------------------" + fi cat "t/test-results/${TEST_OUT}" trash_dir="trash directory.$TEST_NAME" From patchwork Thu Apr 21 18:36:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822228 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78A1EC433EF for ; Thu, 21 Apr 2022 18:37:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391438AbiDUSjs (ORCPT ); Thu, 21 Apr 2022 14:39:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391404AbiDUSjg (ORCPT ); Thu, 21 Apr 2022 14:39:36 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AC2D369EA for ; Thu, 21 Apr 2022 11:36:45 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id r19so3740841wmq.0 for ; Thu, 21 Apr 2022 11:36:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/akV5laecUMWXePWy6o+rckEaEcm2RYsKIUmvYcaIqE=; b=VNA+QnOKGPw6tEjBmYa013Yqmi1t/Sn9iDFl2Qnh/X+A0GDOSNdJ8y3w5ILuU6oYv3 OM3YjjlzetpddtJkIkKVoAZ8bYxU5EvlPMwnQr4kDr4+4Jv3aZtorqne0P3QYvUtQvAC MOVa2t9FpTebPFyrpKKqkc4bShmt5Rev5LIHcmTsm022hdUybiU3IfGPG70EMLiy8DFO mx+PKxUkGfzdkdyd80Lp6tg1ZmMdNuY0JKxS97FBO7yl3gS3hiEN/gYsWCHzU7azQfDO f9EUGTME49Syhu9vDUvELv5UmqKzn+La3yRwOGEJKA0k8ipjMyiQS8bsPUV8RqFxJcQ6 VVtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/akV5laecUMWXePWy6o+rckEaEcm2RYsKIUmvYcaIqE=; b=UKs9/HUNY4ssFLYsvbElhsyFl/KvsSjUvREsEdcHRt8XX8Qyti3zZHcfUFc0fBd5BG 615ATPhdQh5H1WsD+e1pQDzszcoIsOtYdurtHNWQNhavsml3m3H4zy8b1HlPz1tsWYoU J10NJf++eOsoRIZHUseiOOsa6DZKlVGhxHsCUCsVyzGtwizJgpX7mhhnDyATezzoiQx5 9iQ+HtE2dMjDFg5lKh6x2EYKk3KalYZHhPhDGtlafabFG1/o/Z/ZyjBXaWvhaCUVf975 +eikJd4ByMYoxQh3hf6ipfDL0nLzlM0QY10ZZqFEAkwVF6ldVT1SGvl8zT9j0W9QN1+j z70A== X-Gm-Message-State: AOAM532K5WOdN2EqiTpe6djdVUEMQBgmcrZs6rEcsaczgv4ve+10O1rm n1fn9m6OxhzSCCuozsS6P8cj1gAdhfYR4g== X-Google-Smtp-Source: ABdhPJxCw8CewUiuK2QQpdygZhL1e5T6VW8Y7wbgq/kr1hytVL32+hS8iv9gknG85dbTjszmc4l2hg== X-Received: by 2002:a05:600c:3b25:b0:38e:c5f9:8f01 with SMTP id m37-20020a05600c3b2500b0038ec5f98f01mr10046020wms.175.1650566203722; Thu, 21 Apr 2022 11:36:43 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:43 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , Johannes Schindelin , =?utf-8?b?w4Z2YXIgQXJu?= =?utf-8?b?ZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC PATCH v5 06/10] tests: refactor --write-junit-xml code Date: Thu, 21 Apr 2022 20:36:30 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin The code writing JUnit XML is interspersed directly with all the code in `t/test-lib.sh`, and it is therefore not only ill-separated, but introducing yet another output format would make the situation even worse. Let's introduce an abstraction layer by hiding the JUnit XML code behind four new functions that are supposed to be called before and after each test and test case. This is not just an academic exercise, refactoring for refactoring's sake. We _actually_ want to introduce such a new output format, to make it substantially easier to diagnose test failures in our GitHub workflow, therefore we do need this refactoring. This commit is best viewed with `git show --color-moved --color-moved-ws=allow-indentation-change `. Signed-off-by: Johannes Schindelin Signed-off-by: Ævar Arnfjörð Bjarmason --- t/test-lib-junit.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++ t/test-lib.sh | 124 ++++++------------------------------------- 2 files changed, 142 insertions(+), 108 deletions(-) create mode 100644 t/test-lib-junit.sh diff --git a/t/test-lib-junit.sh b/t/test-lib-junit.sh new file mode 100644 index 00000000000..9d55d74d764 --- /dev/null +++ b/t/test-lib-junit.sh @@ -0,0 +1,126 @@ +# Library of functions to format test scripts' output in JUnit XML +# format, to support Git's test suite result to be presented in an +# easily digestible way on Azure Pipelines. +# +# Copyright (c) 2022 Johannes Schindelin +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/ . +# +# The idea is for `test-lib.sh` to source this file when the user asks +# for JUnit XML; these functions will then override (empty) functions +# that are are called at the appropriate times during the test runs. + +start_test_output () { + junit_xml_dir="$TEST_OUTPUT_DIRECTORY/out" + mkdir -p "$junit_xml_dir" + junit_xml_base=${1##*/} + junit_xml_path="$junit_xml_dir/TEST-${junit_xml_base%.sh}.xml" + junit_attrs="name=\"${junit_xml_base%.sh}\"" + junit_attrs="$junit_attrs timestamp=\"$(TZ=UTC \ + date +%Y-%m-%dT%H:%M:%S)\"" + write_junit_xml --truncate "" " " + junit_suite_start=$(test-tool date getnanos) + if test -n "$GIT_TEST_TEE_OUTPUT_FILE" + then + GIT_TEST_TEE_OFFSET=0 + fi +} + +start_test_case_output () { + junit_start=$(test-tool date getnanos) +} + +finalize_test_case_output () { + test_case_result=$1 + shift + case "$test_case_result" in + ok) + set "$*" + ;; + failure) + junit_insert="" + junit_insert="$junit_insert $(xml_attr_encode \ + "$(if test -n "$GIT_TEST_TEE_OUTPUT_FILE" + then + test-tool path-utils skip-n-bytes \ + "$GIT_TEST_TEE_OUTPUT_FILE" $GIT_TEST_TEE_OFFSET + else + printf '%s\n' "$@" | sed 1d + fi)")" + junit_insert="$junit_insert" + if test -n "$GIT_TEST_TEE_OUTPUT_FILE" + then + junit_insert="$junit_insert$(xml_attr_encode \ + "$(cat "$GIT_TEST_TEE_OUTPUT_FILE")")" + fi + set "$1" " $junit_insert" + ;; + fixed) + set "$* (breakage fixed)" + ;; + broken) + set "$* (known breakage)" + ;; + skip) + message="$(xml_attr_encode "$skipped_reason")" + set "$1" " " + ;; + esac + + junit_attrs="name=\"$(xml_attr_encode "$this_test.$test_count $1")\"" + shift + junit_attrs="$junit_attrs classname=\"$this_test\"" + junit_attrs="$junit_attrs time=\"$(test-tool \ + date getnanos $junit_start)\"" + write_junit_xml "$(printf '%s\n' \ + " " "$@" " ")" + junit_have_testcase=t +} + +finalize_test_output () { + if test -n "$junit_xml_path" + then + test -n "$junit_have_testcase" || { + junit_start=$(test-tool date getnanos) + write_junit_xml_testcase "all tests skipped" + } + + # adjust the overall time + junit_time=$(test-tool date getnanos $junit_suite_start) + sed -e "s/\(]*/& time=\"$junit_time\"/" \ + -e '/^ *<\/testsuite/d' \ + <"$junit_xml_path" >"$junit_xml_path.new" + mv "$junit_xml_path.new" "$junit_xml_path" + + write_junit_xml " " "" + write_junit_xml= + fi +} + +write_junit_xml () { + case "$1" in + --truncate) + >"$junit_xml_path" + junit_have_testcase= + shift + ;; + esac + printf '%s\n' "$@" >>"$junit_xml_path" +} + +xml_attr_encode () { + printf '%s\n' "$@" | test-tool xml-encode +} diff --git a/t/test-lib.sh b/t/test-lib.sh index 531cef097db..62a57b00730 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -137,6 +137,12 @@ mark_option_requires_arg () { store_arg_to=$2 } +# These functions can be overridden e.g. to output JUnit XML +start_test_output () { :; } +start_test_case_output () { :; } +finalize_test_case_output () { :; } +finalize_test_output () { :; } + parse_option () { local opt="$1" @@ -196,7 +202,7 @@ parse_option () { tee=t ;; --write-junit-xml) - write_junit_xml=t + . "$TEST_DIRECTORY/test-lib-junit.sh" ;; --stress) stress=t ;; @@ -663,7 +669,7 @@ exec 6<&0 exec 7>&2 _error_exit () { - finalize_junit_xml + finalize_test_output GIT_EXIT_OK=t exit 1 } @@ -773,35 +779,13 @@ trap '{ code=$?; set +x; } 2>/dev/null; exit $code' INT TERM HUP # the test_expect_* functions instead. test_ok_ () { - if test -n "$write_junit_xml" - then - write_junit_xml_testcase "$*" - fi + finalize_test_case_output ok "$@" test_success=$(($test_success + 1)) say_color "" "ok $test_count - $@" } test_failure_ () { - if test -n "$write_junit_xml" - then - junit_insert="" - junit_insert="$junit_insert $(xml_attr_encode \ - "$(if test -n "$GIT_TEST_TEE_OUTPUT_FILE" - then - test-tool path-utils skip-n-bytes \ - "$GIT_TEST_TEE_OUTPUT_FILE" $GIT_TEST_TEE_OFFSET - else - printf '%s\n' "$@" | sed 1d - fi)")" - junit_insert="$junit_insert" - if test -n "$GIT_TEST_TEE_OUTPUT_FILE" - then - junit_insert="$junit_insert$(xml_attr_encode \ - "$(cat "$GIT_TEST_TEE_OUTPUT_FILE")")" - fi - write_junit_xml_testcase "$1" " $junit_insert" - fi + finalize_test_case_output failure "$@" test_failure=$(($test_failure + 1)) say_color error "not ok $test_count - $1" shift @@ -814,19 +798,13 @@ test_failure_ () { } test_known_broken_ok_ () { - if test -n "$write_junit_xml" - then - write_junit_xml_testcase "$* (breakage fixed)" - fi + finalize_test_case_output fixed "$@" test_fixed=$(($test_fixed+1)) say_color error "ok $test_count - $@ # TODO known breakage vanished" } test_known_broken_failure_ () { - if test -n "$write_junit_xml" - then - write_junit_xml_testcase "$* (known breakage)" - fi + finalize_test_case_output broken "$@" test_broken=$(($test_broken+1)) say_color warn "not ok $test_count - $@ # TODO known breakage" } @@ -1103,10 +1081,7 @@ test_start_ () { test_count=$(($test_count+1)) maybe_setup_verbose maybe_setup_valgrind - if test -n "$write_junit_xml" - then - junit_start=$(test-tool date getnanos) - fi + start_test_case_output } test_finish_ () { @@ -1157,12 +1132,7 @@ test_skip () { case "$to_skip" in t) - if test -n "$write_junit_xml" - then - message="$(xml_attr_encode "$skipped_reason")" - write_junit_xml_testcase "$1" \ - " " - fi + finalize_test_case_output skip "$@" say_color skip "ok $test_count # skip $1 ($skipped_reason)" : true @@ -1178,53 +1148,6 @@ test_at_end_hook_ () { : } -write_junit_xml () { - case "$1" in - --truncate) - >"$junit_xml_path" - junit_have_testcase= - shift - ;; - esac - printf '%s\n' "$@" >>"$junit_xml_path" -} - -xml_attr_encode () { - printf '%s\n' "$@" | test-tool xml-encode -} - -write_junit_xml_testcase () { - junit_attrs="name=\"$(xml_attr_encode "$this_test.$test_count $1")\"" - shift - junit_attrs="$junit_attrs classname=\"$this_test\"" - junit_attrs="$junit_attrs time=\"$(test-tool \ - date getnanos $junit_start)\"" - write_junit_xml "$(printf '%s\n' \ - " " "$@" " ")" - junit_have_testcase=t -} - -finalize_junit_xml () { - if test -n "$write_junit_xml" && test -n "$junit_xml_path" - then - test -n "$junit_have_testcase" || { - junit_start=$(test-tool date getnanos) - write_junit_xml_testcase "all tests skipped" - } - - # adjust the overall time - junit_time=$(test-tool date getnanos $junit_suite_start) - sed -e "s/\(]*/& time=\"$junit_time\"/" \ - -e '/^ *<\/testsuite/d' \ - <"$junit_xml_path" >"$junit_xml_path.new" - mv "$junit_xml_path.new" "$junit_xml_path" - - write_junit_xml " " "" - write_junit_xml= - fi -} - test_atexit_cleanup=: test_atexit_handler () { # In a succeeding test script 'test_atexit_handler' is invoked @@ -1247,7 +1170,7 @@ test_done () { # removed, so the commands can access pidfiles and socket files. test_atexit_handler - finalize_junit_xml + finalize_test_output if test -z "$HARNESS_ACTIVE" then @@ -1538,22 +1461,7 @@ fi # in subprocesses like git equals our $PWD (for pathname comparisons). cd -P "$TRASH_DIRECTORY" || exit 1 -if test -n "$write_junit_xml" -then - junit_xml_dir="$TEST_OUTPUT_DIRECTORY/out" - mkdir -p "$junit_xml_dir" - junit_xml_base=${0##*/} - junit_xml_path="$junit_xml_dir/TEST-${junit_xml_base%.sh}.xml" - junit_attrs="name=\"${junit_xml_base%.sh}\"" - junit_attrs="$junit_attrs timestamp=\"$(TZ=UTC \ - date +%Y-%m-%dT%H:%M:%S)\"" - write_junit_xml --truncate "" " " - junit_suite_start=$(test-tool date getnanos) - if test -n "$GIT_TEST_TEE_OUTPUT_FILE" - then - GIT_TEST_TEE_OFFSET=0 - fi -fi +start_test_output "$0" # Convenience # A regexp to match 5 and 35 hexdigits From patchwork Thu Apr 21 18:36:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822229 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A38B2C433FE for ; Thu, 21 Apr 2022 18:37:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391447AbiDUSjv (ORCPT ); Thu, 21 Apr 2022 14:39:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57184 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391427AbiDUSjg (ORCPT ); Thu, 21 Apr 2022 14:39:36 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5543740E4D for ; Thu, 21 Apr 2022 11:36:46 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id n126-20020a1c2784000000b0038e8af3e788so3998362wmn.1 for ; Thu, 21 Apr 2022 11:36:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yK9uyew9qG3uufy2qn6f0fd2yyugrvqcWJa91wwmldw=; b=EegFYy2NuOEjHZhKr3E3vkyv+L1j/ZK5ubowBa2U1c0Vzi8YNEMplQvDsUsycR578G 4kSbKryiiQisx+Hd4/P0W5kCHkOqwOjfdeF4YpmabSVfzGzt8FxYC5brN2cm3lS4Gpqa 2SWHgqr5NfWQhO3dIJpVyZGFTSRAKPCDcoDkPWayK10nfiJZXZwQxDF458s75ei9FX9I uGZQ2mjNLC/drXiOxuvVEeprkINv4hlbToifZjFhTnRNtpf1JcX3smTdzD/Ttj2Oxq80 Z1tiyyciL3rsT7jT7xGz/ave+lEcuWz2ZaPcb9IOrQY48MjBMCz5PZqs/eJ+AfT863lQ 04lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yK9uyew9qG3uufy2qn6f0fd2yyugrvqcWJa91wwmldw=; b=fWMn0VCeIE1XegYIH2AdOzi947MCWWL8lEoY4rWqzBEEbRqVNsgnti+MrFdql1ECdm nlWjs3pyJ+UjA7I9giZDMjt50cj3N3I1oxpWbeDxbL8kq2qL5DkCinVrNakal0F/kgG3 oC1RYSVw+bq/Qjg5RQF4rYN9r/NP9C1GXKH3+FkZic0RazkWtA8OBsHFB/L/pJDZ2r6h tZPCRLdYZ0zKS2cK67xNi8l9gORqrCf9LFl91NUFNpMtQyC/A6rZwD433ZVPfCOTBLnT ccxzfDVpTznCe1FK3GKcxKfxYFiWS15MX9XGkSRVX6znKR+SHKBGskWLu+gPKbYYE5+w XeIA== X-Gm-Message-State: AOAM531dvGldiwCfDJE752f6DexuWq8kvPRn5jMc/z5VCHFyPmRdljMu yEnuHQrY1j8ZfRDgHXvSFWmvWlz+PRfhcw== X-Google-Smtp-Source: ABdhPJzT50L2FoTidAadu2Tc73op8VQ3cEMh8YSMYSBkgYRctkGRj12SW8t3xTQRzbTyMb4p3HPheQ== X-Received: by 2002:a05:600c:4313:b0:38e:b150:2f8e with SMTP id p19-20020a05600c431300b0038eb1502f8emr9823351wme.198.1650566204720; Thu, 21 Apr 2022 11:36:44 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:44 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , Johannes Schindelin , =?utf-8?b?w4Z2YXIgQXJu?= =?utf-8?b?ZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC PATCH v5 07/10] test(junit): avoid line feeds in XML attributes Date: Thu, 21 Apr 2022 20:36:31 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin In the test case's output, we do want newline characters, but in the XML attributes we do not want them. However, the `xml_attr_encode` function always adds a Line Feed at the end (which are then encoded as ` `, even for XML attributes. This seems not to faze Azure Pipelines' XML parser, but it still is incorrect, so let's fix it. Signed-off-by: Johannes Schindelin Signed-off-by: Ævar Arnfjörð Bjarmason --- t/test-lib-junit.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/t/test-lib-junit.sh b/t/test-lib-junit.sh index 9d55d74d764..c959183c7e2 100644 --- a/t/test-lib-junit.sh +++ b/t/test-lib-junit.sh @@ -50,7 +50,7 @@ finalize_test_case_output () { ;; failure) junit_insert="" + junit_insert="$junit_insert $(xml_attr_encode --no-lf "$1")\">" junit_insert="$junit_insert $(xml_attr_encode \ "$(if test -n "$GIT_TEST_TEE_OUTPUT_FILE" then @@ -74,12 +74,12 @@ finalize_test_case_output () { set "$* (known breakage)" ;; skip) - message="$(xml_attr_encode "$skipped_reason")" + message="$(xml_attr_encode --no-lf "$skipped_reason")" set "$1" " " ;; esac - junit_attrs="name=\"$(xml_attr_encode "$this_test.$test_count $1")\"" + junit_attrs="name=\"$(xml_attr_encode --no-lf "$this_test.$test_count $1")\"" shift junit_attrs="$junit_attrs classname=\"$this_test\"" junit_attrs="$junit_attrs time=\"$(test-tool \ @@ -122,5 +122,11 @@ write_junit_xml () { } xml_attr_encode () { - printf '%s\n' "$@" | test-tool xml-encode + if test "x$1" = "x--no-lf" + then + shift + printf '%s' "$*" | test-tool xml-encode + else + printf '%s\n' "$@" | test-tool xml-encode + fi } From patchwork Thu Apr 21 18:36:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12822231 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 705A5C433EF for ; Thu, 21 Apr 2022 18:37:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391457AbiDUSjz (ORCPT ); Thu, 21 Apr 2022 14:39:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391435AbiDUSjp (ORCPT ); Thu, 21 Apr 2022 14:39:45 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ED1646647 for ; Thu, 21 Apr 2022 11:36:47 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id n126-20020a1c2784000000b0038e8af3e788so3998391wmn.1 for ; Thu, 21 Apr 2022 11:36:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=116d7ytGoq9b0TIy7dKF1i3fjm0pS7vGtm61ZH06IQs=; b=fIXfq8JoTU7BktwK8MPqD7CJlMvjA4BRg3tlge9bMkvfEUg0YatmB6tVyXf+9czg1G 0bWJeq4uOEJrhH+DqPOYK9yCcObx728UjXsiijDueWcu6ab4l3fnAt2QSbHETpX/9dNn Z7ovLBY9iOulVd9pYjGdEAFNPYgYI69o3S2LAtpEcU/PSN2IXGY8LzxjTYf+aU576kzQ ikP7btIz4OlqtO/USLpVJmQgUM7dw/RVvxggupMzIrzNAzxFtJCejXBX0MMdmG/r74Qx PwHYy6QMdqaHgT1psl7zWKSZwCNwHr8r0AbtYjlWlZCCl1zyLQwTppE4qrAaDJPtyeU1 kUHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=116d7ytGoq9b0TIy7dKF1i3fjm0pS7vGtm61ZH06IQs=; b=bB6jwzSvDc/ld2tyCiDofxXPWZ0pdWElHo2rO3rNikrgqXbxf+859Jyn/X7Cm918Tv n8GGDukjIsv50LiswU4i3FTm3jyNcn8WOpURwWYUVEwcLrXpLKif3HjIDAVO8PG00ILn XJDrFLqbGRGC7faJjdaDxIXpyxQnnUrjIXZhulcFrwjsjoQCh+8SY4FnD1G6ntYwmsFr PdcRn7VUcggakggX1WOwlBqELSMuv+m+k/hSja7XzvbfLPAcZhlzZvb18WMp4Y7mIVw0 8QJ5NTIlzLUN8aiMSYR0XaN8/S2mfDiT/iROt8ozjxoaHbwSyrXX4dlzJAm7jGpLNdoe lH7w== X-Gm-Message-State: AOAM531xCeUCg+vX1yUfBxQI1ts6m065KG3epyQGRJSrEoMTLrC4vCDy qwY+/TXiGdJXZmi31bmEfBQWsx8Amfp+ig== X-Google-Smtp-Source: ABdhPJz+rbHMoBcHikxB29Fs275UvkEpHuqBVJ62ydkQOUQXviHvFRaKaXgPwbrY3L7aaieqnUY0OA== X-Received: by 2002:a05:600c:4f4d:b0:392:9169:35c8 with SMTP id m13-20020a05600c4f4d00b00392916935c8mr9948961wmq.36.1650566205716; Thu, 21 Apr 2022 11:36:45 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id o40-20020a05600c512800b0038ebf2858cbsm3108624wms.16.2022.04.21.11.36.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 11:36:45 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Taylor Blau , =?utf-8?q?SZEDER_G=C3=A1bor?= , =?utf-8?b?xJBvw6Bu?= =?utf-8?b?IFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?q?Car?= =?utf-8?q?lo_Marcelo_Arenas_Bel=C3=B3n?= , Johannes Schindelin , Victoria Dye , Matheus Tavares , Lars Schneider , Johannes Schindelin , =?utf-8?b?w4Z2YXIgQXJu?= =?utf-8?b?ZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC PATCH v5 08/10] ci: optionally mark up output in the GitHub workflow Date: Thu, 21 Apr 2022 20:36:32 +0200 Message-Id: X-Mailer: git-send-email 2.36.0.879.g3659959fcca In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin 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::