diff mbox series

[v3,5/5] qemu-iotests: add option to save temp files on error

Message ID e99a5e3feefe5fdb54d64fb80b09089618a0ff49.1504111803.git.jcody@redhat.com
State New
Headers show
Series qemu-iotests: place output in unique dir | expand

Commit Message

Jeff Cody Aug. 30, 2017, 4:52 p.m. UTC
Now that ./check takes care of cleaning up after each tests, it
can also selectively not clean up.  Add option to leave all output from
tests intact if that test encountered an error.

Note: this currently only works for bash tests, as the python tests
still clean up after themselves manually.

Signed-off-by: Jeff Cody <jcody@redhat.com>
---
 tests/qemu-iotests/check  | 10 +++++++++-
 tests/qemu-iotests/common |  6 ++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

Comments

Eric Blake Aug. 30, 2017, 6:49 p.m. UTC | #1
On 08/30/2017 11:52 AM, Jeff Cody wrote:
> Now that ./check takes care of cleaning up after each tests, it
> can also selectively not clean up.  Add option to leave all output from
> tests intact if that test encountered an error.
> 
> Note: this currently only works for bash tests, as the python tests
> still clean up after themselves manually.
> 
> Signed-off-by: Jeff Cody <jcody@redhat.com>
> ---
>  tests/qemu-iotests/check  | 10 +++++++++-
>  tests/qemu-iotests/common |  6 ++++++
>  2 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index f6ca85d..8a5fc0d 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -370,7 +370,15 @@ do
>              fi
>          fi
>  
> -        rm -rf "$TEST_DIR_SEQ"
> +        #TODO: There is some intial work to save intermediate files

s/intial/initial/

> +        #      in python tests, but it is imperfect.  Having each
> +        #      test record its test name, and the tearDown function
> +        #      just move intermediate images to a subdirectory with
> +        #      the test name may prove more useful.

Comment works for me, and I'm fine with the idea you present here being
in a followup patch.  So with the typo fixed,
Reviewed-by: Eric Blake <eblake@redhat.com>
John Snow Aug. 30, 2017, 10:38 p.m. UTC | #2
On 08/30/2017 12:52 PM, Jeff Cody wrote:
> Now that ./check takes care of cleaning up after each tests, it
> can also selectively not clean up.  Add option to leave all output from
> tests intact if that test encountered an error.
> 
> Note: this currently only works for bash tests, as the python tests
> still clean up after themselves manually.
> 
> Signed-off-by: Jeff Cody <jcody@redhat.com>
> ---
>  tests/qemu-iotests/check  | 10 +++++++++-
>  tests/qemu-iotests/common |  6 ++++++
>  2 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index f6ca85d..8a5fc0d 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -370,7 +370,15 @@ do
>              fi
>          fi
>  
> -        rm -rf "$TEST_DIR_SEQ"
> +        #TODO: There is some intial work to save intermediate files
> +        #      in python tests, but it is imperfect.  Having each
> +        #      test record its test name, and the tearDown function
> +        #      just move intermediate images to a subdirectory with
> +        #      the test name may prove more useful.
> +        if [ "$save_on_err" != "true" ] || [ "$err" != "true" ]
> +        then
> +            rm -rf "$TEST_DIR_SEQ"
> +        fi
>  
>      fi
>  
> diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common
> index d34c11c..d08b233 100644
> --- a/tests/qemu-iotests/common
> +++ b/tests/qemu-iotests/common
> @@ -42,6 +42,7 @@ expunge=true
>  have_test_arg=false
>  randomize=false
>  cachemode=false
> +save_on_err=false
>  rm -f $tmp.list $tmp.tmp $tmp.sed
>  
>  export IMGFMT=raw
> @@ -172,6 +173,7 @@ other options
>      -T                  output timestamps
>      -r                  randomize test order
>      -c mode             cache mode
> +    -s                  save test scratch directory on test failure
>  
>  testlist options
>      -g group[,group...]        include tests from these groups
> @@ -349,6 +351,10 @@ testlist options
>              xgroup=true
>              xpand=false
>              ;;
> +        -s)
> +            save_on_err=true
> +            xpand=false
> +            ;;
>          '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
>              echo "No tests?"
>              status=1
> 

This, however, is definitely awesome.

Tested-by: John Snow <jsnow@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
diff mbox series

Patch

diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index f6ca85d..8a5fc0d 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -370,7 +370,15 @@  do
             fi
         fi
 
-        rm -rf "$TEST_DIR_SEQ"
+        #TODO: There is some intial work to save intermediate files
+        #      in python tests, but it is imperfect.  Having each
+        #      test record its test name, and the tearDown function
+        #      just move intermediate images to a subdirectory with
+        #      the test name may prove more useful.
+        if [ "$save_on_err" != "true" ] || [ "$err" != "true" ]
+        then
+            rm -rf "$TEST_DIR_SEQ"
+        fi
 
     fi
 
diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common
index d34c11c..d08b233 100644
--- a/tests/qemu-iotests/common
+++ b/tests/qemu-iotests/common
@@ -42,6 +42,7 @@  expunge=true
 have_test_arg=false
 randomize=false
 cachemode=false
+save_on_err=false
 rm -f $tmp.list $tmp.tmp $tmp.sed
 
 export IMGFMT=raw
@@ -172,6 +173,7 @@  other options
     -T                  output timestamps
     -r                  randomize test order
     -c mode             cache mode
+    -s                  save test scratch directory on test failure
 
 testlist options
     -g group[,group...]        include tests from these groups
@@ -349,6 +351,10 @@  testlist options
             xgroup=true
             xpand=false
             ;;
+        -s)
+            save_on_err=true
+            xpand=false
+            ;;
         '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
             echo "No tests?"
             status=1