diff mbox series

[v2,2/3] qapi: use env var to trigger qapi test output updates

Message ID 20230223134027.2294640-3-berrange@redhat.com
State New
Headers show
Series qapi: allow unions to contain further unions | expand

Commit Message

Daniel P. Berrangé Feb. 23, 2023, 1:40 p.m. UTC
It is possible to pass --update to tests/qapi-schema/test-qapi.py
to make it update the output files on error. This is inconvient
to achieve though when test-qapi.py is run indirectly by make/meson.

Instead simply allow for an env variable to be set:

 $ QAPI_TEST_UPDATE=1 make check-qapi-schema

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/qapi-schema/test-qapi.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Eric Blake Feb. 24, 2023, 7:28 p.m. UTC | #1
On Thu, Feb 23, 2023 at 01:40:26PM +0000, Daniel P. Berrangé wrote:
> It is possible to pass --update to tests/qapi-schema/test-qapi.py
> to make it update the output files on error. This is inconvient

inconvenient

> to achieve though when test-qapi.py is run indirectly by make/meson.
> 
> Instead simply allow for an env variable to be set:
> 
>  $ QAPI_TEST_UPDATE=1 make check-qapi-schema
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  tests/qapi-schema/test-qapi.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
> index 2160cef082..75f2759fd6 100755
> --- a/tests/qapi-schema/test-qapi.py
> +++ b/tests/qapi-schema/test-qapi.py
> @@ -215,7 +215,8 @@ def main(argv):
>          (dir_name, base_name) = os.path.split(t)
>          dir_name = dir_name or args.dir
>          test_name = os.path.splitext(base_name)[0]
> -        status |= test_and_diff(test_name, dir_name, args.update)
> +        update = args.update or "QAPI_TEST_UPDATE" in os.environ
> +        status |= test_and_diff(test_name, dir_name, update)

Reviewed-by: Eric Blake <eblake@redhat.com>
Markus Armbruster March 17, 2023, 12:05 p.m. UTC | #2
I have a mild dislike of abbreviations like "env var".  Perhaps:

    qapi: Support updating expected test output via make

Daniel P. Berrangé <berrange@redhat.com> writes:

> It is possible to pass --update to tests/qapi-schema/test-qapi.py
> to make it update the output files on error. This is inconvient
> to achieve though when test-qapi.py is run indirectly by make/meson.
>
> Instead simply allow for an env variable to be set:
>
>  $ QAPI_TEST_UPDATE=1 make check-qapi-schema

Suggest to omit the value

    $ QAPI_TEST_UPDATE= make check-qapi-schema

The value doesn't actually matter.  A value of 1 looks as if it did, and
as if a value of 0 would disable the thing.

I'm no fan of environment variables duplicating options, but I
understand the desire for a make invocation, and I don't have a better
idea.

> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  tests/qapi-schema/test-qapi.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
> index 2160cef082..75f2759fd6 100755
> --- a/tests/qapi-schema/test-qapi.py
> +++ b/tests/qapi-schema/test-qapi.py
> @@ -215,7 +215,8 @@ def main(argv):
>          (dir_name, base_name) = os.path.split(t)
>          dir_name = dir_name or args.dir
>          test_name = os.path.splitext(base_name)[0]
> -        status |= test_and_diff(test_name, dir_name, args.update)
> +        update = args.update or "QAPI_TEST_UPDATE" in os.environ
> +        status |= test_and_diff(test_name, dir_name, update)
>  
>      exit(status)

Let's use argparse instead:

       parser.add_argument('-u', '--update', action='store_true',
  +                        default='QAPI_TEST_UPDATE' in os.environ,
                           help="update expected test results")
diff mbox series

Patch

diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index 2160cef082..75f2759fd6 100755
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -215,7 +215,8 @@  def main(argv):
         (dir_name, base_name) = os.path.split(t)
         dir_name = dir_name or args.dir
         test_name = os.path.splitext(base_name)[0]
-        status |= test_and_diff(test_name, dir_name, args.update)
+        update = args.update or "QAPI_TEST_UPDATE" in os.environ
+        status |= test_and_diff(test_name, dir_name, update)
 
     exit(status)