@@ -752,7 +752,12 @@ func TestOutput_RoundTrip_AllFields(t *testing.T) {
752752 marshalled , err := yaml .Marshal (original )
753753 require .NoError (t , err )
754754
755- roundTripped , err := Parse (strings .NewReader (string (marshalled )))
755+ yamlStr := string (marshalled )
756+ assert .Contains (t , yamlStr , "schema:" , "intermediate YAML must contain schema key" )
757+ assert .Contains (t , yamlStr , "mimeType:" , "intermediate YAML must contain mimeType key" )
758+ assert .Contains (t , yamlStr , "format:" , "intermediate YAML must contain format key" )
759+
760+ roundTripped , err := Parse (strings .NewReader (yamlStr ))
756761 require .NoError (t , err )
757762
758763 if diff := cmp .Diff (original , roundTripped ); diff != "" {
@@ -779,7 +784,12 @@ func TestOutput_RoundTrip_InlineSchemaWithMimeType(t *testing.T) {
779784 marshalled , err := yaml .Marshal (original )
780785 require .NoError (t , err )
781786
782- roundTripped , err := Parse (strings .NewReader (string (marshalled )))
787+ yamlStr := string (marshalled )
788+ assert .Contains (t , yamlStr , "schema:" , "intermediate YAML must contain schema key" )
789+ assert .Contains (t , yamlStr , "mimeType:" , "intermediate YAML must contain mimeType key" )
790+ assert .Contains (t , yamlStr , "type: object" , "intermediate YAML must contain inline schema type" )
791+
792+ roundTripped , err := Parse (strings .NewReader (yamlStr ))
783793 require .NoError (t , err )
784794
785795 if diff := cmp .Diff (original , roundTripped ); diff != "" {
@@ -1250,16 +1260,24 @@ func TestOutput_Schema_IntegerValueDoesNotPanic(t *testing.T) {
12501260 format: json
12511261 schema: 42
12521262`
1253- // This should not panic. Whether it parses successfully or errors is
1254- // implementation-dependent, but it must not crash.
1263+ // Must not panic. Parse may succeed (storing int in any) or error —
1264+ // either is acceptable, but we assert the outcome explicitly.
1265+ var parsed * Toolkit
1266+ var parseErr error
12551267 func () {
12561268 defer func () {
12571269 if r := recover (); r != nil {
1258- t .Errorf ("Parse panicked on integer schema: %v" , r )
1270+ t .Fatalf ("Parse panicked on integer schema: %v" , r )
12591271 }
12601272 }()
1261- _ , _ = Parse (strings .NewReader (input ))
1273+ parsed , parseErr = Parse (strings .NewReader (input ))
12621274 }()
1275+ if parseErr != nil {
1276+ return // error is an acceptable outcome
1277+ }
1278+ require .Len (t , parsed .Tools , 1 )
1279+ assert .Equal (t , 42 , parsed .Tools [0 ].Output .Schema ,
1280+ "integer schema should be stored as-is in the any field" )
12631281}
12641282
12651283func TestOutput_Schema_BooleanValueDoesNotPanic (t * testing.T ) {
@@ -1270,14 +1288,22 @@ func TestOutput_Schema_BooleanValueDoesNotPanic(t *testing.T) {
12701288 format: json
12711289 schema: true
12721290`
1291+ var parsed * Toolkit
1292+ var parseErr error
12731293 func () {
12741294 defer func () {
12751295 if r := recover (); r != nil {
1276- t .Errorf ("Parse panicked on boolean schema: %v" , r )
1296+ t .Fatalf ("Parse panicked on boolean schema: %v" , r )
12771297 }
12781298 }()
1279- _ , _ = Parse (strings .NewReader (input ))
1299+ parsed , parseErr = Parse (strings .NewReader (input ))
12801300 }()
1301+ if parseErr != nil {
1302+ return
1303+ }
1304+ require .Len (t , parsed .Tools , 1 )
1305+ assert .Equal (t , true , parsed .Tools [0 ].Output .Schema ,
1306+ "boolean schema should be stored as-is in the any field" )
12811307}
12821308
12831309func TestOutput_Schema_ArrayValueDoesNotPanic (t * testing.T ) {
@@ -1290,12 +1316,20 @@ func TestOutput_Schema_ArrayValueDoesNotPanic(t *testing.T) {
12901316 - item1
12911317 - item2
12921318`
1319+ var parsed * Toolkit
1320+ var parseErr error
12931321 func () {
12941322 defer func () {
12951323 if r := recover (); r != nil {
1296- t .Errorf ("Parse panicked on array schema: %v" , r )
1324+ t .Fatalf ("Parse panicked on array schema: %v" , r )
12971325 }
12981326 }()
1299- _ , _ = Parse (strings .NewReader (input ))
1327+ parsed , parseErr = Parse (strings .NewReader (input ))
13001328 }()
1329+ if parseErr != nil {
1330+ return
1331+ }
1332+ require .Len (t , parsed .Tools , 1 )
1333+ assert .IsType (t , []any {}, parsed .Tools [0 ].Output .Schema ,
1334+ "array schema should be stored as []any in the any field" )
13011335}
0 commit comments