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  }