@@ -3,17 +3,20 @@ package internal
33import (
44 "bytes"
55 "encoding/json"
6+ "flag"
7+ "fmt"
68 "io"
79 "log"
810 "net/http"
11+ "os"
912 "reflect"
1013)
1114
1215type (
1316 Test struct {
14- Rule io. Reader
15- Data io. Reader
16- Expected io. Reader
17+ Rule any
18+ Data any
19+ Expected any
1720 }
1821
1922 Tests []Test
@@ -31,27 +34,39 @@ func convertInterfaceToReader(i any) io.Reader {
3134 return & result
3235}
3336
37+ var testFile = flag .String ("jsonlogic-test-file" , "" , "tests.json file to use instead of http://jsonlogic.com/tests.json" )
38+
3439func GetScenariosFromOfficialTestSuite () Tests {
3540 var tests Tests
3641
37- response , err := http .Get ("http://jsonlogic.com/tests.json" )
38- if err != nil {
39- log .Fatal (err )
42+ var buffer []byte
43+ if * testFile != "" {
44+ fmt .Printf ("reading from local file\n " )
45+ var err error
46+ buffer , err = os .ReadFile (* testFile )
47+ if err != nil {
48+ log .Fatal (err )
49+ }
50+ } else {
51+ response , err := http .Get ("http://jsonlogic.com/tests.json" )
52+ if err != nil {
53+ log .Fatal (err )
4054
41- return tests
42- }
55+ return tests
56+ }
4357
44- buffer , _ := io .ReadAll (response .Body )
58+ buffer , err = io .ReadAll (response .Body )
59+ if err != nil {
60+ log .Fatal (err )
61+ }
4562
46- response .Body .Close ()
63+ response .Body .Close ()
64+ }
4765
4866 var scenarios []any
49-
50- err = json .Unmarshal (buffer , & scenarios )
67+ var err = json .Unmarshal (buffer , & scenarios )
5168 if err != nil {
5269 log .Fatal (err )
53-
54- return tests
5570 }
5671
5772 // add missing but relevant scenarios
@@ -69,9 +84,9 @@ func GetScenariosFromOfficialTestSuite() Tests {
6984 }
7085
7186 tests = append (tests , Test {
72- Rule : convertInterfaceToReader ( scenario .([]any )[0 ]) ,
73- Data : convertInterfaceToReader ( scenario .([]any )[1 ]) ,
74- Expected : convertInterfaceToReader ( scenario .([]any )[2 ]) ,
87+ Rule : scenario .([]any )[0 ],
88+ Data : scenario .([]any )[1 ],
89+ Expected : scenario .([]any )[2 ],
7590 })
7691 }
7792
0 commit comments