From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Jones Subject: [PATCH kvm-unit-tests v3 2/9] arch-run: provide errata from run env Date: Tue, 13 Jun 2017 13:54:44 +0200 Message-ID: <20170613115451.6240-3-drjones@redhat.com> References: <20170613115451.6240-1-drjones@redhat.com> Cc: rkrcmar@redhat.com, pbonzini@redhat.com, lvivier@redhat.com, thuth@redhat.com To: kvm@vger.kernel.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:48948 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752515AbdFMLy6 (ORCPT ); Tue, 13 Jun 2017 07:54:58 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2C7E97D518 for ; Tue, 13 Jun 2017 11:54:58 +0000 (UTC) In-Reply-To: <20170613115451.6240-1-drjones@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Allow the run script environment to provide ERRATA_* variables to the unit tests. These variables will augment/override variables in any provided unit test environ (the file specified with $ENV) or trigger the creation of a temporary environ file, which contains them. Now something like ERRATA_abcd01234567=y ./run_tests.sh may be run in order to inform all unit tests that they may execute all subtests guarded by ERRATA_abcd01234567. Signed-off-by: Andrew Jones Reviewed-by: Laurent Vivier --- scripts/arch-run.bash | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash index 9efa76d6ae33..135342ef48f2 100644 --- a/scripts/arch-run.bash +++ b/scripts/arch-run.bash @@ -158,6 +158,34 @@ search_qemu_binary () initrd_create () { + env_add_errata unset INITRD [ -f "$ENV" ] && INITRD="-initrd $ENV" } + +env_add_errata () +{ + local line errata + + if [ -f "$ENV" ] && grep -q '^ERRATA_' <(env); then + for line in $(grep '^ERRATA_' "$ENV"); do + errata=${line%%=*} + test -v $errata && continue + eval export "$line" + done + fi + + if grep -q '^ERRATA_' <(env); then + export ENV_OLD="$ENV" + export ENV=$(mktemp) + trap_exit_push 'rm -f $ENV; [ "$ENV_OLD" ] && export ENV="$ENV_OLD" || unset ENV; unset ENV_OLD' + [ -f "$ENV_OLD" ] && grep -v '^ERRATA_' "$ENV_OLD" > $ENV + grep '^ERRATA_' <(env) >> $ENV + fi +} + +trap_exit_push () +{ + local old_exit=$(trap -p EXIT | sed "s/^[^']*'//;s/'[^']*$//") + trap -- "$1; $old_exit" EXIT +} -- 2.9.4