Package: src:python-sdjson; Maintainer for src:python-sdjson is Debian Python Team <team+python@tracker.debian.org>;
Reported by: Stefano Rivera <stefanor@debian.org>
Date: Thu, 19 Sep 2024 15:07:34 UTC
Severity: serious
Found in version python-sdjson/0.5.0-1
Fixed in version python-sdjson/0.5.0-3
Done: Colin Watson <cjwatson@debian.org>
Forwarded to https://github.com/domdfcoding/singledispatch-json/issues/55
Reply or subscribe to this bug.
View this report as an mbox folder, status mbox, maintainer mbox
Report forwarded
to debian-bugs-dist@lists.debian.org, Debian Python Team <team+python@tracker.debian.org>
:
Bug#1082269
; Package src:python-sdjson
.
(Thu, 19 Sep 2024 15:07:35 GMT) (full text, mbox, link).
Acknowledgement sent
to Stefano Rivera <stefanor@debian.org>
:
New Bug report received and forwarded. Copy sent to Debian Python Team <team+python@tracker.debian.org>
.
(Thu, 19 Sep 2024 15:07:35 GMT) (full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
Source: python-sdjson Version: 0.5.0-1 Severity: normal User: debian-python@lists.debian.org Usertags: python3.13 This package failed build from source when test-built against a version of python3-defaults that includes 3.13 as a supported version. To reproduce this issue, build against python3-defaults (python3-all-dev etc.) from Debian experimental. What's new in Python 3.13: https://docs.python.org/3.13/whatsnew/3.13.html Log snippet: dh_auto_test -O--buildsystem=pybuild I: pybuild pybuild:308: ln -s test_overloading_ tests/test_overloading I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_sdjson/build; python3.13 -m pytest -v --ignore=tests/test_protocols.py [1m============================= test session starts ==============================[0m platform linux -- Python 3.13.0rc2, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13 cachedir: .pytest_cache Test session started at 07:47:54 rootdir: /<<PKGBUILDDIR>> configfile: tox.ini plugins: regressions-2.5.0+ds, timeout-2.3.1, rerunfailures-12.0, datadir-1.4.1+ds, typeguard-4.3.0, cov-5.0.0 timeout: 300.0s timeout method: signal timeout func_only: False [1mcollecting ... [0mcollected 154 items tests/stdlib_tests/test_decode.py::test_decimal [32mPASSED[0m[32m [ 0%][0m tests/stdlib_tests/test_decode.py::test_float [32mPASSED[0m[32m [ 1%][0m tests/stdlib_tests/test_decode.py::test_empty_objects [32mPASSED[0m[32m [ 1%][0m tests/stdlib_tests/test_decode.py::test_object_pairs_hook [32mPASSED[0m[32m [ 2%][0m tests/stdlib_tests/test_decode.py::test_decoder_optimizations [32mPASSED[0m[32m [ 3%][0m tests/stdlib_tests/test_decode.py::test_keys_reuse [32mPASSED[0m[32m [ 3%][0m tests/stdlib_tests/test_decode.py::test_extra_data [32mPASSED[0m[32m [ 4%][0m tests/stdlib_tests/test_decode.py::test_invalid_escape [32mPASSED[0m[32m [ 5%][0m tests/stdlib_tests/test_decode.py::test_invalid_input_type [32mPASSED[0m[32m [ 5%][0m tests/stdlib_tests/test_decode.py::test_string_with_utf8_bom [32mPASSED[0m[32m [ 6%][0m tests/stdlib_tests/test_decode.py::test_negative_index [32mPASSED[0m[32m [ 7%][0m tests/stdlib_tests/test_default.py::test_default [32mPASSED[0m[32m [ 7%][0m tests/stdlib_tests/test_dump.py::test_dump [32mPASSED[0m[32m [ 8%][0m tests/stdlib_tests/test_dump.py::test_dumps [32mPASSED[0m[32m [ 9%][0m tests/stdlib_tests/test_dump.py::test_dump_skipkeys [32mPASSED[0m[32m [ 9%][0m tests/stdlib_tests/test_dump.py::test_encode_truefalse[data0-{"false": true, "true": false}] [32mPASSED[0m[32m [ 10%][0m tests/stdlib_tests/test_dump.py::test_encode_truefalse[data1-{"false": 1, "2": 3.0, "4.0": 5, "6": true}] [32mPASSED[0m[32m [ 11%][0m tests/stdlib_tests/test_dump.py::test_encode_mutated [32mPASSED[0m[32m [ 11%][0m tests/stdlib_tests/test_dump.py::test_encode_evil_dict [32mPASSED[0m[32m [ 12%][0m tests/stdlib_tests/test_encode_basestring_ascii.py::test_ordered_dict [32mPASSED[0m[32m [ 12%][0m tests/stdlib_tests/test_encode_basestring_ascii.py::test_sorted_dict [32mPASSED[0m[32m [ 13%][0m tests/stdlib_tests/test_enum.py::test_floats [32mPASSED[0m[32m [ 14%][0m tests/stdlib_tests/test_enum.py::test_weird_floats [32mPASSED[0m[32m [ 14%][0m tests/stdlib_tests/test_enum.py::test_ints [32mPASSED[0m[32m [ 15%][0m tests/stdlib_tests/test_enum.py::test_list [32mPASSED[0m[32m [ 16%][0m tests/stdlib_tests/test_enum.py::test_dict_keys [32mPASSED[0m[32m [ 16%][0m tests/stdlib_tests/test_enum.py::test_dict_values [32mPASSED[0m[32m [ 17%][0m tests/stdlib_tests/test_fail.py::test_failures [32mPASSED[0m[32m [ 18%][0m tests/stdlib_tests/test_fail.py::test_non_string_keys_dict [32mPASSED[0m[32m [ 18%][0m tests/stdlib_tests/test_fail.py::test_not_serializable [32mPASSED[0m[32m [ 19%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[-Expecting value-0] [32mPASSED[0m[32m [ 20%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[[-Expecting value-1] [32mPASSED[0m[32m [ 20%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[[42-Expecting ',' delimiter-3] [32mPASSED[0m[32m [ 21%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[[42,-Expecting value-4] [32mPASSED[0m[32m [ 22%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[["-Unterminated string starting at-1] [32mPASSED[0m[32m [ 22%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[["spam-Unterminated string starting at-1] [32mPASSED[0m[32m [ 23%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[["spam"-Expecting ',' delimiter-7] [32mPASSED[0m[32m [ 24%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[["spam",-Expecting value-8] [32mPASSED[0m[32m [ 24%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{-Expecting property name enclosed in double quotes-1] [32mPASSED[0m[32m [ 25%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"-Unterminated string starting at-1] [32mPASSED[0m[32m [ 25%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam-Unterminated string starting at-1] [32mPASSED[0m[32m [ 26%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam"-Expecting ':' delimiter-7] [32mPASSED[0m[32m [ 27%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":-Expecting value-8] [32mPASSED[0m[32m [ 27%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42-Expecting ',' delimiter-10] [32mPASSED[0m[32m [ 28%][0m tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42,-Expecting property name enclosed in double quotes-11] [32mPASSED[0m[32m [ 29%][0m tests/stdlib_tests/test_fail.py::test_truncated_input["-Unterminated string starting at-0] [32mPASSED[0m[32m [ 29%][0m tests/stdlib_tests/test_fail.py::test_truncated_input["spam-Unterminated string starting at-0] [32mPASSED[0m[32m [ 30%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[,-Expecting value-1] [32mPASSED[0m[32m [ 31%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[}-Expecting value-9] [32mPASSED[0m[32m [ 31%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[42:-Expecting ',' delimiter-3] [32mPASSED[0m[32m [ 32%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[42 "spam"-Expecting ',' delimiter-4] [32mPASSED[0m[32m [ 33%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[42,]-Expecting value-4] [31mFAILED[0m[31m [ 33%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[42}-Expecting ',' delimiter-11] [32mPASSED[0m[31m [ 34%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[["]-Unterminated string starting at-1] [32mPASSED[0m[31m [ 35%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam":-Expecting ',' delimiter-7] [32mPASSED[0m[31m [ 35%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam",]-Expecting value-8] [31mFAILED[0m[31m [ 36%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{:-Expecting property name enclosed in double quotes-1] [32mPASSED[0m[31m [ 37%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{,-Expecting property name enclosed in double quotes-1] [32mPASSED[0m[31m [ 37%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{42-Expecting property name enclosed in double quotes-1] [32mPASSED[0m[31m [ 38%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[{]-Expecting property name enclosed in double quotes-2] [32mPASSED[0m[31m [ 38%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam",-Expecting ':' delimiter-7] [32mPASSED[0m[31m [ 39%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam"}-Expecting ':' delimiter-7] [32mPASSED[0m[31m [ 40%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam"]-Expecting ':' delimiter-8] [32mPASSED[0m[31m [ 40%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":}-Expecting value-8] [32mPASSED[0m[31m [ 41%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":]-Expecting value-9] [32mPASSED[0m[31m [ 42%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42 "ham"-Expecting ',' delimiter-11] [32mPASSED[0m[31m [ 42%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":42]-Expecting ',' delimiter-11] [32mPASSED[0m[31m [ 43%][0m tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11] [31mFAILED[0m[31m [ 44%][0m tests/stdlib_tests/test_fail.py::test_extra_data[[]]-Extra data-2] [32mPASSED[0m[31m [ 44%][0m tests/stdlib_tests/test_fail.py::test_extra_data[{}}-Extra data-2] [32mPASSED[0m[31m [ 45%][0m tests/stdlib_tests/test_fail.py::test_extra_data[[],[]-Extra data-2] [32mPASSED[0m[31m [ 46%][0m tests/stdlib_tests/test_fail.py::test_extra_data[{},{}-Extra data-2] [32mPASSED[0m[31m [ 46%][0m tests/stdlib_tests/test_fail.py::test_extra_data[42,"spam"-Extra data-2] [32mPASSED[0m[31m [ 47%][0m tests/stdlib_tests/test_fail.py::test_extra_data["spam",42-Extra data-6] [32mPASSED[0m[31m [ 48%][0m tests/stdlib_tests/test_fail.py::test_linecol[!-1-1-0] [32mPASSED[0m[31m [ 48%][0m tests/stdlib_tests/test_fail.py::test_linecol[ !-1-2-1] [32mPASSED[0m[31m [ 49%][0m tests/stdlib_tests/test_fail.py::test_linecol[\n!-2-1-1] [32mPASSED[0m[31m [ 50%][0m tests/stdlib_tests/test_fail.py::test_linecol[\n \n\n !-4-6-10] [32mPASSED[0m[31m [ 50%][0m tests/stdlib_tests/test_float.py::test_floats [32mPASSED[0m[31m [ 51%][0m tests/stdlib_tests/test_float.py::test_ints [32mPASSED[0m[31m [ 51%][0m tests/stdlib_tests/test_float.py::test_out_of_range [32mPASSED[0m[31m [ 52%][0m tests/stdlib_tests/test_float.py::test_allow_nan [32mPASSED[0m[31m [ 53%][0m tests/stdlib_tests/test_indent.py::test_indent [32mPASSED[0m[31m [ 53%][0m tests/stdlib_tests/test_indent.py::test_indent0 [32mPASSED[0m[31m [ 54%][0m tests/stdlib_tests/test_passes.py::test_parse_pass_1 [32mPASSED[0m[31m [ 55%][0m tests/stdlib_tests/test_passes.py::test_parse_pass_2 [32mPASSED[0m[31m [ 55%][0m tests/stdlib_tests/test_passes.py::test_parse_pass_3 [32mPASSED[0m[31m [ 56%][0m tests/stdlib_tests/test_recursion.py::test_listrecursion [32mPASSED[0m[31m [ 57%][0m tests/stdlib_tests/test_recursion.py::test_dictrecursion [32mPASSED[0m[31m [ 57%][0m tests/stdlib_tests/test_recursion.py::test_defaultrecursion [32mPASSED[0m[31m [ 58%][0m tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_decoding [32mPASSED[0m[31m [ 59%][0m tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_encoding [32mPASSED[0m[31m [ 59%][0m tests/stdlib_tests/test_recursion.py::test_endless_recursion [32mPASSED[0m[31m [ 60%][0m tests/stdlib_tests/test_separators.py::test_separators [32mPASSED[0m[31m [ 61%][0m tests/stdlib_tests/test_separators.py::test_illegal_separators [32mPASSED[0m[31m [ 61%][0m tests/stdlib_tests/test_unicode.py::test_encoding3 [32mPASSED[0m[31m [ 62%][0m tests/stdlib_tests/test_unicode.py::test_encoding4 [32mPASSED[0m[31m [ 62%][0m tests/stdlib_tests/test_unicode.py::test_encoding5 [32mPASSED[0m[31m [ 63%][0m tests/stdlib_tests/test_unicode.py::test_encoding6 [32mPASSED[0m[31m [ 64%][0m tests/stdlib_tests/test_unicode.py::test_big_unicode_encode [32mPASSED[0m[31m [ 64%][0m tests/stdlib_tests/test_unicode.py::test_big_unicode_decode [32mPASSED[0m[31m [ 65%][0m tests/stdlib_tests/test_unicode.py::test_unicode_decode [32mPASSED[0m[31m [ 66%][0m tests/stdlib_tests/test_unicode.py::test_unicode_preservation [32mPASSED[0m[31m [ 66%][0m tests/stdlib_tests/test_unicode.py::test_bytes_encode [32mPASSED[0m[31m [ 67%][0m tests/stdlib_tests/test_unicode.py::test_bytes_decode [32mPASSED[0m[31m [ 68%][0m tests/stdlib_tests/test_unicode.py::test_object_pairs_hook_with_unicode [32mPASSED[0m[31m [ 68%][0m tests/test_custom_class.py::test_custom_class [32mPASSED[0m[31m [ 69%][0m tests/test_custom_encoders.py::test_decimal_float [32mPASSED[0m[31m [ 70%][0m tests/test_custom_encoders.py::test_decimal_str [32mPASSED[0m[31m [ 70%][0m tests/test_custom_encoders.py::test_fraction_float [32mPASSED[0m[31m [ 71%][0m tests/test_custom_encoders.py::test_fraction_str [32mPASSED[0m[31m [ 72%][0m tests/test_custom_encoders.py::test_datetime_float [32mPASSED[0m[31m [ 72%][0m tests/test_custom_encoders.py::test_datetime_str [32mPASSED[0m[31m [ 73%][0m tests/test_custom_encoders.py::test_datetime_tuple [32mPASSED[0m[31m [ 74%][0m tests/test_custom_encoders.py::test_timedelta_float [32mPASSED[0m[31m [ 74%][0m tests/test_custom_encoders.py::test_date_str [32mPASSED[0m[31m [ 75%][0m tests/test_custom_encoders.py::test_date_tuple [32mPASSED[0m[31m [ 75%][0m tests/test_custom_encoders.py::test_time_float [32mPASSED[0m[31m [ 76%][0m tests/test_custom_encoders.py::test_time_str [32mPASSED[0m[31m [ 77%][0m tests/test_custom_encoders.py::test_time_tuple [32mPASSED[0m[31m [ 77%][0m tests/test_custom_encoders.py::test_named_tuple [33mXFAIL[0m (Not implement...)[31m [ 78%][0m tests/test_load.py::test_bools [32mPASSED[0m[31m [ 79%][0m tests/test_load.py::test_none [32mPASSED[0m[31m [ 79%][0m tests/test_load.py::test_int[1] [32mPASSED[0m[31m [ 80%][0m tests/test_load.py::test_int[1234] [32mPASSED[0m[31m [ 81%][0m tests/test_load.py::test_int[12340000000] [32mPASSED[0m[31m [ 81%][0m tests/test_load.py::test_int[-1] [32mPASSED[0m[31m [ 82%][0m tests/test_load.py::test_int[-1234] [32mPASSED[0m[31m [ 83%][0m tests/test_load.py::test_int[-12340000000] [32mPASSED[0m[31m [ 83%][0m tests/test_load.py::test_float[1.0] [32mPASSED[0m[31m [ 84%][0m tests/test_load.py::test_float[1234.0] [32mPASSED[0m[31m [ 85%][0m tests/test_load.py::test_float[12340000000.0] [32mPASSED[0m[31m [ 85%][0m tests/test_load.py::test_float[-1.0] [32mPASSED[0m[31m [ 86%][0m tests/test_load.py::test_float[-1234.0] [32mPASSED[0m[31m [ 87%][0m tests/test_load.py::test_float[-12340000000.0] [32mPASSED[0m[31m [ 87%][0m tests/test_load.py::test_float[1.005] [32mPASSED[0m[31m [ 88%][0m tests/test_load.py::test_float[1234.005] [32mPASSED[0m[31m [ 88%][0m tests/test_load.py::test_float[12340000000.005] [32mPASSED[0m[31m [ 89%][0m tests/test_load.py::test_float[-1.005] [32mPASSED[0m[31m [ 90%][0m tests/test_load.py::test_float[-1234.005] [32mPASSED[0m[31m [ 90%][0m tests/test_load.py::test_float[-12340000000.005] [32mPASSED[0m[31m [ 91%][0m tests/test_load.py::test_write_then_read[tuple] [32mPASSED[0m[31m [ 92%][0m tests/test_load.py::test_write_then_read[list] [32mPASSED[0m[31m [ 92%][0m tests/test_load.py::test_write_then_read[dict] [32mPASSED[0m[31m [ 93%][0m tests/test_load.py::test_write_then_read[egg and bacon-egg and bacon] [32mPASSED[0m[31m [ 94%][0m tests/test_load.py::test_write_then_read[egg sausage and bacon-egg sausage and bacon] [32mPASSED[0m[31m [ 94%][0m tests/test_load.py::test_write_then_read[egg and spam-egg and spam] [32mPASSED[0m[31m [ 95%][0m tests/test_load.py::test_write_then_read[egg bacon and spam-egg bacon and spam] [32mPASSED[0m[31m [ 96%][0m tests/test_load.py::test_dict_failure[dictionary0] [33mXFAIL[0m[31m [ 96%][0m tests/test_load.py::test_dict_failure[dictionary1] [33mXFAIL[0m[31m [ 97%][0m tests/test_load.py::test_tuple_failure [33mXFAIL[0m[31m [ 98%][0m tests/test_multiple_files.py::test_multiple_files [32mPASSED[0m[31m [ 98%][0m tests/test_overloading.py::test_overloading [32mPASSED[0m[31m [ 99%][0m tests/test_unregister.py::test_unregister [32mPASSED[0m[31m [100%][0m =================================== FAILURES =================================== [31m[1m________________ test_unexpected_data[[42,]-Expecting value-4] _________________[0m data = '[42,]', msg = 'Expecting value', idx = 4 @pytest.mark.parametrize( "data, msg, idx", [ ("[,", "Unexpected ','" if PYPY else "Expecting value", 1), ('{"spam":[}', unexpected_right_brace, 9), ("[42:", unexpected_colon, 3), ('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4), ("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4), ('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11), ('["]', "Unterminated string starting at", 1), ('["spam":', unexpected_colon, 7), ('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8), ("{:", property_name_string, 1), ("{,", property_name_string, 1), ("{42", property_name_string, 1), ("[{]", property_name_string, 2), ('{"spam",', missing_colon, 7), ('{"spam"}', missing_colon, 7), ('[{"spam"]', missing_colon, 8), ('{"spam":}', unexpected_right_brace, 8), ('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9), ( '{"spam":42 "ham"', "Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter", 11 ), ('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11), ('{"spam":42,}', property_name_string, 11), ] ) def test_unexpected_data(data: str, msg: str, idx: int): > __test_invalid_input(data, msg, idx) [1m[31mtests/stdlib_tests/test_fail.py[0m:189: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ data = '[42,]', msg = 'Expecting value', idx = 4 def __test_invalid_input(data: str, msg: str, idx: int) -> None: with pytest.raises(sdjson.JSONDecodeError) as err: sdjson.loads(data) if PYPY: assert err.value.msg.startswith(msg) # Fix for varying messages between PyPy versions else: > assert err.value.msg == msg [1m[31mE AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'[0m [1m[31mE [0m [1m[31mE - Expecting value[0m [1m[31mE + Illegal trailing comma before end of array[0m [1m[31mtests/stdlib_tests/test_fail.py[0m:116: AssertionError [31m[1m______________ test_unexpected_data[["spam",]-Expecting value-8] _______________[0m data = '["spam",]', msg = 'Expecting value', idx = 8 @pytest.mark.parametrize( "data, msg, idx", [ ("[,", "Unexpected ','" if PYPY else "Expecting value", 1), ('{"spam":[}', unexpected_right_brace, 9), ("[42:", unexpected_colon, 3), ('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4), ("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4), ('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11), ('["]', "Unterminated string starting at", 1), ('["spam":', unexpected_colon, 7), ('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8), ("{:", property_name_string, 1), ("{,", property_name_string, 1), ("{42", property_name_string, 1), ("[{]", property_name_string, 2), ('{"spam",', missing_colon, 7), ('{"spam"}', missing_colon, 7), ('[{"spam"]', missing_colon, 8), ('{"spam":}', unexpected_right_brace, 8), ('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9), ( '{"spam":42 "ham"', "Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter", 11 ), ('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11), ('{"spam":42,}', property_name_string, 11), ] ) def test_unexpected_data(data: str, msg: str, idx: int): > __test_invalid_input(data, msg, idx) [1m[31mtests/stdlib_tests/test_fail.py[0m:189: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ data = '["spam",]', msg = 'Expecting value', idx = 8 def __test_invalid_input(data: str, msg: str, idx: int) -> None: with pytest.raises(sdjson.JSONDecodeError) as err: sdjson.loads(data) if PYPY: assert err.value.msg.startswith(msg) # Fix for varying messages between PyPy versions else: > assert err.value.msg == msg [1m[31mE AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'[0m [1m[31mE [0m [1m[31mE - Expecting value[0m [1m[31mE + Illegal trailing comma before end of array[0m [1m[31mtests/stdlib_tests/test_fail.py[0m:116: AssertionError [31m[1m_ test_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11] _[0m data = '{"spam":42,}', msg = 'Expecting property name enclosed in double quotes' idx = 11 @pytest.mark.parametrize( "data, msg, idx", [ ("[,", "Unexpected ','" if PYPY else "Expecting value", 1), ('{"spam":[}', unexpected_right_brace, 9), ("[42:", unexpected_colon, 3), ('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4), ("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4), ('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11), ('["]', "Unterminated string starting at", 1), ('["spam":', unexpected_colon, 7), ('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8), ("{:", property_name_string, 1), ("{,", property_name_string, 1), ("{42", property_name_string, 1), ("[{]", property_name_string, 2), ('{"spam",', missing_colon, 7), ('{"spam"}', missing_colon, 7), ('[{"spam"]', missing_colon, 8), ('{"spam":}', unexpected_right_brace, 8), ('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9), ( '{"spam":42 "ham"', "Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter", 11 ), ('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11), ('{"spam":42,}', property_name_string, 11), ] ) def test_unexpected_data(data: str, msg: str, idx: int): > __test_invalid_input(data, msg, idx) [1m[31mtests/stdlib_tests/test_fail.py[0m:189: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ data = '{"spam":42,}', msg = 'Expecting property name enclosed in double quotes' idx = 11 def __test_invalid_input(data: str, msg: str, idx: int) -> None: with pytest.raises(sdjson.JSONDecodeError) as err: sdjson.loads(data) if PYPY: assert err.value.msg.startswith(msg) # Fix for varying messages between PyPy versions else: > assert err.value.msg == msg [1m[31mE AssertionError: assert 'Illegal trai...end of object' == 'Expecting pr...double quotes'[0m [1m[31mE [0m [1m[31mE - Expecting property name enclosed in double quotes[0m [1m[31mE + Illegal trailing comma before end of object[0m [1m[31mtests/stdlib_tests/test_fail.py[0m:116: AssertionError ============================= slowest 25 durations ============================= 0.10s call .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_unicode.py::test_unicode_decode 0.09s call .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_encoding 0.01s call .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_decoding (22 durations < 0.005s hidden. Use -vv to show these durations.) [36m[1m=========================== short test summary info ============================[0m [31mFAILED[0m tests/stdlib_tests/test_fail.py::[1mtest_unexpected_data[[42,]-Expecting value-4][0m - AssertionError: assert 'Illegal trai... end of array' == 'Expecting value' [31mFAILED[0m tests/stdlib_tests/test_fail.py::[1mtest_unexpected_data[["spam",]-Expecting value-8][0m - AssertionError: assert 'Illegal trai... end of array' == 'Expecting value' [31mFAILED[0m tests/stdlib_tests/test_fail.py::[1mtest_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11][0m - AssertionError: assert 'Illegal trai...end of object' == 'Expecting pr...do... [31m=================== [31m[1m3 failed[0m, [32m147 passed[0m, [33m4 xfailed[0m[31m in 0.61s[0m[31m ===================[0m E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_sdjson/build; python3.13 -m pytest -v --ignore=tests/test_protocols.py I: pybuild pybuild:308: ln -s test_overloading_ tests/test_overloading E: pybuild pybuild:389: test: plugin pyproject failed with: [('/<<PKGBUILDDIR>>/tests/test_overloading/test_overloading_', '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_sdjson/build/tests/test_overloading/test_overloading_', "[Errno 40] Too many levels of symbolic links: '/<<PKGBUILDDIR>>/tests/test_overloading/test_overloading_'"), ('/<<PKGBUILDDIR>>/tests/test_overloading_/test_overloading_', '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_sdjson/build/tests/test_overloading_/test_overloading_', "[Errno 40] Too many levels of symbolic links: '/<<PKGBUILDDIR>>/tests/test_overloading_/test_overloading_'")] dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 make: *** [debian/rules:11: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 2024-09-19T07:47:55Z If required, the full build log is available here (for the next 30 days): https://debusine.debian.net/artifact/788826/ This bug has been filed at "normal" severity, as we haven't started the transition to add 3.13 as a supported version, yet. This will be raised to RC as soon as that happens, hopefully well before trixie. Thanks, Stefano
Set Bug forwarded-to-address to 'https://github.com/domdfcoding/singledispatch-json/issues/55'.
Request was from Andrey Rakhmatullin <wrar@debian.org>
to control@bugs.debian.org
.
(Sun, 06 Oct 2024 12:21:02 GMT) (full text, mbox, link).
Severity set to 'serious' from 'normal'
Request was from Stefano Rivera <stefanor@debian.org>
to control@bugs.debian.org
.
(Wed, 13 Nov 2024 09:45:25 GMT) (full text, mbox, link).
Reply sent
to Colin Watson <cjwatson@debian.org>
:
You have taken responsibility.
(Wed, 13 Nov 2024 13:18:02 GMT) (full text, mbox, link).
Notification sent
to Stefano Rivera <stefanor@debian.org>
:
Bug acknowledged by developer.
(Wed, 13 Nov 2024 13:18:02 GMT) (full text, mbox, link).
Message #14 received at 1082269-close@bugs.debian.org (full text, mbox, reply):
[Message part 1 (text/plain, inline)]
Source: python-sdjson Source-Version: 0.5.0-3 Done: Colin Watson <cjwatson@debian.org> We believe that the bug you reported is fixed in the latest version of python-sdjson, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 1082269@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Colin Watson <cjwatson@debian.org> (supplier of updated python-sdjson package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Format: 1.8 Date: Wed, 13 Nov 2024 12:18:31 +0000 Source: python-sdjson Architecture: source Version: 0.5.0-3 Distribution: unstable Urgency: medium Maintainer: Debian Python Team <team+python@tracker.debian.org> Changed-By: Colin Watson <cjwatson@debian.org> Closes: 1082269 Changes: python-sdjson (0.5.0-3) unstable; urgency=medium . * Team upload. * Sacrifice version number to dgit upload issues. . python-sdjson (0.5.0-2) unstable; urgency=medium . * Team upload. * Fix tests on Python 3.13 (closes: #1082269). Checksums-Sha1: 5d1d74032ff31225c4d60be8b8ae932303b4578f 2524 python-sdjson_0.5.0-3.dsc 1bc3a83cf86390e7eb4b7e5c21b116b17f1cc1d3 9812 python-sdjson_0.5.0-3.debian.tar.xz Checksums-Sha256: 913f29d8b00742e1a559d2d92c679f69ee3401f60568edca330e5b68ac43de45 2524 python-sdjson_0.5.0-3.dsc 3bd6334b1528b2c64d76f4b929cf0c66ad33cfaefd6afee8b4dc2c1f3a7d3d29 9812 python-sdjson_0.5.0-3.debian.tar.xz Files: f89a2e3b74df85e2cdc87ca5728a5226 2524 python optional python-sdjson_0.5.0-3.dsc cee3eb67d18b39d0bfd99f7056d27d62 9812 python optional python-sdjson_0.5.0-3.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmc0mXEACgkQOTWH2X2G UAtWOw//eUhi5sSbL0b7ZXf+qgYf3pm/9TyYJKn102K6peW1JFGz7JzMyb5N70VE NOkGCi9DWFNFC7LnTrcaszrGjmtqppo2bo/YuER6e23Q3BiQ51TdlkyiVtBL7UIa ClvL+rTGZHpPsDT10HvFUgKuhj7E5ObwunOgVolFlCUNdY6U53ICH80KjiKBY5Jf becDVz4Tv9d6bfOxCi7z/uyEi+0eGRDv8+Z5SyGGaZMmuegoCxDP0AKAmPNoUQvj IdXrlzpttpN8nDPMvwY2Ji757r4Q8dkEVxReklNPYIeEClflKyu/PrH9IBr8tto+ s1HziKByrfzad1MfIy/DLGkaCpkQeWe84v8ywB/G2qYyz/BNuiy4mcNihQyoUT9k gNN1oPAHOdKDXq7Q3EDpFIsPehpJICDjhgE7deSWwf0SoKUdbvnv+qxYeogxwn2E 2RxLziTUEnGplkf2C2b5N1xX+lp/vww5THRikUTmOXUNkiph4ikPsDH4MIOaTwVb MtPyHeO7ndgOBTEMwvhcFxT2JE638fSTyg5HX/5HqCZel0scxcun6uKezXjEhxag 0/HchG7nIgHh1YFx0bFzGVIuHtb1WeVnpvkMVim6HDZPfR2FKRWCOYI9chQemKR4 XzK0AKa7t5MrwDDbEfqMUr+inSKbd7GrZDbw32ZPNkPs4N0tdLc= =Ly7f -----END PGP SIGNATURE-----
[Message part 2 (application/pgp-signature, inline)]
Send a report that this bug log contains spam.
Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.
Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.