github.com/sirkon/goproxy@v1.4.8/internal/modfile/rule_test.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package modfile 6 7 import ( 8 "bytes" 9 "fmt" 10 "testing" 11 ) 12 13 var addRequireTests = []struct { 14 in string 15 path string 16 vers string 17 out string 18 }{ 19 { 20 ` 21 module m 22 require x.y/z v1.2.3 23 `, 24 "x.y/z", "v1.5.6", 25 ` 26 module m 27 require x.y/z v1.5.6 28 `, 29 }, 30 { 31 ` 32 module m 33 require x.y/z v1.2.3 34 `, 35 "x.y/w", "v1.5.6", 36 ` 37 module m 38 require ( 39 x.y/z v1.2.3 40 x.y/w v1.5.6 41 ) 42 `, 43 }, 44 { 45 ` 46 module m 47 require x.y/z v1.2.3 48 require x.y/q/v2 v2.3.4 49 `, 50 "x.y/w", "v1.5.6", 51 ` 52 module m 53 require x.y/z v1.2.3 54 require ( 55 x.y/q/v2 v2.3.4 56 x.y/w v1.5.6 57 ) 58 `, 59 }, 60 } 61 62 func TestAddRequire(t *testing.T) { 63 for i, tt := range addRequireTests { 64 t.Run(fmt.Sprintf("#%d", i), func(t *testing.T) { 65 f, err := Parse("in", []byte(tt.in), nil) 66 if err != nil { 67 t.Fatal(err) 68 } 69 g, err := Parse("out", []byte(tt.out), nil) 70 if err != nil { 71 t.Fatal(err) 72 } 73 golden, err := g.Format() 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 if err := f.AddRequire(tt.path, tt.vers); err != nil { 79 t.Fatal(err) 80 } 81 out, err := f.Format() 82 if err != nil { 83 t.Fatal(err) 84 } 85 if !bytes.Equal(out, golden) { 86 t.Errorf("have:\n%s\nwant:\n%s", out, golden) 87 } 88 }) 89 } 90 }