[Tarantool-patches] [PATCH 3/4] test: make convert to hex compatible with Python 3.x
Leonid Vasiliev
lvasiliev at tarantool.org
Thu Dec 17 21:26:08 MSK 2020
Hi!
On 16.12.2020 17:04, Sergey Bronnikov wrote:
> Hello,
>
>
> On 15.12.2020 14:55, Leonid Vasiliev wrote:
>> Hi! Thank you for the patch.
>>
>> On 11.12.2020 11:42, Sergey Bronnikov via Tarantool-patches wrote:
>>> From: Sergey Bronnikov <sergeyb at tarantool.org>
>>>
>>> Part of #5538
>>> ---
>>> test/box-py/iproto.test.py | 6 +++++-
>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/test/box-py/iproto.test.py b/test/box-py/iproto.test.py
>>> index 25ead43c4..72400923c 100644
>>> --- a/test/box-py/iproto.test.py
>>> +++ b/test/box-py/iproto.test.pyHi
>>> @@ -191,7 +191,11 @@ for test in TESTS:
>>> print("STR", size)
>>> print("--")
>>> for fmt in it:
>>> - print("0x" + fmt.encode("hex"), "=>", end=" ")
>>> + try:
>>> + # Python 3
>>> + print("0x" + "hex".encode("utf-8").hex(), "=>", end=" ")
>>
>> Maybe fmt.encode("utf-8").hex()?
>
> I would be glad to use it in Python 3, but fmt module was removed there.
Sorry, but I don't understand which module "fmt" you mean. I don't see
any `import fmt...` here. AFAIU `fmt` in this context is a string from
one of the tuples from the list `TESTS`.
So, I copy this hunk:
```
from __future__ import print_function
TESTS = [
(1, "\xa1", "\xd9\x01", "\xda\x00\x01", "\xdb\x00\x00\x00\x01"),
(31, "\xbf", "\xd9\x1f", "\xda\x00\x1f", "\xdb\x00\x00\x00\x1f"),
(32, "\xd9\x20", "\xda\x00\x20", "\xdb\x00\x00\x00\x20"),
(255, "\xd9\xff", "\xda\x00\xff", "\xdb\x00\x00\x00\xff"),
(256, "\xda\x01\x00", "\xdb\x00\x00\x01\x00"),
(65535, "\xda\xff\xff", "\xdb\x00\x00\xff\xff"),
(65536, "\xdb\x00\x01\x00\x00"),
]
for test in TESTS:
it = iter(test)
size = next(it)
print("STR", size)
print("--")
for fmt in it:
try:
# Python 3
print("0x" + "hex".encode("utf-8").hex(), "=>", end=" ")
except AttributeError:
print("0x" + fmt.encode("hex"), "=>", end=" ")
print()
print()
```
and run it on python2 and python3.
Results doesn't look identically.
Python2:
```
┌─[leonid at vasya-L460]─[~/work/mail/tarantool/tmp]
└──╼ python2 test.py
STR 1
--
0xa1 =>
0xd901 =>
0xda0001 =>
0xdb00000001 =>
STR 31
--
0xbf =>
0xd91f =>
0xda001f =>
0xdb0000001f =>
STR 32
--
0xd920 =>
0xda0020 =>
0xdb00000020 =>
STR 255
--
0xd9ff =>
0xda00ff =>
0xdb000000ff =>
STR 256
--
0xda0100 =>
0xdb00000100 =>
STR 65535
--
0xdaffff =>
0xdb0000ffff =>
STR 65536
--
0xdb00010000 =>
```
Python3:
```
┌─[leonid at vasya-L460]─[~/work/mail/tarantool/tmp]
└──╼ python3 test.py
STR 1
--
0x686578 =>
0x686578 =>
0x686578 =>
0x686578 =>
STR 31
--
0x686578 =>
0x686578 =>
0x686578 =>
0x686578 =>
STR 32
--
0x686578 =>
0x686578 =>
0x686578 =>
STR 255
--
0x686578 =>
0x686578 =>
0x686578 =>
STR 256
--
0x686578 =>
0x686578 =>
STR 65535
--
0x686578 =>
0x686578 =>
STR 65536
--
0x686578 =>
```
Am I doing something wrong or a bug in the patch?
>
>
>> Please, add a comment that describing the difference between python2 and
>> python3 in this print.
>>
> Added comment to a commit message and force-pushed.
>>> + except AttributeError:
>>> + print("0x" + fmt.encode("hex"), "=>", end=" ")
>>> field = "*" * size
>>> c._send_request(RawInsert(c, space_id, "\x91" + fmt + field))
>>> tuple = space.select(field)[0]
>>>
More information about the Tarantool-patches
mailing list