On Thu, Jan 12, 2017 at 06:50:15PM +0100, Paolo Bonzini wrote: > 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 no need for this trap handler anymore > -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 > Nice cleanup! But doesn't this output usage and exit now if run without any arguments? If so, then doesn't it break 'make standalone'? To fix, we just need to move the if checks into the { }, right? Thanks, drew -- 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