Re: [PATCH 3/5] pylibfdt: Test fdt.setprop take bytes on Python 3, add error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Mon, Feb 18, 2019 at 05:48:54PM +0100, frenzy@xxxxxxxxx wrote:
> From: Petr Viktorin <pviktori@xxxxxxxxxx>
> 
> Signed-off-by: Petr Viktorin <pviktori@xxxxxxxxxx>

Applied, thanks.

> ---
>  pylibfdt/libfdt.i       |  4 ++++
>  tests/pylibfdt_tests.py | 12 +++++++-----
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
> index 084bc5b..4f14403 100644
> --- a/pylibfdt/libfdt.i
> +++ b/pylibfdt/libfdt.i
> @@ -1084,6 +1084,10 @@ typedef uint32_t fdt32_t;
>  /* typemap used for fdt_setprop() */
>  %typemap(in) (const void *val) {
>      %#if PY_VERSION_HEX >= 0x03000000
> +        if (!PyBytes_Check($input)) {
> +            SWIG_exception_fail(SWIG_TypeError, "bytes expected in method '" "$symname"
> +                "', argument " "$argnum"" of type '" "$type""'");
> +        }
>          $1 = PyBytes_AsString($input);
>      %#else
>          $1 = PyString_AsString($input);   /* char *str */
> diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
> index 4761c52..e6c13ff 100644
> --- a/tests/pylibfdt_tests.py
> +++ b/tests/pylibfdt_tests.py
> @@ -82,6 +82,8 @@ TEST_VALUE64_1 = (TEST_VALUE64_1H << 32) | TEST_VALUE64_1L
>  PHANDLE_1 = 0x2000
>  PHANDLE_2 = 0x2001
>  
> +TEST_BYTES_1 = b'hello world'
> +
>  TEST_STRING_1 = 'hello world'
>  TEST_STRING_2 = 'hi world'
>  TEST_STRING_3 = u'unicode \u01d3'
> @@ -443,21 +445,21 @@ class PyLibfdtBasicTests(unittest.TestCase):
>      def testSetProp(self):
>          """Test that we can update and create properties"""
>          node = self.fdt.path_offset('/subnode@1')
> -        self.fdt.setprop(node, 'compatible', TEST_STRING_1)
> -        self.assertEquals(TEST_STRING_1, self.fdt.getprop(node, 'compatible'))
> +        self.fdt.setprop(node, 'compatible', TEST_BYTES_1)
> +        self.assertEquals(TEST_BYTES_1, self.fdt.getprop(node, 'compatible'))
>  
>          # Check that this property is missing, and that we don't have space to
>          # add it
>          self.assertEquals(-libfdt.NOTFOUND,
>                            self.fdt.getprop(node, 'missing', QUIET_NOTFOUND))
>          self.assertEquals(-libfdt.NOSPACE,
> -                          self.fdt.setprop(node, 'missing', TEST_STRING_1,
> +                          self.fdt.setprop(node, 'missing', TEST_BYTES_1,
>                                             quiet=(libfdt.NOSPACE,)))
>  
>          # Expand the device tree so we now have room
>          self.fdt.resize(self.fdt.totalsize() + 50)
> -        self.fdt.setprop(node, 'missing', TEST_STRING_1)
> -        self.assertEquals(TEST_STRING_1, self.fdt.getprop(node, 'missing'))
> +        self.fdt.setprop(node, 'missing', TEST_BYTES_1)
> +        self.assertEquals(TEST_BYTES_1, self.fdt.getprop(node, 'missing'))
>  
>      def testSetPropU32(self):
>          """Test that we can update and create integer properties"""

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux