Source: python-sdjson
Version: 0.5.0-1
Severity: normal
User: [email protected]
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
============================= test session starts 
==============================
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
collecting ... collected 154 items

tests/stdlib_tests/test_decode.py::test_decimal PASSED            
       [  0%]
tests/stdlib_tests/test_decode.py::test_float PASSED              
       [  1%]
tests/stdlib_tests/test_decode.py::test_empty_objects PASSED      
       [  1%]
tests/stdlib_tests/test_decode.py::test_object_pairs_hook PASSED  
       [  2%]
tests/stdlib_tests/test_decode.py::test_decoder_optimizations 
PASSED     [  3%]
tests/stdlib_tests/test_decode.py::test_keys_reuse PASSED         
       [  3%]
tests/stdlib_tests/test_decode.py::test_extra_data PASSED         
       [  4%]
tests/stdlib_tests/test_decode.py::test_invalid_escape PASSED     
       [  5%]
tests/stdlib_tests/test_decode.py::test_invalid_input_type PASSED 
       [  5%]
tests/stdlib_tests/test_decode.py::test_string_with_utf8_bom 
PASSED      [  6%]
tests/stdlib_tests/test_decode.py::test_negative_index PASSED     
       [  7%]
tests/stdlib_tests/test_default.py::test_default PASSED           
       [  7%]
tests/stdlib_tests/test_dump.py::test_dump PASSED                 
       [  8%]
tests/stdlib_tests/test_dump.py::test_dumps PASSED                
       [  9%]
tests/stdlib_tests/test_dump.py::test_dump_skipkeys PASSED        
       [  9%]
tests/stdlib_tests/test_dump.py::test_encode_truefalse[data0-{"false": true, 
"true": false}] PASSED [ 10%]
tests/stdlib_tests/test_dump.py::test_encode_truefalse[data1-{"false": 1, "2": 
3.0, "4.0": 5, "6": true}] PASSED [ 11%]
tests/stdlib_tests/test_dump.py::test_encode_mutated PASSED       
       [ 11%]
tests/stdlib_tests/test_dump.py::test_encode_evil_dict PASSED     
       [ 12%]
tests/stdlib_tests/test_encode_basestring_ascii.py::test_ordered_dict 
PASSED [ 12%]
tests/stdlib_tests/test_encode_basestring_ascii.py::test_sorted_dict 
PASSED [ 13%]
tests/stdlib_tests/test_enum.py::test_floats PASSED               
       [ 14%]
tests/stdlib_tests/test_enum.py::test_weird_floats PASSED         
       [ 14%]
tests/stdlib_tests/test_enum.py::test_ints PASSED                 
       [ 15%]
tests/stdlib_tests/test_enum.py::test_list PASSED                 
       [ 16%]
tests/stdlib_tests/test_enum.py::test_dict_keys PASSED            
       [ 16%]
tests/stdlib_tests/test_enum.py::test_dict_values PASSED          
       [ 17%]
tests/stdlib_tests/test_fail.py::test_failures PASSED             
       [ 18%]
tests/stdlib_tests/test_fail.py::test_non_string_keys_dict PASSED 
       [ 18%]
tests/stdlib_tests/test_fail.py::test_not_serializable PASSED     
       [ 19%]
