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