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  }