github.com/maps90/godog@v0.7.5-0.20170923143419-0093943021d4/builder_test.go (about)

     1  package godog
     2  
     3  import (
     4  	"go/build"
     5  	"os"
     6  	"path/filepath"
     7  	"reflect"
     8  	"testing"
     9  )
    10  
    11  func TestVendorPaths(t *testing.T) {
    12  	gopaths = []string{"/go"}
    13  
    14  	type Case struct {
    15  		dir    string
    16  		expect []string
    17  	}
    18  
    19  	cases := []Case{
    20  		{"/go", []string{}},
    21  		{"/go/src", []string{}},
    22  		{"/go/src/project", []string{"/go/src/project/vendor"}},
    23  		{"/go/src/party/project", []string{"/go/src/party/project/vendor", "/go/src/party/vendor"}},
    24  	}
    25  
    26  	for i, c := range cases {
    27  		actual := maybeVendorPaths(c.dir)
    28  		var expect []string
    29  		for _, s := range c.expect {
    30  			expect = append(expect, filepath.Join(s, godogImportPath))
    31  		}
    32  		if !reflect.DeepEqual(expect, actual) {
    33  			t.Fatalf("case %d expected %+v, got %+v", i, expect, actual)
    34  		}
    35  	}
    36  
    37  	gopaths = filepath.SplitList(build.Default.GOPATH)
    38  }
    39  
    40  func TestBuildTestRunner(t *testing.T) {
    41  	bin := filepath.Join(os.TempDir(), "godog.test")
    42  	if err := Build(bin); err != nil {
    43  		t.Fatalf("failed to build godog test binary: %v", err)
    44  	}
    45  	os.Remove(bin)
    46  }
    47  
    48  func TestBuildTestRunnerWithoutGoFiles(t *testing.T) {
    49  	bin := filepath.Join(os.TempDir(), "godog.test")
    50  	pwd, err := os.Getwd()
    51  	if err != nil {
    52  		t.Fatalf("failed to get working directory: %v", err)
    53  	}
    54  
    55  	wd := filepath.Join(pwd, "features")
    56  	if err := os.Chdir(wd); err != nil {
    57  		t.Fatalf("failed to change working directory: %v", err)
    58  	}
    59  
    60  	defer func() {
    61  		os.Chdir(pwd) // get back to current dir
    62  	}()
    63  
    64  	if err := Build(bin); err != nil {
    65  		t.Fatalf("failed to build godog test binary: %v", err)
    66  	}
    67  	os.Remove(bin)
    68  }