Aiven-Open / karapace

Karapace - Your Apache Kafka® essentials in one tool
https://karapace.io
Apache License 2.0
459 stars 69 forks source link

`karapace.protobuf.encoding_variants.write_varint` is broken #651

Open aiven-anton opened 1 year ago

aiven-anton commented 1 year ago

What happened?

Another bug found while adding type-hints. BytesIO.write() does not accept an int, which is always the result of subscripting a bytearray. There does not seem to be any unit test coverage here.

https://github.com/aiven/karapace/blob/0d0ede8edbba65cc944bb5fbc5df28fdfcdd3bd3/karapace/protobuf/encoding_variants.py#L48

>>> from karapace.protobuf.encoding_variants import *
>>> b = BytesIO()
>>> write_varint(b, 123)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/anton/aiven/karapace/karapace/protobuf/encoding_variants.py", line 65, in write_varint
    bio.write(bytearray(to_write)[0])
TypeError: a bytes-like object is required, not 'int'

Not entirely clear what to do about this as it indicates that quite a lot of code is unused, i.e. if this breakage isn't affecting functionality.

aiven-anton commented 1 year ago

Tests in this PR encodes this failure as well as other oddities in the same module: https://github.com/aiven/karapace/pull/653/files