github.com/CUCUMBER/godog@v0.7.9/builder_go111_test.go (about)

     1  // +build go1.11
     2  
     3  package godog
     4  
     5  import (
     6  	"bytes"
     7  	"os"
     8  	"os/exec"
     9  	"path/filepath"
    10  	"testing"
    11  )
    12  
    13  func TestGodogBuildWithModuleOutsideGopath(t *testing.T) {
    14  	dir := filepath.Join(os.TempDir(), "godogs")
    15  	err := buildTestPackage(dir, map[string]string{
    16  		"godogs.feature": builderFeatureFile,
    17  		"godogs.go":      builderMainCodeFile,
    18  		"godogs_test.go": builderTestFile,
    19  	})
    20  	if err != nil {
    21  		os.RemoveAll(dir)
    22  		t.Fatal(err)
    23  	}
    24  	defer os.RemoveAll(dir)
    25  
    26  	prevDir, err := os.Getwd()
    27  	if err != nil {
    28  		t.Fatal(err)
    29  	}
    30  
    31  	if err := os.Chdir(dir); err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	defer os.Chdir(prevDir)
    35  
    36  	if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
    37  		t.Log(string(out))
    38  		t.Fatal(err)
    39  	}
    40  
    41  	var stdout, stderr bytes.Buffer
    42  	cmd := buildTestCommand(t, "godogs.feature")
    43  	cmd.Stdout = &stdout
    44  	cmd.Stderr = &stderr
    45  	cmd.Env = os.Environ()
    46  
    47  	if err := cmd.Run(); err != nil {
    48  		t.Log(stdout.String())
    49  		t.Log(stderr.String())
    50  		t.Fatal(err)
    51  	}
    52  }
    53  
    54  func TestGodogBuildWithModuleOutsideGopathWithXTest(t *testing.T) {
    55  	dir := filepath.Join(os.TempDir(), "godogs")
    56  	err := buildTestPackage(dir, map[string]string{
    57  		"godogs.feature": builderFeatureFile,
    58  		"godogs.go":      builderMainCodeFile,
    59  		"godogs_test.go": builderXTestFile,
    60  	})
    61  	if err != nil {
    62  		os.RemoveAll(dir)
    63  		t.Fatal(err)
    64  	}
    65  	defer os.RemoveAll(dir)
    66  
    67  	prevDir, err := os.Getwd()
    68  	if err != nil {
    69  		t.Fatal(err)
    70  	}
    71  
    72  	if err := os.Chdir(dir); err != nil {
    73  		t.Fatal(err)
    74  	}
    75  	defer os.Chdir(prevDir)
    76  
    77  	if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
    78  		t.Log(string(out))
    79  		t.Fatal(err)
    80  	}
    81  
    82  	var stdout, stderr bytes.Buffer
    83  	cmd := buildTestCommand(t, "godogs.feature")
    84  	cmd.Stdout = &stdout
    85  	cmd.Stderr = &stderr
    86  	cmd.Env = os.Environ()
    87  
    88  	if err := cmd.Run(); err != nil {
    89  		t.Log(stdout.String())
    90  		t.Log(stderr.String())
    91  		t.Fatal(err)
    92  	}
    93  }
    94  
    95  func TestGodogBuildWithModuleInsideGopath(t *testing.T) {
    96  	gopath := filepath.Join(os.TempDir(), "_gp")
    97  	dir := filepath.Join(gopath, "src", "godogs")
    98  	err := buildTestPackage(dir, map[string]string{
    99  		"godogs.feature": builderFeatureFile,
   100  		"godogs.go":      builderMainCodeFile,
   101  		"godogs_test.go": builderTestFile,
   102  	})
   103  	if err != nil {
   104  		os.RemoveAll(gopath)
   105  		t.Fatal(err)
   106  	}
   107  	defer os.RemoveAll(gopath)
   108  
   109  	prevDir, err := os.Getwd()
   110  	if err != nil {
   111  		t.Fatal(err)
   112  	}
   113  
   114  	if err := os.Chdir(dir); err != nil {
   115  		t.Fatal(err)
   116  	}
   117  	defer os.Chdir(prevDir)
   118  
   119  	c := exec.Command("go", "mod", "init", "godogs")
   120  	c.Env = os.Environ()
   121  	c.Env = append(c.Env, "GOPATH="+gopath)
   122  	c.Env = append(c.Env, "GO111MODULE=on")
   123  	if out, err := c.CombinedOutput(); err != nil {
   124  		t.Log(string(out))
   125  		t.Fatal(err)
   126  	}
   127  
   128  	var stdout, stderr bytes.Buffer
   129  	cmd := buildTestCommand(t, "godogs.feature")
   130  	cmd.Stdout = &stdout
   131  	cmd.Stderr = &stderr
   132  	cmd.Env = os.Environ()
   133  	cmd.Env = append(cmd.Env, "GOPATH="+gopath)
   134  	cmd.Env = append(cmd.Env, "GO111MODULE=on")
   135  
   136  	if err := cmd.Run(); err != nil {
   137  		t.Log(stdout.String())
   138  		t.Log(stderr.String())
   139  		t.Fatal(err)
   140  	}
   141  }