[PATCH kvm-unit-tests 2/8] arch-run: provide errata from run env

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <drjones@xxxxxxxxxx>
---
 scripts/arch-run.bash | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
index 581552a21f2e..3ba6354608da 100644
--- a/scripts/arch-run.bash
+++ b/scripts/arch-run.bash
@@ -158,5 +158,33 @@ search_qemu_binary ()
 
 initrd_create ()
 {
+	env_add_errata
 	[ -f "$ENV" ] && export 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=$(echo "$line" | cut -d= -f1)
+			grep -q $errata <(env) && 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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux