From 20cc67d5f23a7f4e05b08012bf3d3a63be4bcf63 Mon Sep 17 00:00:00 2001 From: Vratko Polak Date: Fri, 15 Nov 2019 17:27:43 +0100 Subject: Improve test tag string parsing Instead of just adding the missing -clx, the new way aims to be forward compatible. The new implementation is quite permissive, ignoring all "word" chars sticking to the trigger word and returning everything after that and space up to the endline. + Unified perftest and devicetest handling. + Consequently, triggers like "devicetest-1n-skx GBP" will work now. Change-Id: I3bda6105195180d35a589a75318f569e36f03461 Signed-off-by: Vratko Polak --- resources/libraries/bash/function/common.sh | 33 +++++++++++------------------ 1 file changed, 12 insertions(+), 21 deletions(-) (limited to 'resources/libraries') diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index 89e1af1c79..1ef7c93da3 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -490,41 +490,32 @@ function get_test_tag_string () { # - TEST_CODE - The test selection string from environment or argument. # Variables set: # - TEST_TAG_STRING - The string following trigger word in gerrit comment. - # May be empty, not set on event types not adding comment. + # May be empty, or even not set on event types not adding comment. # TODO: ci-management scripts no longer need to perform this. set -exuo pipefail - trigger="" if [[ "${GERRIT_EVENT_TYPE-}" == "comment-added" ]]; then case "${TEST_CODE}" in *"device"*) - # On parsing error, ${trigger} stays empty. - trigger="$(echo "${GERRIT_EVENT_COMMENT_TEXT}" \ - | grep -oE '(devicetest$|devicetest[[:space:]].+$)' \ - || true)" - # Set test tags as string. - TEST_TAG_STRING="${trigger#$"devicetest"}" + trigger="devicetest" ;; *"perf"*) - # On parsing error, ${trigger} stays empty. - comment="${GERRIT_EVENT_COMMENT_TEXT}" - # As "perftest" can be followed by something, we substitute it. - comment="${comment/perftest-2n/perftest}" - comment="${comment/perftest-3n/perftest}" - comment="${comment/perftest-hsw/perftest}" - comment="${comment/perftest-skx/perftest}" - comment="${comment/perftest-dnv/perftest}" - comment="${comment/perftest-tsh/perftest}" - tag_string="$(echo "${comment}" \ - | grep -oE '(perftest$|perftest[[:space:]].+$)' || true)" - # Set test tags as string. - TEST_TAG_STRING="${tag_string#$"perftest"}" + trigger="perftest" ;; *) die "Unknown specification: ${TEST_CODE}" esac + # Ignore lines not containing the trigger word. + comment=$(fgrep "${trigger}" <<< "${GERRIT_EVENT_COMMENT_TEXT}") || true + # The vpp-csit triggers trail stuff we are not interested in. + # Removing them and trigger word: https://unix.stackexchange.com/a/13472 + # (except relying on \s whitespace, \S non-whitespace and . both). + # The last string is concatenated, only the middle part is expanded. + cmd=("grep" "-oP" '\S*'"${trigger}"'\S*\s\K.+$') || die "Unset trigger?" + # On parsing error, TEST_TAG_STRING probably stays empty. + TEST_TAG_STRING=$("${cmd[@]}" <<< "${comment}") || true fi } -- cgit 1.2.3-korg