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 }