scripts: Fix the check whether testname is in the only_tests list
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. Because "grep -w" does not consider the "-" character as
part of a word, "ioapic" successfully matches against "ioapic-split".
To fix the issue, use spaces as the only delimiter when running "grep",
removing the problematic "-w" flag from the invocation. While at it,
add "-F" to avoid unintended use of regular expression metacharacters.
Reported-by: Thomas Huth <thuth@redhat.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/scripts/runtime.bash b/scripts/runtime.bash
index 8bfe31c..c88e246 100644
--- a/scripts/runtime.bash
+++ b/scripts/runtime.bash
@@ -68,6 +68,11 @@
fi
}
+function find_word()
+{
+ grep -Fq " $1 " <<< " $2 "
+}
+
function run()
{
local testname="$1"
@@ -84,15 +89,15 @@
return
fi
- if [ -n "$only_tests" ] && ! grep -qw "$testname" <<<$only_tests; then
+ if [ -n "$only_tests" ] && ! find_word "$testname" "$only_tests"; then
return
fi
- if [ -n "$only_group" ] && ! grep -qw "$only_group" <<<$groups; then
+ if [ -n "$only_group" ] && ! find_word "$only_group" "$groups"; then
return
fi
- if [ -z "$only_group" ] && grep -qw "nodefault" <<<$groups &&
+ if [ -z "$only_group" ] && find_word nodefault "$groups" &&
skip_nodefault; then
print_result "SKIP" $testname "" "test marked as manual run only"
return;