On Thu, 05/22 23:30, Max Reitz wrote: > Instead of invoking Python scripts directly via ./, use $PYTHON to > obtain the correct Python interpreter command. > > Signed-off-by: Max Reitz <mre...@redhat.com> > --- > tests/qemu-iotests/031 | 8 ++++---- > tests/qemu-iotests/036 | 6 +++--- > tests/qemu-iotests/039 | 18 +++++++++--------- > tests/qemu-iotests/054 | 2 +- > tests/qemu-iotests/060 | 20 ++++++++++---------- > tests/qemu-iotests/061 | 24 ++++++++++++------------ > tests/qemu-iotests/083 | 2 +- > tests/qemu-iotests/check | 8 +++++++- > 8 files changed, 47 insertions(+), 41 deletions(-) > > diff --git a/tests/qemu-iotests/031 b/tests/qemu-iotests/031 > index 1d920ea..2a77ba8 100755 > --- a/tests/qemu-iotests/031 > +++ b/tests/qemu-iotests/031 > @@ -56,22 +56,22 @@ for IMGOPTS in "compat=0.10" "compat=1.1"; do > echo === Create image with unknown header extension === > echo > _make_test_img 64M > - ./qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test header > extension" > - ./qcow2.py "$TEST_IMG" dump-header > + $PYTHON qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test > header extension" > + $PYTHON qcow2.py "$TEST_IMG" dump-header > _check_test_img > > echo > echo === Rewrite header with no backing file === > echo > $QEMU_IMG rebase -u -b "" "$TEST_IMG" > - ./qcow2.py "$TEST_IMG" dump-header > + $PYTHON qcow2.py "$TEST_IMG" dump-header > _check_test_img > > echo > echo === Add a backing file and format === > echo > $QEMU_IMG rebase -u -b "/some/backing/file/path" -F host_device > "$TEST_IMG" > - ./qcow2.py "$TEST_IMG" dump-header > + $PYTHON qcow2.py "$TEST_IMG" dump-header > done > > # success, all done > diff --git a/tests/qemu-iotests/036 b/tests/qemu-iotests/036 > index 03b6aa9..a773653 100755 > --- a/tests/qemu-iotests/036 > +++ b/tests/qemu-iotests/036 > @@ -53,15 +53,15 @@ IMGOPTS="compat=1.1" > echo === Create image with unknown autoclear feature bit === > echo > _make_test_img 64M > -./qcow2.py "$TEST_IMG" set-feature-bit autoclear 63 > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 63 > +$PYTHON qcow2.py "$TEST_IMG" dump-header > > echo > echo === Repair image === > echo > _check_test_img -r all > > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > > # success, all done > echo "*** done" > diff --git a/tests/qemu-iotests/039 b/tests/qemu-iotests/039 > index 27fe4bd..84c9167 100755 > --- a/tests/qemu-iotests/039 > +++ b/tests/qemu-iotests/039 > @@ -63,7 +63,7 @@ _make_test_img $size > $QEMU_IO -c "write -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io > > # The dirty bit must not be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > _check_test_img > > echo > @@ -75,7 +75,7 @@ _make_test_img $size > _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 > | _filter_qemu_io > > # The dirty bit must be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > _check_test_img > > echo > @@ -84,7 +84,7 @@ echo "== Read-only access must still work ==" > $QEMU_IO -r -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io > > # The dirty bit must be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > echo > echo "== Repairing the image file must succeed ==" > @@ -92,7 +92,7 @@ echo "== Repairing the image file must succeed ==" > _check_test_img -r all > > # The dirty bit must not be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > echo > echo "== Data should still be accessible after repair ==" > @@ -108,12 +108,12 @@ _make_test_img $size > _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 > | _filter_qemu_io > > # The dirty bit must be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > $QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io > > # The dirty bit must not be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > echo > echo "== Creating an image file with lazy_refcounts=off ==" > @@ -124,7 +124,7 @@ _make_test_img $size > _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 > | _filter_qemu_io > > # The dirty bit must not be set since lazy_refcounts=off > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > _check_test_img > > echo > @@ -140,8 +140,8 @@ $QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io > $QEMU_IMG commit "$TEST_IMG" > > # The dirty bit must not be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > -./qcow2.py "$TEST_IMG".base dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG".base dump-header | grep incompatible_features > > _check_test_img > TEST_IMG="$TEST_IMG".base _check_test_img > diff --git a/tests/qemu-iotests/054 b/tests/qemu-iotests/054 > index c8b7082..bd94153 100755 > --- a/tests/qemu-iotests/054 > +++ b/tests/qemu-iotests/054 > @@ -49,7 +49,7 @@ _make_test_img $((1024*1024))T > echo > echo "creating too large image (1 EB) using qcow2.py" > _make_test_img 4G > -./qcow2.py "$TEST_IMG" set-header size $((1024 ** 6)) > +$PYTHON qcow2.py "$TEST_IMG" set-header size $((1024 ** 6)) > _check_test_img > > # success, all done > diff --git a/tests/qemu-iotests/060 b/tests/qemu-iotests/060 > index f0116aa..3cffc12 100755 > --- a/tests/qemu-iotests/060 > +++ b/tests/qemu-iotests/060 > @@ -68,13 +68,13 @@ poke_file "$TEST_IMG" "$l1_offset" > "\x80\x00\x00\x00\x00\x03\x00\x00" > _check_test_img > > # The corrupt bit should not be set anyway > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > # Try to write something, thereby forcing the corrupt bit to be set > $QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io > > # The corrupt bit must now be set > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > # Try to open the image R/W (which should fail) > $QEMU_IO -c "$OPEN_RW" -c "read 0 512" 2>&1 | _filter_qemu_io \ > @@ -99,19 +99,19 @@ poke_file "$TEST_IMG" "$(($rb_offset+8))" "\x00\x01" > # Redirect new data cluster onto refcount block > poke_file "$TEST_IMG" "$l2_offset" "\x80\x00\x00\x00\x00\x02\x00\x00" > _check_test_img > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > $QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > # Try to fix it > _check_test_img -r all > > # The corrupt bit should be cleared > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > # Look if it's really really fixed > $QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > echo > echo "=== Testing cluster data reference into inactive L2 table ===" > @@ -124,13 +124,13 @@ $QEMU_IO -c "$OPEN_RW" -c "write -P 2 0 512" | > _filter_qemu_io > poke_file "$TEST_IMG" "$l2_offset_after_snapshot" \ > "\x80\x00\x00\x00\x00\x04\x00\x00" > _check_test_img > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > $QEMU_IO -c "$OPEN_RW" -c "write -P 3 0 512" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > _check_test_img -r all > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > $QEMU_IO -c "$OPEN_RW" -c "write -P 4 0 512" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > +$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features > > # Check data > $QEMU_IO -c "$OPEN_RO" -c "read -P 4 0 512" | _filter_qemu_io > diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061 > index d3a6b38..ab98def 100755 > --- a/tests/qemu-iotests/061 > +++ b/tests/qemu-iotests/061 > @@ -48,9 +48,9 @@ echo "=== Testing version downgrade with zero expansion ===" > echo > IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M > $QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IMG amend -o "compat=0.10" "$TEST_IMG" > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io > _check_test_img > > @@ -59,9 +59,9 @@ echo "=== Testing dirty version downgrade ===" > echo > IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M > $QEMU_IO -c "write -P 0x2a 0 128k" -c flush -c abort "$TEST_IMG" | > _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IMG amend -o "compat=0.10" "$TEST_IMG" > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io > _check_test_img > > @@ -69,11 +69,11 @@ echo > echo "=== Testing version downgrade with unknown compat/autoclear flags ===" > echo > IMGOPTS="compat=1.1" _make_test_img 64M > -./qcow2.py "$TEST_IMG" set-feature-bit compatible 42 > -./qcow2.py "$TEST_IMG" set-feature-bit autoclear 42 > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" set-feature-bit compatible 42 > +$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 42 > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IMG amend -o "compat=0.10" "$TEST_IMG" > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > _check_test_img > > echo > @@ -81,9 +81,9 @@ echo "=== Testing version upgrade and resize ===" > echo > IMGOPTS="compat=0.10" _make_test_img 64M > $QEMU_IO -c "write -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IMG amend -o "compat=1.1,lazy_refcounts=on,size=128M" "$TEST_IMG" > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IO -c "read -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io > _check_test_img > > @@ -92,9 +92,9 @@ echo "=== Testing dirty lazy_refcounts=off ===" > echo > IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M > $QEMU_IO -c "write -P 0x2a 0 128k" -c flush -c abort "$TEST_IMG" | > _filter_qemu_io > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IMG amend -o "lazy_refcounts=off" "$TEST_IMG" > -./qcow2.py "$TEST_IMG" dump-header > +$PYTHON qcow2.py "$TEST_IMG" dump-header > $QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io > _check_test_img > > diff --git a/tests/qemu-iotests/083 b/tests/qemu-iotests/083 > index f764534..b7ba860 100755 > --- a/tests/qemu-iotests/083 > +++ b/tests/qemu-iotests/083 > @@ -81,7 +81,7 @@ EOF > nbd_url="nbd:127.0.0.1:$port:exportname=foo" > fi > > - ./nbd-fault-injector.py $extra_args "127.0.0.1:$port" > "$TEST_DIR/nbd-fault-injector.conf" 2>&1 >/dev/null & > + $PYTHON nbd-fault-injector.py $extra_args "127.0.0.1:$port" > "$TEST_DIR/nbd-fault-injector.conf" 2>&1 >/dev/null & > wait_for_tcp_port "127.0.0.1:$port" > $QEMU_IO -c "read 0 512" "$nbd_url" 2>&1 | _filter_qemu_io | filter_nbd > > diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check > index 8ec5b8d..8420bd6 100755 > --- a/tests/qemu-iotests/check > +++ b/tests/qemu-iotests/check > @@ -298,10 +298,16 @@ do > > start=`_wallclock` > $timestamp && echo -n " ["`date "+%T"`"]" > + > + if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env > python" ]; then
How about if head -n 1 "$source_iotests/$seq" | grep -q '#!/usr/bin/env python'; then ? So you don't need patch 6 (Personally, I don't dislike #!/usr/bin/env python2). But no objection, so I'll leave my Reviewed-by: Fam Zheng <f...@redhat.com> > + run_command="$PYTHON $seq" > + else > + run_command="./$seq" > + fi > export OUTPUT_DIR=$PWD > (cd "$source_iotests"; > MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \ > - ./$seq >$tmp.out 2>&1) > + $run_command >$tmp.out 2>&1) > sts=$? > $timestamp && _timestamp > stop=`_wallclock` > -- > 1.9.3 > >