On 06/06/2017 20:22, Andrew Jones wrote: > 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> Reviewed-by: Laurent Vivier <lvivier@xxxxxxxxxx> > --- > scripts/arch-run.bash | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash > index fc95e263458f..09072ee46366 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" ] && 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 > +} >