From: Lumir Balhar <lbalhar@xxxxxxxxxx> Signed-off-by: Lumir Balhar <lbalhar@xxxxxxxxxx> --- pylibfdt/libfdt.i | 14 +++++++++++--- tests/pylibfdt_tests.py | 17 ++++++++++------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i index aed5390..88d443d 100644 --- a/pylibfdt/libfdt.i +++ b/pylibfdt/libfdt.i @@ -624,7 +624,7 @@ class Fdt: Raises: FdtException if no parent found or other error occurs """ - val = val.encode('utf-8') + '\0' + val = val.encode('utf-8') + b'\0' return check_err(fdt_setprop(self._fdt, nodeoffset, prop_name, val, len(val)), quiet) @@ -749,12 +749,20 @@ typedef uint32_t fdt32_t; if (!$1) $result = Py_None; else - $result = Py_BuildValue("s#", $1, *arg4); + %#if PY_VERSION_HEX >= 0x03000000 + $result = Py_BuildValue("y#", $1, *arg4); + %#else + $result = Py_BuildValue("s#", $1, *arg4); + %#endif } /* typemap used for fdt_setprop() */ %typemap(in) (const void *val) { - $1 = PyString_AsString($input); /* char *str */ + %#if PY_VERSION_HEX >= 0x03000000 + $1 = PyBytes_AsString($input); + %#else + $1 = PyString_AsString($input); /* char *str */ + %#endif } /* typemaps used for fdt_next_node() */ diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py index 9f3e55a..e1204f8 100644 --- a/tests/pylibfdt_tests.py +++ b/tests/pylibfdt_tests.py @@ -69,7 +69,10 @@ TEST_VALUE64_1 = (TEST_VALUE64_1H << 32) | TEST_VALUE64_1L TEST_STRING_1 = 'hello world' TEST_STRING_2 = 'hi world' -TEST_STRING_3 = u'unicode ' + unichr(467) +try: + TEST_STRING_3 = u'unicode ' + unichr(467) +except NameError: + TEST_STRING_3 = u'unicode ' + chr(467) def get_err(err_code): @@ -92,7 +95,7 @@ def _ReadFdt(fname): Returns: Fdt bytearray suitable for passing to libfdt functions """ - return libfdt.Fdt(open(fname).read()) + return libfdt.Fdt(open(fname, mode='rb').read()) class PyLibfdtTests(unittest.TestCase): """Test class for pylibfdt @@ -131,7 +134,7 @@ class PyLibfdtTests(unittest.TestCase): def testBadFdt(self): """Check that a filename provided accidentally is not accepted""" with self.assertRaises(FdtException) as e: - fdt = libfdt.Fdt('a string') + fdt = libfdt.Fdt(b'a string') self.assertEquals(e.exception.err, -libfdt.BADMAGIC) def testSubnodeOffset(self): @@ -206,7 +209,7 @@ class PyLibfdtTests(unittest.TestCase): poffset = self.fdt.first_property_offset(root) prop = self.fdt.get_property_by_offset(poffset) self.assertEquals(prop.name, 'compatible') - self.assertEquals(prop, 'test_tree1\0') + self.assertEquals(prop, b'test_tree1\0') with self.assertRaises(FdtException) as e: self.fdt.get_property_by_offset(-2) @@ -219,7 +222,7 @@ class PyLibfdtTests(unittest.TestCase): """Check that we can read the contents of a property by name""" root = self.fdt.path_offset('/') value = self.fdt.getprop(root, "compatible") - self.assertEquals(value, 'test_tree1\0') + self.assertEquals(value, b'test_tree1\0') self.assertEquals(-libfdt.NOTFOUND, self.fdt.getprop(root, 'missing', QUIET_NOTFOUND)) @@ -229,7 +232,7 @@ class PyLibfdtTests(unittest.TestCase): node = self.fdt.path_offset('/subnode@1/subsubnode') value = self.fdt.getprop(node, "compatible") - self.assertEquals(value, 'subsubnode1\0subsubnode\0') + self.assertEquals(value, b'subsubnode1\0subsubnode\0') def testStrError(self): """Check that we can get an error string""" @@ -389,7 +392,7 @@ class PyLibfdtTests(unittest.TestCase): self.assertEquals(2, self.fdt.num_mem_rsv()) self.assertEquals([ 0xdeadbeef00000000, 0x100000], self.fdt.get_mem_rsv(0)) - self.assertEquals([123456789, 010000], self.fdt.get_mem_rsv(1)) + self.assertEquals([123456789, 0o10000], self.fdt.get_mem_rsv(1)) def testEmpty(self): """Test that we can create an empty tree""" -- 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html