Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-YAML-Syck for openSUSE:Factory checked in at 2026-06-08 14:18:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-YAML-Syck (Old) and /work/SRC/openSUSE:Factory/.perl-YAML-Syck.new.2375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-YAML-Syck" Mon Jun 8 14:18:57 2026 rev:43 rq:1357777 version:1.460.0 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-YAML-Syck/perl-YAML-Syck.changes 2026-05-23 23:27:58.338169356 +0200 +++ /work/SRC/openSUSE:Factory/.perl-YAML-Syck.new.2375/perl-YAML-Syck.changes 2026-06-08 14:24:56.212103698 +0200 @@ -1,0 +2,22 @@ +Mon May 25 09:09:17 UTC 2026 - Tina Müller <[email protected]> + +- updated to 1.460.0 (1.46) + see /usr/share/doc/packages/perl-YAML-Syck/Changes + + 1.46 May 24 2026 + + [Bug Fixes] + - Fix: preserve string nature of numeric-looking values in Dump; pure + strings (POK only, no IOK/NOK) are now quoted to maintain roundtrip + fidelity (GH #199, PR #200) + - Fix: accept trailing commas in flow sequences and mappings + ([a, b,] and {a: 1,}), valid per YAML 1.0/1.1/1.2 spec + (GH #195, PR #196) + + [Maintenance] + - CI: upgrade install-with-cpm to v2 for compatibility with Perl + versions prior to 5.24 in perldocker containers (GH #197, PR #198) + - Clean up MANIFEST.SKIP: add #!include_default, remove redundant + entries, exclude .claude/ from distribution + +------------------------------------------------------------------- Old: ---- YAML-Syck-1.45.tar.gz New: ---- YAML-Syck-1.46.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-YAML-Syck.spec ++++++ --- /var/tmp/diff_new_pack.GlVQPR/_old 2026-06-08 14:24:56.836129575 +0200 +++ /var/tmp/diff_new_pack.GlVQPR/_new 2026-06-08 14:24:56.836129575 +0200 @@ -18,10 +18,10 @@ %define cpan_name YAML-Syck Name: perl-YAML-Syck -Version: 1.450.0 +Version: 1.460.0 Release: 0 -# 1.45 -> normalize -> 1.450.0 -%define cpan_version 1.45 +# 1.46 -> normalize -> 1.460.0 +%define cpan_version 1.46 License: MIT Summary: Perl YAML loader and dumper URL: https://metacpan.org/release/%{cpan_name} ++++++ YAML-Syck-1.45.tar.gz -> YAML-Syck-1.46.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/Changes new/YAML-Syck-1.46/Changes --- old/YAML-Syck-1.45/Changes 2026-04-23 17:14:33.251486624 +0200 +++ new/YAML-Syck-1.46/Changes 2026-05-25 05:02:04.000000000 +0200 @@ -1,3 +1,19 @@ +1.46 May 24 2026 + + [Bug Fixes] + - Fix: preserve string nature of numeric-looking values in Dump; pure + strings (POK only, no IOK/NOK) are now quoted to maintain roundtrip + fidelity (GH #199, PR #200) + - Fix: accept trailing commas in flow sequences and mappings + ([a, b,] and {a: 1,}), valid per YAML 1.0/1.1/1.2 spec + (GH #195, PR #196) + + [Maintenance] + - CI: upgrade install-with-cpm to v2 for compatibility with Perl + versions prior to 5.24 in perldocker containers (GH #197, PR #198) + - Clean up MANIFEST.SKIP: add #!include_default, remove redundant + entries, exclude .claude/ from distribution + 1.45 Apr 23 2026 [Bug Fixes] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/MANIFEST new/YAML-Syck-1.46/MANIFEST --- old/YAML-Syck-1.45/MANIFEST 2026-04-23 17:16:55.000000000 +0200 +++ new/YAML-Syck-1.46/MANIFEST 2026-05-25 05:06:01.000000000 +0200 @@ -46,10 +46,12 @@ t/gh-dumpcode-prototype.t t/gh-load-list-context.t t/gh-loadfile-dumpfile-errors.t +t/gh-199-preserve-string-type.t t/gh-negative-base60.t t/gh-negative-float-base60.t t/gh-negative-hex-oct.t t/gh-positive-hex-oct.t +t/gh-trailing-comma.t t/json-basic.t t/json-circular-ref.t t/json-crlf.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/META.json new/YAML-Syck-1.46/META.json --- old/YAML-Syck-1.45/META.json 2026-04-23 17:16:55.000000000 +0200 +++ new/YAML-Syck-1.46/META.json 2026-05-25 05:06:01.000000000 +0200 @@ -39,7 +39,7 @@ "provides" : { "JSON::Syck" : { "file" : "lib/JSON/Syck.pm", - "version" : "1.45" + "version" : "1.46" }, "YAML::Dumper::Syck" : { "file" : "lib/YAML/Dumper/Syck.pm" @@ -49,7 +49,7 @@ }, "YAML::Syck" : { "file" : "lib/YAML/Syck.pm", - "version" : "1.45" + "version" : "1.46" } }, "release_status" : "stable", @@ -67,6 +67,6 @@ "web" : "https://github.com/toddr/YAML-Syck" } }, - "version" : "1.45", + "version" : "1.46", "x_serialization_backend" : "JSON::PP version 4.16" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/META.yml new/YAML-Syck-1.46/META.yml --- old/YAML-Syck-1.45/META.yml 2026-04-23 17:16:55.000000000 +0200 +++ new/YAML-Syck-1.46/META.yml 2026-05-25 05:06:01.000000000 +0200 @@ -20,14 +20,14 @@ provides: JSON::Syck: file: lib/JSON/Syck.pm - version: '1.45' + version: '1.46' YAML::Dumper::Syck: file: lib/YAML/Dumper/Syck.pm YAML::Loader::Syck: file: lib/YAML/Loader/Syck.pm YAML::Syck: file: lib/YAML/Syck.pm - version: '1.45' + version: '1.46' requires: perl: '5.006' resources: @@ -35,5 +35,5 @@ homepage: https://github.com/toddr/YAML-Syck license: https://dev.perl.org/licenses/ repository: https://github.com/toddr/YAML-Syck.git -version: '1.45' +version: '1.46' x_serialization_backend: 'CPAN::Meta::YAML version 0.020' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/gram.c new/YAML-Syck-1.46/gram.c --- old/YAML-Syck-1.45/gram.c 2026-03-25 23:32:12.000000000 +0100 +++ new/YAML-Syck-1.46/gram.c 2026-05-24 18:39:20.000000000 +0200 @@ -500,7 +500,7 @@ /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 29 /* YYNRULES -- Number of rules. */ -#define YYNRULES 80 +#define YYNRULES 82 /* YYNSTATES -- Number of states. */ #define YYNSTATES 126 @@ -557,10 +557,10 @@ 146, 158, 159, 163, 167, 171, 172, 176, 181, 186, 194, 198, 206, 219, 220, 227, 228, 229, 230, 231, 235, 239, 246, 253, 258, 263, 268, 273, 277, 284, - 288, 293, 300, 304, 311, 315, 323, 324, 328, 333, - 341, 346, 351, 356, 361, 365, 372, 373, 380, 384, - 393, 394, 406, 414, 421, 430, 434, 441, 442, 452, - 459 + 288, 293, 300, 304, 311, 315, 320, 327, 328, 332, + 337, 345, 350, 355, 360, 365, 369, 376, 377, 384, + 388, 397, 398, 410, 418, 425, 434, 438, 445, 446, + 453, 460, 467 }; #endif @@ -645,15 +645,15 @@ 21, 0, 0, 0, 2, 6, 0, 5, 7, 36, 37, 38, 39, 10, 30, 8, 27, 9, 28, 11, 29, 16, 16, 16, 16, 13, 3, 14, 16, 53, - 56, 0, 54, 57, 76, 79, 80, 0, 77, 1, - 0, 0, 0, 22, 16, 0, 0, 66, 49, 0, - 0, 0, 0, 70, 0, 20, 18, 19, 17, 16, - 16, 16, 0, 16, 52, 0, 0, 75, 24, 0, - 48, 65, 0, 44, 61, 0, 46, 63, 42, 0, - 25, 0, 12, 34, 23, 40, 41, 51, 58, 16, - 59, 73, 15, 74, 55, 78, 0, 0, 0, 0, - 0, 66, 47, 64, 43, 60, 45, 62, 67, 26, - 50, 68, 69, 71, 72, 0 + 57, 0, 54, 58, 77, 81, 82, 0, 78, 1, + 0, 0, 0, 22, 16, 0, 0, 67, 49, 0, + 0, 0, 0, 71, 0, 20, 18, 19, 17, 16, + 16, 16, 0, 16, 52, 56, 80, 76, 24, 0, + 48, 66, 0, 44, 62, 0, 46, 64, 42, 0, + 25, 0, 12, 34, 23, 40, 41, 51, 59, 16, + 60, 74, 15, 75, 55, 79, 0, 0, 0, 0, + 0, 67, 47, 65, 43, 61, 45, 63, 68, 26, + 50, 69, 70, 72, 73, 0 }; /* YYPGOTO[NTERM-NUM]. */ @@ -788,10 +788,10 @@ 28, 29, 29, 30, 31, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 35, 35, 36, 37, 37, 37, 37, 37, 37, 38, - 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, - 43, 43, 43, 43, 43, 43, 44, 44, 45, 46, - 47, 47, 47, 47, 48, 49, 49, 50, 50, 51, - 51 + 38, 38, 39, 39, 40, 40, 40, 41, 41, 42, + 42, 43, 43, 43, 43, 43, 43, 44, 44, 45, + 46, 47, 47, 47, 47, 48, 49, 49, 50, 50, + 50, 51, 51 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -802,10 +802,10 @@ 2, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 3, 2, 3, 2, 3, 2, 3, 2, 1, - 3, 2, 3, 2, 1, 3, 1, 1, 3, 3, - 3, 2, 3, 2, 3, 2, 1, 3, 1, 3, - 1, 3, 3, 2, 3, 3, 2, 1, 3, 1, - 1 + 3, 2, 3, 2, 1, 3, 2, 1, 1, 3, + 3, 3, 2, 3, 2, 3, 2, 1, 3, 1, + 3, 1, 3, 3, 2, 3, 3, 2, 1, 3, + 2, 1, 1 }; @@ -1624,96 +1624,104 @@ #line 1625 "gram.c" break; - case 58: /* implicit_map: indent_open top_imp_map indent_end */ -#line 329 "gram.y" + case 56: /* in_inline_seq: in_inline_seq ',' */ +#line 321 "gram.y" + { + (yyval.nodeData) = (yyvsp[-1].nodeData); + } +#line 1633 "gram.c" + break; + + case 59: /* implicit_map: indent_open top_imp_map indent_end */ +#line 333 "gram.y" { apply_seq_in_map( (SyckParser *)parser, (yyvsp[-1].nodeData) ); (yyval.nodeData) = (yyvsp[-1].nodeData); } -#line 1634 "gram.c" +#line 1642 "gram.c" break; - case 59: /* implicit_map: indent_open in_implicit_map indent_end */ -#line 334 "gram.y" + case 60: /* implicit_map: indent_open in_implicit_map indent_end */ +#line 338 "gram.y" { apply_seq_in_map( (SyckParser *)parser, (yyvsp[-1].nodeData) ); (yyval.nodeData) = (yyvsp[-1].nodeData); } -#line 1643 "gram.c" +#line 1651 "gram.c" break; - case 60: /* top_imp_map: YAML_TRANSFER indent_sep in_implicit_map */ -#line 342 "gram.y" + case 61: /* top_imp_map: YAML_TRANSFER indent_sep in_implicit_map */ +#line 346 "gram.y" { syck_add_transfer( (yyvsp[-2].name), (yyvsp[0].nodeData), ((SyckParser *)parser)->taguri_expansion ); (yyval.nodeData) = (yyvsp[0].nodeData); } -#line 1652 "gram.c" +#line 1660 "gram.c" break; - case 61: /* top_imp_map: YAML_TRANSFER top_imp_map */ -#line 347 "gram.y" + case 62: /* top_imp_map: YAML_TRANSFER top_imp_map */ +#line 351 "gram.y" { syck_add_transfer( (yyvsp[-1].name), (yyvsp[0].nodeData), ((SyckParser *)parser)->taguri_expansion ); (yyval.nodeData) = (yyvsp[0].nodeData); } -#line 1661 "gram.c" +#line 1669 "gram.c" break; - case 62: /* top_imp_map: YAML_TAGURI indent_sep in_implicit_map */ -#line 352 "gram.y" + case 63: /* top_imp_map: YAML_TAGURI indent_sep in_implicit_map */ +#line 356 "gram.y" { syck_add_transfer( (yyvsp[-2].name), (yyvsp[0].nodeData), 0 ); (yyval.nodeData) = (yyvsp[0].nodeData); } -#line 1670 "gram.c" +#line 1678 "gram.c" break; - case 63: /* top_imp_map: YAML_TAGURI top_imp_map */ -#line 357 "gram.y" + case 64: /* top_imp_map: YAML_TAGURI top_imp_map */ +#line 361 "gram.y" { syck_add_transfer( (yyvsp[-1].name), (yyvsp[0].nodeData), 0 ); (yyval.nodeData) = (yyvsp[0].nodeData); } -#line 1679 "gram.c" +#line 1687 "gram.c" break; - case 64: /* top_imp_map: YAML_ANCHOR indent_sep in_implicit_map */ -#line 362 "gram.y" + case 65: /* top_imp_map: YAML_ANCHOR indent_sep in_implicit_map */ +#line 366 "gram.y" { (yyval.nodeData) = syck_hdlr_add_anchor( (SyckParser *)parser, (yyvsp[-2].name), (yyvsp[0].nodeData) ); } -#line 1687 "gram.c" +#line 1695 "gram.c" break; - case 65: /* top_imp_map: YAML_ANCHOR top_imp_map */ -#line 366 "gram.y" + case 66: /* top_imp_map: YAML_ANCHOR top_imp_map */ +#line 370 "gram.y" { (yyval.nodeData) = syck_hdlr_add_anchor( (SyckParser *)parser, (yyvsp[-1].name), (yyvsp[0].nodeData) ); } -#line 1695 "gram.c" +#line 1703 "gram.c" break; - case 67: /* complex_key: '?' atom indent_sep */ -#line 374 "gram.y" + case 68: /* complex_key: '?' atom indent_sep */ +#line 378 "gram.y" { (yyval.nodeData) = (yyvsp[-1].nodeData); } -#line 1703 "gram.c" +#line 1711 "gram.c" break; - case 69: /* complex_mapping: complex_key ':' complex_value */ -#line 385 "gram.y" + case 70: /* complex_mapping: complex_key ':' complex_value */ +#line 389 "gram.y" { (yyval.nodeData) = syck_new_map( syck_hdlr_add_node( (SyckParser *)parser, (yyvsp[-2].nodeData) ), syck_hdlr_add_node( (SyckParser *)parser, (yyvsp[0].nodeData) ) ); } -#line 1713 "gram.c" +#line 1721 "gram.c" break; - case 71: /* in_implicit_map: in_implicit_map indent_sep basic_seq */ -#line 395 "gram.y" + case 72: /* in_implicit_map: in_implicit_map indent_sep basic_seq */ +#line 399 "gram.y" { if ( (yyvsp[-2].nodeData)->shortcut == NULL ) { @@ -1725,11 +1733,11 @@ } (yyval.nodeData) = (yyvsp[-2].nodeData); } -#line 1729 "gram.c" +#line 1737 "gram.c" break; - case 72: /* in_implicit_map: in_implicit_map indent_sep complex_mapping */ -#line 407 "gram.y" + case 73: /* in_implicit_map: in_implicit_map indent_sep complex_mapping */ +#line 411 "gram.y" { apply_seq_in_map( (SyckParser *)parser, (yyvsp[-2].nodeData) ); syck_map_update( (yyvsp[-2].nodeData), (yyvsp[0].nodeData) ); @@ -1737,67 +1745,75 @@ (yyvsp[0].nodeData) = NULL; (yyval.nodeData) = (yyvsp[-2].nodeData); } -#line 1741 "gram.c" +#line 1749 "gram.c" break; - case 73: /* in_implicit_map: in_implicit_map indent_sep */ -#line 415 "gram.y" + case 74: /* in_implicit_map: in_implicit_map indent_sep */ +#line 419 "gram.y" { (yyval.nodeData) = (yyvsp[-1].nodeData); } -#line 1749 "gram.c" +#line 1757 "gram.c" break; - case 74: /* basic_mapping: atom ':' atom_or_empty */ -#line 422 "gram.y" + case 75: /* basic_mapping: atom ':' atom_or_empty */ +#line 426 "gram.y" { (yyval.nodeData) = syck_new_map( syck_hdlr_add_node( (SyckParser *)parser, (yyvsp[-2].nodeData) ), syck_hdlr_add_node( (SyckParser *)parser, (yyvsp[0].nodeData) ) ); } -#line 1759 "gram.c" +#line 1767 "gram.c" break; - case 75: /* inline_map: '{' in_inline_map '}' */ -#line 431 "gram.y" + case 76: /* inline_map: '{' in_inline_map '}' */ +#line 435 "gram.y" { (yyval.nodeData) = (yyvsp[-1].nodeData); } -#line 1767 "gram.c" +#line 1775 "gram.c" break; - case 76: /* inline_map: '{' '}' */ -#line 435 "gram.y" + case 77: /* inline_map: '{' '}' */ +#line 439 "gram.y" { (yyval.nodeData) = syck_alloc_map(); } -#line 1775 "gram.c" +#line 1783 "gram.c" break; - case 78: /* in_inline_map: in_inline_map ',' inline_map_atom */ -#line 443 "gram.y" + case 79: /* in_inline_map: in_inline_map ',' inline_map_atom */ +#line 447 "gram.y" { syck_map_update( (yyvsp[-2].nodeData), (yyvsp[0].nodeData) ); syck_free_node( (yyvsp[0].nodeData) ); (yyvsp[0].nodeData) = NULL; (yyval.nodeData) = (yyvsp[-2].nodeData); } -#line 1786 "gram.c" +#line 1794 "gram.c" + break; + + case 80: /* in_inline_map: in_inline_map ',' */ +#line 454 "gram.y" + { + (yyval.nodeData) = (yyvsp[-1].nodeData); + } +#line 1802 "gram.c" break; - case 79: /* inline_map_atom: atom */ -#line 453 "gram.y" + case 81: /* inline_map_atom: atom */ +#line 461 "gram.y" { NULL_NODE( parser, n ); (yyval.nodeData) = syck_new_map( syck_hdlr_add_node( (SyckParser *)parser, (yyvsp[0].nodeData) ), syck_hdlr_add_node( (SyckParser *)parser, n ) ); } -#line 1797 "gram.c" +#line 1813 "gram.c" break; -#line 1801 "gram.c" +#line 1817 "gram.c" default: break; } @@ -1991,7 +2007,7 @@ return yyresult; } -#line 462 "gram.y" +#line 470 "gram.y" void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/lib/JSON/Syck.pm new/YAML-Syck-1.46/lib/JSON/Syck.pm --- old/YAML-Syck-1.45/lib/JSON/Syck.pm 2026-04-23 17:14:49.693996266 +0200 +++ new/YAML-Syck-1.46/lib/JSON/Syck.pm 2026-05-25 05:02:30.226749660 +0200 @@ -4,7 +4,7 @@ use Exporter; use YAML::Syck (); -our $VERSION = '1.45'; +our $VERSION = '1.46'; our @EXPORT_OK = qw( Load Dump LoadFile DumpFile DumpInto ); our @ISA = qw/Exporter/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/lib/YAML/Syck.pm new/YAML-Syck-1.46/lib/YAML/Syck.pm --- old/YAML-Syck-1.45/lib/YAML/Syck.pm 2026-04-23 17:14:39.910280897 +0200 +++ new/YAML-Syck-1.46/lib/YAML/Syck.pm 2026-05-25 05:02:30.226964328 +0200 @@ -10,7 +10,7 @@ use Exporter; use XSLoader (); -our $VERSION = '1.45'; +our $VERSION = '1.46'; our @EXPORT = qw( Dump Load DumpFile LoadFile ); our @EXPORT_OK = qw( DumpInto LoadBytes LoadUTF8 DumpBytes DumpUTF8 ); our @ISA = qw( Exporter ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/perl_syck.h new/YAML-Syck-1.46/perl_syck.h --- old/YAML-Syck-1.45/perl_syck.h 2026-04-23 17:12:20.000000000 +0200 +++ new/YAML-Syck-1.46/perl_syck.h 2026-05-25 05:00:27.000000000 +0200 @@ -1247,7 +1247,11 @@ /* JSON should preserve quotes even on simple integers ("0" is true in javascript) */ #ifndef YAML_IS_JSON if (looks_like_number(sv)) { - if(syck_str_is_unquotable_integer(SvPV_nolen(sv), sv_len(sv))) { + if(!(SvIOK(sv) || SvNOK(sv))) { + /* POK-only: string that looks numeric — quote to preserve type */ + syck_emit_scalar(e, OBJOF("str"), SCALAR_QUOTED, 0, 0, 0, SvPV_nolen(sv), len); + } + else if(syck_str_is_unquotable_integer(SvPV_nolen(sv), sv_len(sv))) { /* emit an unquoted number only if it's a very basic integer. /^-?[1-9][0-9]*$/ */ syck_emit_scalar(e, OBJOF("str"), SCALAR_NUMBER, 0, 0, 0, SvPV_nolen(sv), len); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/t/3-objects.t new/YAML-Syck-1.46/t/3-objects.t --- old/YAML-Syck-1.45/t/3-objects.t 2026-03-25 17:41:01.000000000 +0100 +++ new/YAML-Syck-1.46/t/3-objects.t 2026-05-25 05:00:27.000000000 +0200 @@ -65,7 +65,7 @@ is( Dump($obj), "--- !!perl/scalar:Foo ~\n" ); is( Dump( Load( Dump($obj) ) ), "--- !!perl/scalar:Foo ~\n" ); -is( Dump( bless( { 1 .. 10 }, 'foo' ) ), "--- !!perl/hash:foo\n1: 2\n3: 4\n5: 6\n7: 8\n9: 10\n" ); +is( Dump( bless( { 1 .. 10 }, 'foo' ) ), "--- !!perl/hash:foo\n\"1\": 2\n\"3\": 4\n\"5\": 6\n\"7\": 8\n\"9\": 10\n" ); $YAML::Syck::UseCode = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/t/gh-199-preserve-string-type.t new/YAML-Syck-1.46/t/gh-199-preserve-string-type.t --- old/YAML-Syck-1.45/t/gh-199-preserve-string-type.t 1970-01-01 01:00:00.000000000 +0100 +++ new/YAML-Syck-1.46/t/gh-199-preserve-string-type.t 2026-05-25 05:00:27.000000000 +0200 @@ -0,0 +1,80 @@ +use strict; +use Test::More tests => 12; +use YAML::Syck; + +# GH #199: YAML::Syck should preserve the string nature of numeric-looking values. +# A Perl scalar that is a pure string (POK only, no IOK/NOK) must be quoted +# in the Dump output so that a subsequent Load sees it as a string, not an integer. + +# Pure Perl string that looks like an integer +{ + my $str = "8080"; + my $yaml = Dump({ val => $str }); + like( $yaml, qr/val: '8080'/, "pure string '8080' is quoted in Dump" ); +} + +# Actual Perl integer +{ + my $num = 8080; + my $yaml = Dump({ val => $num }); + like( $yaml, qr/val: 8080\b/, "integer 8080 is unquoted in Dump" ); + unlike( $yaml, qr/val: '8080'/, "integer 8080 is not single-quoted" ); +} + +# String that was numified (IOK+POK after arithmetic) +{ + my $str = "8080"; + my $n = $str + 0; + my $yaml = Dump({ val => $str }); + like( $yaml, qr/val: 8080\b/, "numified string emits unquoted" ); +} + +# Original issue: flow collection with quoted strings +{ + my $yaml_in = qq{command: [ "daemon", "-p", "8080" ]}; + my $data = Load($yaml_in); + my $yaml_out = Dump($data); + like( $yaml_out, qr/'8080'/, "quoted '8080' in flow collection roundtrips quoted" ); +} + +# ImplicitTyping=1: unquoted number stays unquoted +{ + local $YAML::Syck::ImplicitTyping = 1; + my $data = Load("val: 8080"); + my $yaml = Dump($data); + like( $yaml, qr/val: 8080\b/, "ImplicitTyping=1: unquoted 8080 stays unquoted" ); + unlike( $yaml, qr/val: '8080'/, "ImplicitTyping=1: unquoted 8080 not quoted" ); +} + +# ImplicitTyping=1: quoted string stays quoted +{ + local $YAML::Syck::ImplicitTyping = 1; + my $data = Load('val: "8080"'); + my $yaml = Dump($data); + like( $yaml, qr/val: '8080'/, "ImplicitTyping=1: quoted '8080' stays quoted" ); +} + +# Zero string vs zero integer +{ + my $str_zero = "0"; + my $yaml = Dump({ val => $str_zero }); + like( $yaml, qr/val: '0'/, "string '0' is quoted" ); + + my $num_zero = 0; + $yaml = Dump({ val => $num_zero }); + like( $yaml, qr/val: 0\b/, "integer 0 is unquoted" ); +} + +# Float string +{ + my $str_float = "3.14"; + my $yaml = Dump({ val => $str_float }); + like( $yaml, qr/val: '3\.14'/, "float-like string '3.14' is quoted" ); +} + +# Negative number string +{ + my $str_neg = "-42"; + my $yaml = Dump({ val => $str_neg }); + like( $yaml, qr/val: '-42'/, "negative number string '-42' is quoted" ); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/t/gh-trailing-comma.t new/YAML-Syck-1.46/t/gh-trailing-comma.t --- old/YAML-Syck-1.45/t/gh-trailing-comma.t 1970-01-01 01:00:00.000000000 +0100 +++ new/YAML-Syck-1.46/t/gh-trailing-comma.t 2026-05-24 18:39:20.000000000 +0200 @@ -0,0 +1,33 @@ +use strict; +use warnings; +use Test::More tests => 8; +use YAML::Syck; + +# GitHub issue #195: trailing commas in flow collections are valid YAML +# (all spec versions: 1.0, 1.1, 1.2) but YAML-Syck rejected them. + +# Flow sequences with trailing comma +is_deeply eval { Load("test: [a, b, c,]\n") }, { test => [qw(a b c)] }, + 'flow sequence with trailing comma'; + +is_deeply eval { Load("test: [a,]\n") }, { test => ['a'] }, + 'single-element flow sequence with trailing comma'; + +is_deeply Load("test: [a, b, c]\n"), { test => [qw(a b c)] }, + 'flow sequence without trailing comma still works'; + +is_deeply Load("test: []\n"), { test => [] }, + 'empty flow sequence still works'; + +# Flow mappings with trailing comma +is_deeply eval { Load("test: {a: 1, b: 2,}\n") }, { test => { a => 1, b => 2 } }, + 'flow mapping with trailing comma'; + +is_deeply eval { Load("test: {a: 1,}\n") }, { test => { a => 1 } }, + 'single-entry flow mapping with trailing comma'; + +is_deeply Load("test: {a: 1, b: 2}\n"), { test => { a => 1, b => 2 } }, + 'flow mapping without trailing comma still works'; + +is_deeply Load("test: {}\n"), { test => {} }, + 'empty flow mapping still works'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/YAML-Syck-1.45/t/yaml-tie.t new/YAML-Syck-1.46/t/yaml-tie.t --- old/YAML-Syck-1.45/t/yaml-tie.t 2026-03-21 01:49:16.000000000 +0100 +++ new/YAML-Syck-1.46/t/yaml-tie.t 2026-05-25 05:00:27.000000000 +0200 @@ -10,8 +10,8 @@ %h = ( a => 1, b => '2', c => 3.1415, d => 4 ); bless $rh => 'Tie::StdHash'; - is( Dump($rh), "--- !!perl/hash:Tie::StdHash\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "blessed hash ref dumps with class tag" ); - is( Dump( \%h ), "--- !!perl/hash:Tie::StdHash\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "blessed hash deref dumps with class tag" ); + is( Dump($rh), "--- !!perl/hash:Tie::StdHash\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "blessed hash ref dumps with class tag" ); + is( Dump( \%h ), "--- !!perl/hash:Tie::StdHash\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "blessed hash deref dumps with class tag" ); } # Tied hash - tie object ($th) is blessed, so it gets a class tag @@ -23,13 +23,13 @@ SKIP: { skip "Perl 5.8 sometimes coerces ints into strings (Perl bug, not ours)", 1 unless ( $] > '5.009888' || $] < '5.007' ); - is( Dump($th), "--- !!perl/hash:Tie::StdHash\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "tie object dumps with class tag" ); + is( Dump($th), "--- !!perl/hash:Tie::StdHash\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "tie object dumps with class tag" ); } # Tied hash reference dumps content (no class tag since \%h is not blessed) SKIP: { skip "Perl 5.8 tied hash iteration loses some values", 1 if $] < '5.010'; - is( Dump( \%h ), "---\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "tied hash ref dumps content" ); + is( Dump( \%h ), "---\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "tied hash ref dumps content" ); } } @@ -42,8 +42,8 @@ $h{c} = 3.1415; $h{d} = 4; - is( Dump($th), "--- !!perl/hash:Tie::StdHash\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "tie object with individual assigns dumps correctly" ); - is( Dump( \%h ), "---\na: 1\nb: 2\nc: '3.1415'\nd: 4\n", "tied hash ref with individual assigns dumps content" ); + is( Dump($th), "--- !!perl/hash:Tie::StdHash\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "tie object with individual assigns dumps correctly" ); + is( Dump( \%h ), "---\na: 1\nb: '2'\nc: '3.1415'\nd: 4\n", "tied hash ref with individual assigns dumps content" ); } # Empty tied hash ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.GlVQPR/_old 2026-06-08 14:24:57.152142679 +0200 +++ /var/tmp/diff_new_pack.GlVQPR/_new 2026-06-08 14:24:57.156142845 +0200 @@ -1,6 +1,6 @@ -mtime: 1779462447 -commit: 85b598acb5ef8d64097db3cec4ee1ed39208b04258a58501f98da5c62ab6f0d4 +mtime: 1779700158 +commit: c78eb2b0eabbb7062b67ab11d00e687e58bca160c3274f2143ec1e20601af202 url: https://src.opensuse.org/perl/perl-YAML-Syck -revision: 85b598acb5ef8d64097db3cec4ee1ed39208b04258a58501f98da5c62ab6f0d4 +revision: c78eb2b0eabbb7062b67ab11d00e687e58bca160c3274f2143ec1e20601af202 projectscmsync: https://src.opensuse.org/perl/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-05-25 11:09:18.000000000 +0200 @@ -0,0 +1 @@ +.osc
