@@ -7,52 +7,51 @@ import (
77 "net/http"
88 "net/http/httptest"
99 "testing"
10-
11- yaml "gopkg.in/yaml.v3"
1210)
1311
1412func TestParseFilter (t * testing.T ) {
15- validateParseFilter (
13+ tc := InitTests (false )
14+
15+ tc .validateParseFilter (
1616 "front_matter.title==this+is+a+title" ,
1717 FilterParams {
1818 Prefix : "front_matter.title" , Operator : "==" , Suffix : []string {"this+is+a+title" },
1919 }, t ,
2020 )
21- validateParseFilter (
21+ tc . validateParseFilter (
2222 "front_matter.title!=not+the+title" ,
2323 FilterParams {
2424 Prefix : "front_matter.title" , Operator : "!=" , Suffix : []string {"not+the+title" },
2525 }, t ,
2626 )
27- validateParseFilter (
27+ tc . validateParseFilter (
2828 "front_matter.tags=*title2" ,
2929 FilterParams {
3030 Prefix : "front_matter.tags" , Operator : "=*" , Suffix : []string {"title2" },
3131 }, t ,
3232 )
33- validateParseFilter (
33+ tc . validateParseFilter (
3434 "front_matter.tags!=*title" ,
3535 FilterParams {
3636 Prefix : "front_matter.tags" , Operator : "!=*" , Suffix : []string {"title" },
3737 }, t ,
3838 )
39- validateParseFilter (
39+ tc . validateParseFilter (
4040 "front_matter.tags!==tag1,tag2" ,
4141 FilterParams {
4242 Prefix : "front_matter.tags" , Operator : "!==" , Suffix : []string {"tag1" , "tag2" },
4343 }, t ,
4444 )
45- validateParseFilter (
45+ tc . validateParseFilter (
4646 "front_matter.title=~title[0-9]{1,2}" ,
4747 FilterParams {
4848 Prefix : "front_matter.title" , Operator : "=~" , Suffix : []string {"title[0-9]{1,2}" },
4949 }, t ,
5050 )
5151}
5252
53- func validateParseFilter (filter string , exp FilterParams , t * testing.T ) {
54- ind , _ , _ := prepareTests ("" , "" , true )
55- res := ind .parseFilterString (filter )
53+ func (tc testContext ) validateParseFilter (filter string , exp FilterParams , t * testing.T ) {
54+ res := tc .ind .parseFilterString (filter )
5655 r := true
5756 if res .Prefix != exp .Prefix || res .Operator != exp .Operator {
5857 r = false
@@ -68,81 +67,80 @@ func validateParseFilter(filter string, exp FilterParams, t *testing.T) {
6867}
6968
7069func TestServeContent (t * testing.T ) {
71- testSpecs , _ := ut .Find (ut .FromTestFolder ("specs/server" ), "\\ .yaml$" )
72- for _ , specFile := range testSpecs {
73- validateServeContent (specFile , t )
70+ tc := InitTests (false )
71+ fol := ut .FromTestFolder ("specs/server" )
72+ specFiles , err := tc .ind .Util .Find (fol , "\\ .yaml$" )
73+ if err != nil {
74+ tc .t .Errorf ("can not find specs files: %q" , fol )
7475 }
75- }
76-
77- func validateServeContent (specFile string , t * testing.T ) {
78- ind , _ , _ := prepareTests ("" , "" , true )
79- var urls []string
80- var exp []string
81- var spec map [string ][]string
8276
83- by , _ , err := ut .ReadFile (specFile )
84- if err != nil {
85- t .Errorf ("can not read spec file: %q" , specFile )
86- } else {
87- err = yaml .Unmarshal (by , & spec )
88- if err != nil {
89- t .Errorf ("can not unmarshal spec file: %q, %s" , specFile , err )
90- }
91- urls = spec ["urls" ]
92- exp = spec ["expectation" ]
77+ for _ , specFile := range specFiles {
78+ tc .validateServeContent (specFile )
9379 }
80+ }
9481
95- testsrv := httptest .NewServer (http .HandlerFunc (
96- func (w http.ResponseWriter , r * http.Request ) {
97- ind .ServeContent (w , r )
98- }))
99- defer testsrv .Close ()
82+ func (tc testContext ) validateServeContent (specFile string ) {
83+ specs := tc .readSpecs (specFile )
84+ for _ , specItf := range specs {
85+ spec := specItf .(map [string ]interface {})
86+ urls := tc .ind .Util .ListInterfaceToListString (
87+ spec ["urls" ].([]interface {}),
88+ )
89+ exp := tc .ind .Util .ListInterfaceToListString (
90+ spec ["exp" ].([]interface {}),
91+ )
92+ testsrv := httptest .NewServer (http .HandlerFunc (
93+ func (w http.ResponseWriter , r * http.Request ) {
94+ tc .ind .ServeContent (w , r )
95+ }))
96+ defer testsrv .Close ()
10097
101- for _ , url := range urls {
102- c := NewClient (testsrv .URL )
103- res , err := http .Get (c .url + url )
104- if err != nil {
105- t .Errorf ("test serve content, request failed: %s, %s" , url , err )
106- }
107- defer res .Body .Close ()
98+ for _ , url := range urls {
99+ c := NewClient (testsrv .URL )
100+ res , err := http .Get (c .url + url )
101+ if err != nil {
102+ tc . t .Errorf ("test serve content, request failed: %s, %s" , url , err )
103+ }
104+ defer res .Body .Close ()
108105
109- bodyBytes , err := io .ReadAll (res .Body )
110- if err != nil {
111- t .Errorf ("test serve content failed, can not read body: %+v" , err )
112- } else {
113- var ji JoinerIndex
114- err = json .Unmarshal ([]byte (bodyBytes ), & ji )
106+ bodyBytes , err := io .ReadAll (res .Body )
115107 if err != nil {
116- t .Errorf (
117- "test joiner index failed, can not unmarshal server response: %+v" , err ,
118- )
108+ tc .t .Errorf ("test serve content failed, can not read body: %+v" , err )
109+ } else {
110+ var ti TapIndex
111+ err = json .Unmarshal ([]byte (bodyBytes ), & ti )
112+ if err != nil {
113+ tc .t .Errorf (
114+ "test joiner index failed, can not unmarshal server response: %+v" , err ,
115+ )
116+ }
117+ tc .validateTapIndex (ti , url , exp )
119118 }
120- validateJoinerIndex (ji , url , exp , t )
121119 }
122120 }
123121}
124122
125- func validateJoinerIndex ( ji JoinerIndex , url string , exp []string , t * testing. T ) {
123+ func ( tc testContext ) validateTapIndex ( ti TapIndex , url string , exp []string ) {
126124 failed := false
127- if len (ji ) != len (exp ) {
128- t .Errorf (
129- "validate joiner index failed: %q, lengths do not match: exp: %+v, got: %+v" ,
130- url , len (exp ), len (ji ),
125+ if len (ti ) != len (exp ) {
126+ tc . t .Errorf (
127+ "validate tap index failed: %q, lengths do not match: exp: %+v, got: %+v" ,
128+ url , len (exp ), len (ti ),
131129 )
132130 } else {
133- for i := 0 ; i < len (ji ); i ++ {
134- if ji [i ].Path != exp [i ] {
131+ for i := 0 ; i < len (ti ); i ++ {
132+ if ti [i ].Path != exp [i ] {
135133 failed = true
136134 break
137135 }
138136 }
139137 }
140138 if failed {
141- t .Errorf (
142- "validate joiner index failed: %q\n " +
139+ tc . t .Errorf (
140+ "validate tap index failed: %q\n " +
143141 "exp, len: %d\n %+v,\n " +
144142 "got, len: %d\n %+v\n " ,
145- url , len (exp ), exp , len (ji ), getJoinerIndexPaths ( ji ),
143+ url , len (exp ), exp , len (ti ), tc . getTapIndexPaths ( ),
146144 )
147145 }
148146}
@@ -155,22 +153,16 @@ func NewClient(url string) Client {
155153 return Client {url }
156154}
157155
158- func getJoinerIndexPaths (ji JoinerIndex ) (arr []string ) {
159- for _ , el := range ji {
160- arr = append (arr , el .Path )
161- }
162- return
163- }
164-
165156func BenchmarkServer (b * testing.B ) {
166- ind , _ , _ := prepareTests ("" , "" , true )
157+ tc := InitTests (false )
158+
167159 pos := ut .Trace ()
168160 testsrv := httptest .NewServer (http .HandlerFunc (
169161 func (w http.ResponseWriter , r * http.Request ) {
170- ind .ServeContent (w , r )
162+ tc . ind .ServeContent (w , r )
171163 }))
172164 defer testsrv .Close ()
173- for url := range ind .Conf .API {
165+ for url := range tc . ind .Conf .API {
174166 c := NewClient (testsrv .URL )
175167 http .Get (c .url + url )
176168 }
0 commit comments