On 01/07/2020 10.51, Paolo Bonzini wrote:
On 01/07/20 10:37, Thomas Huth wrote:
When you currently run
./run_tests.sh ioapic-split
the kvm-unit-tests run scripts do not only execute the "ioapic-split"
test, but also the "ioapic" test, which is quite surprising. This
happens because we use "grep -w" for checking whether a test should
be run or not - and "grep -w" does not consider the "-" character as
part of a word.
To fix the issue, convert the dash into an underscore character before
running "grep -w".
Signed-off-by: Thomas Huth <thuth@xxxxxxxxxx>
---
scripts/runtime.bash | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/runtime.bash b/scripts/runtime.bash
index 8bfe31c..03fd20a 100644
--- a/scripts/runtime.bash
+++ b/scripts/runtime.bash
@@ -84,7 +84,8 @@ function run()
return
fi
- if [ -n "$only_tests" ] && ! grep -qw "$testname" <<<$only_tests; then
+ if [ -n "$only_tests" ] && ! sed s/-/_/ <<<$only_tests \
+ | grep -qw $(sed s/-/_/ <<< "$testname") ; then
return
fi
Simpler: grep -q " $testname " <<< " $only_tests "
That doesn't work:
$ ./run_tests.sh ioapic-split
PASS apic-split (53 tests)
PASS ioapic-split (19 tests)
PASS apic (53 tests)
PASS ioapic (26 tests)
... because the $testname comes from unittests.cfg and $only_tests is
the list that has been given on the command line. It would maybe work if
the check was the other way round ... but that would require to rewrite
quite a bit of the script logic...
By the way, you can currently also run "./run_test.sh badname" and it
does *not* complain that "badname" is an illegal test name...
Thomas