github.com/lixvbnet/courtney@v0.0.0-20221025031132-0dcb02231211/shared/shared_test.go (about)

     1  package shared_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/lixvbnet/courtney/shared"
     8  	"github.com/dave/patsy"
     9  	"github.com/dave/patsy/builder"
    10  	"github.com/dave/patsy/vos"
    11  )
    12  
    13  func TestParseArgs(t *testing.T) {
    14  	for _, gomod := range []bool{true, false} {
    15  		t.Run(fmt.Sprintf("gomod=%v", gomod), func(t *testing.T) {
    16  			env := vos.Mock()
    17  			b, err := builder.New(env, "ns", gomod)
    18  			if err != nil {
    19  				t.Fatal(fmt.Sprintf("%+v", err))
    20  			}
    21  			defer b.Cleanup()
    22  
    23  			apath, adir, err := b.Package("a", map[string]string{
    24  				"a.go": `package a`,
    25  			})
    26  			bpath, bdir, err := b.Package("a/b", map[string]string{
    27  				"b.go": `package b`,
    28  			})
    29  			cpath, cdir, err := b.Package("a/c", map[string]string{
    30  				"c.go": `package c`,
    31  			})
    32  			if err != nil {
    33  				t.Fatal(fmt.Sprintf("%+v", err))
    34  			}
    35  
    36  			paths := patsy.NewCache(env)
    37  
    38  			if err := env.Setwd(adir); err != nil {
    39  				t.Fatal(fmt.Sprintf("%+v", err))
    40  			}
    41  
    42  			expectedA := shared.PackageSpec{
    43  				Dir:  adir,
    44  				Path: apath,
    45  			}
    46  			expectedB := shared.PackageSpec{
    47  				Dir:  bdir,
    48  				Path: bpath,
    49  			}
    50  			expectedC := shared.PackageSpec{
    51  				Dir:  cdir,
    52  				Path: cpath,
    53  			}
    54  
    55  			setup := shared.Setup{
    56  				Env:   env,
    57  				Paths: paths,
    58  			}
    59  			if err := setup.Parse([]string{"."}); err != nil {
    60  				t.Fatal(fmt.Sprintf("%+v", err))
    61  			}
    62  			if len(setup.Packages) != 1 {
    63  				t.Fatalf("Error in ParseArgs - wrong number of packages. Expected 1, got %d", len(setup.Packages))
    64  			}
    65  			if setup.Packages[0] != expectedA {
    66  				t.Fatalf("Error in ParseArgs - wrong package. Expected %#v. Got %#v.", expectedA, setup.Packages[0])
    67  			}
    68  
    69  			setup = shared.Setup{
    70  				Env:   env,
    71  				Paths: paths,
    72  			}
    73  			if err := setup.Parse(nil); err != nil {
    74  				t.Fatal(fmt.Sprintf("%+v", err))
    75  			}
    76  			if len(setup.Packages) != 3 {
    77  				t.Fatalf("Error in ParseArgs - wrong number of packages. Expected 3, got %d", len(setup.Packages))
    78  			}
    79  			if setup.Packages[0] != expectedA && setup.Packages[0] != expectedB && setup.Packages[0] != expectedC {
    80  				t.Fatal("Error in ParseArgs - wrong package.")
    81  			}
    82  			if setup.Packages[1] != expectedA && setup.Packages[1] != expectedB && setup.Packages[1] != expectedC {
    83  				t.Fatal("Error in ParseArgs - wrong package.")
    84  			}
    85  			if setup.Packages[2] != expectedA && setup.Packages[2] != expectedB && setup.Packages[2] != expectedC {
    86  				t.Fatal("Error in ParseArgs - wrong package.")
    87  			}
    88  
    89  			if err := env.Setwd(bdir); err != nil {
    90  				t.Fatal(fmt.Sprintf("%+v", err))
    91  			}
    92  
    93  			setup = shared.Setup{
    94  				Env:   env,
    95  				Paths: paths,
    96  			}
    97  			if err := setup.Parse([]string{"."}); err != nil {
    98  				t.Fatal(fmt.Sprintf("%+v", err))
    99  			}
   100  			if len(setup.Packages) != 1 {
   101  				t.Fatalf("Error in ParseArgs - wrong number of packages. Expected 1, got %d", len(setup.Packages))
   102  			}
   103  			if setup.Packages[0] != expectedB {
   104  				t.Fatalf("Error in ParseArgs - wrong package. Expected %#v. Got %#v.", expectedB, setup.Packages[0])
   105  			}
   106  
   107  			setup = shared.Setup{
   108  				Env:   env,
   109  				Paths: paths,
   110  			}
   111  			// should correctly strip "/" suffix
   112  			if err := setup.Parse([]string{"ns/a/b/"}); err != nil {
   113  				t.Fatal(fmt.Sprintf("%+v", err))
   114  			}
   115  			if len(setup.Packages) != 1 {
   116  				t.Fatalf("Error in ParseArgs - wrong number of packages. Expected 1, got %d", len(setup.Packages))
   117  			}
   118  			if setup.Packages[0] != expectedB {
   119  				t.Fatalf("Error in ParseArgs - wrong package. Expected %#v. Got %#v.", expectedB, setup.Packages[0])
   120  			}
   121  		})
   122  	}
   123  }