@@ -3,6 +3,7 @@ package zjsonschema_test
33import (
44 "encoding/json"
55 "errors"
6+ "regexp"
67 "testing"
78
89 zsscore "github.com/Oudwins/zog/pkgs/zss/core"
@@ -197,6 +198,30 @@ func TestFromZSSConvertsCustomTestsWithOption(t *testing.T) {
197198 assert .Equal (t , "^z" , schema ["pattern" ])
198199}
199200
201+ func TestFromZSSConvertsNamedGroupsInMatchPatterns (t * testing.T ) {
202+ doc := zsscore.ZSSDocument {Root : & zsscore.ZSSSchema {Kind : zconst .TypeString , Processors : []zsscore.ZSSProcessor {
203+ testProcessor (zconst .IssueCodeMatch , map [string ]any {zconst .IssueCodeMatch : regexp .MustCompile (`^(?P<id>[a-z]+)/(?P<version>[0-9]+)$` ).String ()}),
204+ }}}
205+
206+ schema , err := zjsonschema .FromZSS (doc , zjsonschema.Options {})
207+ require .NoError (t , err )
208+ requireValidJSONSchema (t , schema )
209+
210+ assert .Equal (t , `^(?:[a-z]+)/(?:[0-9]+)$` , schema ["pattern" ])
211+ }
212+
213+ func TestFromZSSReturnsErrorForNonStringMatchPattern (t * testing.T ) {
214+ doc := zsscore.ZSSDocument {Root : & zsscore.ZSSSchema {Kind : zconst .TypeString , Processors : []zsscore.ZSSProcessor {
215+ testProcessor (zconst .IssueCodeMatch , map [string ]any {zconst .IssueCodeMatch : 1 }),
216+ }}}
217+
218+ _ , err := zjsonschema .FromZSS (doc , zjsonschema.Options {})
219+
220+ require .Error (t , err )
221+ assert .ErrorContains (t , err , `convert test "match"` )
222+ assert .ErrorContains (t , err , "match test param must be a string" )
223+ }
224+
200225func TestFromZSSReturnsTestConverterErrors (t * testing.T ) {
201226 wantErr := errors .New ("custom test failed" )
202227 doc := zsscore.ZSSDocument {Root : & zsscore.ZSSSchema {Kind : zconst .TypeString , Processors : []zsscore.ZSSProcessor {
0 commit comments