On Thu, Oct 30, 2025 at 10:26:38AM +0100, Thomas Huth wrote:
> From: Thomas Huth <[email protected]>
> 
> The argparse.FileType() type has been deprecated in the latest argparse
> version (e.g. the one from Fedora 43), now causing the test_bad_vmstate
> functional test to fail since there are unexpected strings in the output.
> Change the script to use pathlib.Path instead to fix the test_bad_vmstate
> test and to be prepared for the future when the deprecated FileType gets
> removed completely.
> 
> Reported-by: Daniel P. Berrangé <[email protected]>
> Signed-off-by: Thomas Huth <[email protected]>
> ---
>  scripts/vmstate-static-checker.py | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)

AFAICT, using pathlib.Path should work going back to any old python
versions we would need.

> 
> diff --git a/scripts/vmstate-static-checker.py 
> b/scripts/vmstate-static-checker.py
> index 2335e25f94c..89b100e6cca 100755
> --- a/scripts/vmstate-static-checker.py
> +++ b/scripts/vmstate-static-checker.py
> @@ -21,6 +21,7 @@
>  
>  import argparse
>  import json
> +import pathlib
>  import sys
>  
>  # Count the number of errors found
> @@ -382,10 +383,10 @@ def main():
>      help_text = "Parse JSON-formatted vmstate dumps from QEMU in files SRC 
> and DEST.  Checks whether migration from SRC to DEST QEMU versions would 
> break based on the VMSTATE information contained within the JSON outputs.  
> The JSON output is created from a QEMU invocation with the -dump-vmstate 
> parameter and a filename argument to it.  Other parameters to QEMU do not 
> matter, except the -M (machine type) parameter."
>  
>      parser = argparse.ArgumentParser(description=help_text)
> -    parser.add_argument('-s', '--src', type=argparse.FileType('r'),
> +    parser.add_argument('-s', '--src', type=pathlib.Path,
>                          required=True,
>                          help='json dump from src qemu')
> -    parser.add_argument('-d', '--dest', type=argparse.FileType('r'),
> +    parser.add_argument('-d', '--dest', type=pathlib.Path,
>                          required=True,
>                          help='json dump from dest qemu')
>      parser.add_argument('--reverse', required=False, default=False,
> @@ -393,10 +394,10 @@ def main():
>                          help='reverse the direction')
>      args = parser.parse_args()
>  
> -    src_data = json.load(args.src)
> -    dest_data = json.load(args.dest)
> -    args.src.close()
> -    args.dest.close()
> +    with open(args.src, 'r', encoding='utf-8') as src_fh:
> +        src_data = json.load(src_fh)
> +    with open(args.dest, 'r', encoding='utf-8') as dst_fh:
> +        dest_data = json.load(dst_fh)

This could be

 src_data = json.load(args.src.read_text('utf-8'))
 dest_data = json.load(args.dest.read_text('utf-8'))


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Reply via email to