The custom configuration created when mkstandalone has a parameter does not handle the case where the .flat file and the test have mismatching name. Case in point, intel-iommu.flat vs intel_iommu. Instead, let for_each_unittest iterate on all tests, and filter the kernel name in mkstandalone(). A kernel that does not have any test in unittests.cfg still behaves as before. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> --- scripts/mkstandalone.sh | 50 ++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh index 3c1938e..20e56b8 100755 --- a/scripts/mkstandalone.sh +++ b/scripts/mkstandalone.sh @@ -80,49 +80,49 @@ generate_test () function mkstandalone() { local testname="$1" + local kernel="$4" if [ -z "$testname" ]; then return fi - if [ -n "$one_testname" ] && [ "$testname" != "$one_testname" ]; then + if [ "$one_kernel" ] && [ "$kernel" != "$TEST_DIR/$one_kernel" ]; then return fi + mkdir -p tests standalone=tests/$testname generate_test "$@" > $standalone chmod +x $standalone echo Written $standalone. + ok=true } trap 'rm -f $cfg' EXIT -cfg=$(mktemp) unittests=$TEST_DIR/unittests.cfg one_kernel="$1" - -if [ "$one_kernel" ]; then - [ ! -f $one_kernel ] && { - echo "$one_kernel doesn't exist" - exit 1 - } - - one_kernel_base=$(basename $one_kernel) - one_testname="${2:-${one_kernel_base%.*}}" - - if grep -q "\[$one_testname\]" $unittests; then - sed -n "/\\[$one_testname\\]/,/^\\[/p" $unittests \ - | awk '!/^\[/ || NR == 1' > $cfg - else - echo "[$one_testname]" > $cfg - echo "file = $one_kernel_base" >> $cfg - fi -else - cp -f $unittests $cfg +ok=false + +if [ -z "$1" ]; then + echo Usage: "$0" KERNEL-NAME + echo + echo Extract from $unittests into standalone scripts all tests + echo that run KERNEL-NAME. KERNEL-NAME is relative to $TEST_DIR. + echo + echo If no tests exist in $unittests, create a standalone script + echo that runs KERNEL-NAME with no special options. + exit 1 fi - -mkdir -p tests - -for_each_unittest $cfg mkstandalone +if ! [ -f "$TEST_DIR/$one_kernel" ]; then + echo "$0": "$TEST_DIR/$one_kernel" not found. + exit 1 +fi +for_each_unittest $unittests mkstandalone +$ok || { + one_kernel_base=$(basename $one_kernel) + one_testname="${2:-${one_kernel_base%.*}}" + mkstandalone "$one_testname" "" "" "$TEST_DIR/$one_kernel" +} -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html