tests/stdlib_tests/test_fail.py::test_truncated_input[-Expecting value-0] 
PASSED [ 20%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[-Expecting value-1] 
PASSED [ 20%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[42-Expecting ',' 
delimiter-3] PASSED [ 21%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[42,-Expecting value-4] 
PASSED [ 22%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["-Unterminated string 
starting at-1] PASSED [ 22%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam-Unterminated 
string starting at-1] PASSED [ 23%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam"-Expecting ',' 
delimiter-7] PASSED [ 24%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam",-Expecting 
value-8] PASSED [ 24%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{-Expecting property name 
enclosed in double quotes-1] PASSED [ 25%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"-Unterminated string 
starting at-1] PASSED [ 25%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam-Unterminated 
string starting at-1] PASSED [ 26%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam"-Expecting ':' 
delimiter-7] PASSED [ 27%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":-Expecting 
value-8] PASSED [ 27%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42-Expecting ',' 
delimiter-10] PASSED [ 28%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42,-Expecting 
property name enclosed in double quotes-11] PASSED [ 29%]
tests/stdlib_tests/test_fail.py::test_truncated_input["-Unterminated string 
starting at-0] PASSED [ 29%]
tests/stdlib_tests/test_fail.py::test_truncated_input["spam-Unterminated string 
starting at-0] PASSED [ 30%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[,-Expecting value-1] 
PASSED [ 31%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[}-Expecting 
value-9] PASSED [ 31%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42:-Expecting ',' 
delimiter-3] PASSED [ 32%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42 "spam"-Expecting ',' 
delimiter-4] PASSED [ 33%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42,]-Expecting value-4] 
FAILED [ 33%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[42}-Expecting 
',' delimiter-11] PASSED [ 34%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["]-Unterminated string 
starting at-1] PASSED [ 35%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam":-Expecting ',' 
delimiter-7] PASSED [ 35%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam",]-Expecting 
value-8] FAILED [ 36%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{:-Expecting property 
name enclosed in double quotes-1] PASSED [ 37%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{,-Expecting property 
name enclosed in double quotes-1] PASSED [ 37%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{42-Expecting property 
name enclosed in double quotes-1] PASSED [ 38%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{]-Expecting property 
name enclosed in double quotes-2] PASSED [ 38%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam",-Expecting ':' 
delimiter-7] PASSED [ 39%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam"}-Expecting ':' 
delimiter-7] PASSED [ 40%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam"]-Expecting ':' 
delimiter-8] PASSED [ 40%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":}-Expecting 
value-8] PASSED [ 41%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":]-Expecting 
value-9] PASSED [ 42%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42 
"ham"-Expecting ',' delimiter-11] PASSED [ 42%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":42]-Expecting 
',' delimiter-11] PASSED [ 43%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42,}-Expecting 
property name enclosed in double quotes-11] FAILED [ 44%]
tests/stdlib_tests/test_fail.py::test_extra_data[[]]-Extra data-2] 
PASSED [ 44%]
tests/stdlib_tests/test_fail.py::test_extra_data[{}}-Extra data-2] 
PASSED [ 45%]
tests/stdlib_tests/test_fail.py::test_extra_data[[],[]-Extra data-2] 
PASSED [ 46%]
tests/stdlib_tests/test_fail.py::test_extra_data[{},{}-Extra data-2] 
PASSED [ 46%]
tests/stdlib_tests/test_fail.py::test_extra_data[42,"spam"-Extra data-2] 
PASSED [ 47%]
tests/stdlib_tests/test_fail.py::test_extra_data["spam",42-Extra data-6] 
PASSED [ 48%]
tests/stdlib_tests/test_fail.py::test_linecol[!-1-1-0] PASSED     
       [ 48%]
tests/stdlib_tests/test_fail.py::test_linecol[ !-1-2-1] PASSED    
       [ 49%]
tests/stdlib_tests/test_fail.py::test_linecol[\n!-2-1-1] PASSED   
       [ 50%]
tests/stdlib_tests/test_fail.py::test_linecol[\n  \n\n     !-4-6-10] 
PASSED [ 50%]
tests/stdlib_tests/test_float.py::test_floats PASSED              
       [ 51%]
tests/stdlib_tests/test_float.py::test_ints PASSED                
       [ 51%]
tests/stdlib_tests/test_float.py::test_out_of_range PASSED        
       [ 52%]
tests/stdlib_tests/test_float.py::test_allow_nan PASSED           
       [ 53%]
tests/stdlib_tests/test_indent.py::test_indent PASSED             
       [ 53%]
tests/stdlib_tests/test_indent.py::test_indent0 PASSED            
       [ 54%]
tests/stdlib_tests/test_passes.py::test_parse_pass_1 PASSED       
       [ 55%]
tests/stdlib_tests/test_passes.py::test_parse_pass_2 PASSED       
       [ 55%]
tests/stdlib_tests/test_passes.py::test_parse_pass_3 PASSED       
       [ 56%]
tests/stdlib_tests/test_recursion.py::test_listrecursion PASSED   
       [ 57%]
tests/stdlib_tests/test_recursion.py::test_dictrecursion PASSED   
       [ 57%]
tests/stdlib_tests/test_recursion.py::test_defaultrecursion 
PASSED       [ 58%]
tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_decoding 
PASSED [ 59%]
tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_encoding 
PASSED [ 59%]
tests/stdlib_tests/test_recursion.py::test_endless_recursion 
PASSED      [ 60%]
tests/stdlib_tests/test_separators.py::test_separators PASSED     
       [ 61%]
tests/stdlib_tests/test_separators.py::test_illegal_separators 
PASSED    [ 61%]
tests/stdlib_tests/test_unicode.py::test_encoding3 PASSED         
       [ 62%]
tests/stdlib_tests/test_unicode.py::test_encoding4 PASSED         
       [ 62%]
tests/stdlib_tests/test_unicode.py::test_encoding5 PASSED         
       [ 63%]
tests/stdlib_tests/test_unicode.py::test_encoding6 PASSED         
       [ 64%]
tests/stdlib_tests/test_unicode.py::test_big_unicode_encode 
PASSED       [ 64%]
tests/stdlib_tests/test_unicode.py::test_big_unicode_decode 
PASSED       [ 65%]
tests/stdlib_tests/test_unicode.py::test_unicode_decode PASSED    
       [ 66%]
tests/stdlib_tests/test_unicode.py::test_unicode_preservation 
PASSED     [ 66%]
tests/stdlib_tests/test_unicode.py::test_bytes_encode PASSED      
       [ 67%]
tests/stdlib_tests/test_unicode.py::test_bytes_decode PASSED      
       [ 68%]
tests/stdlib_tests/test_unicode.py::test_object_pairs_hook_with_unicode 
PASSED [ 68%]
tests/test_custom_class.py::test_custom_class PASSED              
       [ 69%]
tests/test_custom_encoders.py::test_decimal_float PASSED          
       [ 70%]
tests/test_custom_encoders.py::test_decimal_str PASSED            
       [ 70%]
tests/test_custom_encoders.py::test_fraction_float PASSED         
       [ 71%]
tests/test_custom_encoders.py::test_fraction_str PASSED           
       [ 72%]
tests/test_custom_encoders.py::test_datetime_float PASSED         
       [ 72%]
tests/test_custom_encoders.py::test_datetime_str PASSED           
       [ 73%]
tests/test_custom_encoders.py::test_datetime_tuple PASSED         
       [ 74%]
tests/test_custom_encoders.py::test_timedelta_float PASSED        
       [ 74%]
tests/test_custom_encoders.py::test_date_str PASSED               
       [ 75%]
tests/test_custom_encoders.py::test_date_tuple PASSED             
       [ 75%]
tests/test_custom_encoders.py::test_time_float PASSED             
       [ 76%]
tests/test_custom_encoders.py::test_time_str PASSED               
       [ 77%]
tests/test_custom_encoders.py::test_time_tuple PASSED             
       [ 77%]
tests/test_custom_encoders.py::test_named_tuple XFAIL (Not 
implement...) [ 78%]
tests/test_load.py::test_bools PASSED                             
       [ 79%]
tests/test_load.py::test_none PASSED                              
       [ 79%]
tests/test_load.py::test_int[1] PASSED                            
       [ 80%]
tests/test_load.py::test_int[1234] PASSED                         
       [ 81%]
tests/test_load.py::test_int[12340000000] PASSED                  
       [ 81%]
tests/test_load.py::test_int[-1] PASSED                           
       [ 82%]
tests/test_load.py::test_int[-1234] PASSED                        
       [ 83%]
tests/test_load.py::test_int[-12340000000] PASSED                 
       [ 83%]
tests/test_load.py::test_float[1.0] PASSED                        
       [ 84%]
tests/test_load.py::test_float[1234.0] PASSED                     
       [ 85%]
tests/test_load.py::test_float[12340000000.0] PASSED              
       [ 85%]
tests/test_load.py::test_float[-1.0] PASSED                       
       [ 86%]
tests/test_load.py::test_float[-1234.0] PASSED                    
       [ 87%]
tests/test_load.py::test_float[-12340000000.0] PASSED             
       [ 87%]
tests/test_load.py::test_float[1.005] PASSED                      
       [ 88%]
tests/test_load.py::test_float[1234.005] PASSED                   
       [ 88%]
tests/test_load.py::test_float[12340000000.005] PASSED            
       [ 89%]
tests/test_load.py::test_float[-1.005] PASSED                     
       [ 90%]
tests/test_load.py::test_float[-1234.005] PASSED                  
       [ 90%]
tests/test_load.py::test_float[-12340000000.005] PASSED           
       [ 91%]
tests/test_load.py::test_write_then_read[tuple] PASSED            
       [ 92%]
tests/test_load.py::test_write_then_read[list] PASSED             
       [ 92%]
tests/test_load.py::test_write_then_read[dict] PASSED             
       [ 93%]
tests/test_load.py::test_write_then_read[egg and bacon-egg and bacon] 
PASSED [ 94%]
tests/test_load.py::test_write_then_read[egg sausage and bacon-egg sausage and 
bacon] PASSED [ 94%]
tests/test_load.py::test_write_then_read[egg and spam-egg and spam] 
PASSED [ 95%]
tests/test_load.py::test_write_then_read[egg bacon and spam-egg bacon and spam] 
PASSED [ 96%]
tests/test_load.py::test_dict_failure[dictionary0] XFAIL          
       [ 96%]
tests/test_load.py::test_dict_failure[dictionary1] XFAIL          
       [ 97%]
tests/test_load.py::test_tuple_failure XFAIL                      
       [ 98%]
tests/test_multiple_files.py::test_multiple_files PASSED          
       [ 98%]
tests/test_overloading.py::test_overloading PASSED                
       [ 99%]
tests/test_unregister.py::test_unregister PASSED                  
       [100%]

=================================== FAILURES ===================================
________________ test_unexpected_data[[42,]-Expecting value-4] 
_________________

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)

tests/stdlib_tests/test_fail.py: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
E     AssertionError: assert 'Illegal trai... end of array' == 
'Expecting value'
E       
E       - Expecting value
E       + Illegal trailing comma before end of array

tests/stdlib_tests/test_fail.py:116: AssertionError
______________ test_unexpected_data[["spam",]-Expecting value-8] 
_______________

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)

tests/stdlib_tests/test_fail.py: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
E     AssertionError: assert 'Illegal trai... end of array' == 
'Expecting value'
E       
E       - Expecting value
E       + Illegal trailing comma before end of array

tests/stdlib_tests/test_fail.py:116: AssertionError
_ test_unexpected_data[{"spam":42,}-Expecting property name enclosed 
in double quotes-11] _

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)

tests/stdlib_tests/test_fail.py: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
E     AssertionError: assert 'Illegal trai...end of object' == 
'Expecting pr...double quotes'
E       
E       - Expecting property name enclosed in double quotes
E       + Illegal trailing comma before end of object

tests/stdlib_tests/test_fail.py: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.)
=========================== short test summary info 
============================
FAILED 
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42,]-Expecting 
value-4] - AssertionError: assert 'Illegal trai... end of array' == 
'Expecting value'
FAILED 
tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam",]-Expecting 
value-8] - AssertionError: assert 'Illegal trai... end of array' == 
'Expecting value'
FAILED 
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42,}-Expecting
 property name enclosed in double quotes-11] - AssertionError: assert 
'Illegal trai...end of object' == 'Expecting pr...do...
=================== 3 failed, 147 passed, 4 
xfailed in 0.61s ===================
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

Reply via email to