[Qemu-devel] [PATCH v2 06/10] iotests.py: Add is_str()

Max Reitz posted 10 patches 6 years, 9 months ago
There is a newer version of this series
[Qemu-devel] [PATCH v2 06/10] iotests.py: Add is_str()
Posted by Max Reitz 6 years, 9 months ago
On Python 2.x, strings are not always unicode strings.  This function
checks whether a given value is a plain string, or a unicode string (if
there is a difference).

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/iotests.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index f51456fa63..3e91444b79 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -221,6 +221,12 @@ def image_size(img):
     r = qemu_img_pipe('info', '--output=json', '-f', imgfmt, img)
     return json.loads(r)['virtual-size']
 
+def is_str(val):
+    if sys.version_info.major >= 3:
+        return isinstance(val, str)
+    else:
+        return isinstance(val, str) or isinstance(val, unicode)
+
 test_dir_re = re.compile(r"%s" % test_dir)
 def filter_test_dir(msg):
     return test_dir_re.sub("TEST_DIR", msg)
-- 
2.20.1


Re: [Qemu-devel] [PATCH v2 06/10] iotests.py: Add is_str()
Posted by John Snow 6 years, 9 months ago

On 1/30/19 10:24 AM, Max Reitz wrote:
> On Python 2.x, strings are not always unicode strings.  This function
> checks whether a given value is a plain string, or a unicode string (if
> there is a difference).
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  tests/qemu-iotests/iotests.py | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index f51456fa63..3e91444b79 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -221,6 +221,12 @@ def image_size(img):
>      r = qemu_img_pipe('info', '--output=json', '-f', imgfmt, img)
>      return json.loads(r)['virtual-size']
>  
> +def is_str(val):
> +    if sys.version_info.major >= 3:
> +        return isinstance(val, str)
> +    else:
> +        return isinstance(val, str) or isinstance(val, unicode)
> +
>  test_dir_re = re.compile(r"%s" % test_dir)
>  def filter_test_dir(msg):
>      return test_dir_re.sub("TEST_DIR", msg)
> 

Scares me less.

Reviewed-by: John Snow <jsnow@redhat.com>