cuelang.org/go@v0.10.1/encoding/protobuf/jsonpb/encoder_test.go (about) 1 // Copyright 2021 CUE Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package jsonpb_test 16 17 import ( 18 "testing" 19 20 "cuelang.org/go/cue" 21 "cuelang.org/go/cue/ast" 22 "cuelang.org/go/cue/errors" 23 "cuelang.org/go/cue/format" 24 "cuelang.org/go/cue/parser" 25 "cuelang.org/go/encoding/protobuf/jsonpb" 26 "cuelang.org/go/internal/cuetxtar" 27 ) 28 29 func TestEncoder(t *testing.T) { 30 test := cuetxtar.TxTarTest{ 31 Root: "./testdata/encoder", 32 Name: "jsonpb", 33 } 34 35 r := cue.Runtime{} 36 37 test.Run(t, func(t *cuetxtar.Test) { 38 // TODO: use high-level API. 39 40 var schema cue.Value 41 var file *ast.File 42 43 for _, f := range t.Archive.Files { 44 switch { 45 case f.Name == "schema.cue": 46 inst, err := r.Compile(f.Name, f.Data) 47 if err != nil { 48 t.WriteErrors(errors.Promote(err, "test")) 49 return 50 } 51 schema = inst.Value() 52 53 case f.Name == "value.cue": 54 f, err := parser.ParseFile(f.Name, f.Data, parser.ParseComments) 55 if err != nil { 56 t.WriteErrors(errors.Promote(err, "test")) 57 return 58 } 59 file = f 60 } 61 } 62 63 if !schema.Exists() { 64 inst, err := r.CompileFile(file) 65 if err != nil { 66 t.WriteErrors(errors.Promote(err, "test")) 67 } 68 schema = inst.Value() 69 } 70 71 err := jsonpb.NewEncoder(schema).RewriteFile(file) 72 if err != nil { 73 errors.Print(t, err, nil) 74 } 75 76 b, err := format.Node(file) 77 if err != nil { 78 t.Fatal(err) 79 } 80 _, _ = t.Write(b) 81 }) 82 }