github.com/leviable/godog@v0.8.2/builder_go111_test.go (about)

     1  // +build go1.11
     2  
     3  package godog
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"os"
     9  	"os/exec"
    10  	"path/filepath"
    11  	"testing"
    12  )
    13  
    14  func TestGodogBuildWithModuleOutsideGopathAndHavingOnlyFeature(t *testing.T) {
    15  	dir := filepath.Join(os.TempDir(), "godogs")
    16  	err := buildTestPackage(dir, map[string]string{
    17  		"godogs.feature": builderFeatureFile,
    18  	})
    19  	if err != nil {
    20  		os.RemoveAll(dir)
    21  		t.Fatal(err)
    22  	}
    23  	defer os.RemoveAll(dir)
    24  
    25  	prevDir, err := os.Getwd()
    26  	if err != nil {
    27  		t.Fatal(err)
    28  	}
    29  
    30  	if err := os.Chdir(dir); err != nil {
    31  		t.Fatal(err)
    32  	}
    33  	defer os.Chdir(prevDir)
    34  
    35  	if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
    36  		t.Log(string(out))
    37  		t.Fatal(err)
    38  	}
    39  
    40  	if out, err := exec.Command("go", "mod", "edit", "-require", fmt.Sprintf("github.com/leviable/godog@%s", Version)).CombinedOutput(); err != nil {
    41  		t.Log(string(out))
    42  		t.Fatal(err)
    43  	}
    44  
    45  	var stdout, stderr bytes.Buffer
    46  	cmd := buildTestCommand(t, "godogs.feature")
    47  	cmd.Stdout = &stdout
    48  	cmd.Stderr = &stderr
    49  	cmd.Env = os.Environ()
    50  
    51  	if err := cmd.Run(); err != nil {
    52  		t.Log(stdout.String())
    53  		t.Log(stderr.String())
    54  		t.Fatal(err)
    55  	}
    56  }
    57  
    58  func TestGodogBuildWithModuleOutsideGopath(t *testing.T) {
    59  	dir := filepath.Join(os.TempDir(), "godogs")
    60  	err := buildTestPackage(dir, map[string]string{
    61  		"godogs.feature": builderFeatureFile,
    62  		"godogs.go":      builderMainCodeFile,
    63  		"godogs_test.go": builderTestFile,
    64  	})
    65  	if err != nil {
    66  		os.RemoveAll(dir)
    67  		t.Fatal(err)
    68  	}
    69  	defer os.RemoveAll(dir)
    70  
    71  	prevDir, err := os.Getwd()
    72  	if err != nil {
    73  		t.Fatal(err)
    74  	}
    75  
    76  	if err := os.Chdir(dir); err != nil {
    77  		t.Fatal(err)
    78  	}
    79  	defer os.Chdir(prevDir)
    80  
    81  	if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
    82  		t.Log(string(out))
    83  		t.Fatal(err)
    84  	}
    85  
    86  	var stdout, stderr bytes.Buffer
    87  	cmd := buildTestCommand(t, "godogs.feature")
    88  	cmd.Stdout = &stdout
    89  	cmd.Stderr = &stderr
    90  	cmd.Env = os.Environ()
    91  
    92  	if err := cmd.Run(); err != nil {
    93  		t.Log(stdout.String())
    94  		t.Log(stderr.String())
    95  		t.Fatal(err)
    96  	}
    97  }
    98  
    99  func TestGodogBuildWithModuleWithXTestOutsideGopath(t *testing.T) {
   100  	dir := filepath.Join(os.TempDir(), "godogs")
   101  	err := buildTestPackage(dir, map[string]string{
   102  		"godogs.feature": builderFeatureFile,
   103  		"godogs.go":      builderMainCodeFile,
   104  		"godogs_test.go": builderXTestFile,
   105  	})
   106  	if err != nil {
   107  		os.RemoveAll(dir)
   108  		t.Fatal(err)
   109  	}
   110  	defer os.RemoveAll(dir)
   111  
   112  	prevDir, err := os.Getwd()
   113  	if err != nil {
   114  		t.Fatal(err)
   115  	}
   116  
   117  	if err := os.Chdir(dir); err != nil {
   118  		t.Fatal(err)
   119  	}
   120  	defer os.Chdir(prevDir)
   121  
   122  	if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
   123  		t.Log(string(out))
   124  		t.Fatal(err)
   125  	}
   126  
   127  	var stdout, stderr bytes.Buffer
   128  	cmd := buildTestCommand(t, "godogs.feature")
   129  	cmd.Stdout = &stdout
   130  	cmd.Stderr = &stderr
   131  	cmd.Env = os.Environ()
   132  
   133  	if err := cmd.Run(); err != nil {
   134  		t.Log(stdout.String())
   135  		t.Log(stderr.String())
   136  		t.Fatal(err)
   137  	}
   138  }
   139  
   140  func TestGodogBuildWithModuleInsideGopath(t *testing.T) {
   141  	gopath := filepath.Join(os.TempDir(), "_gp")
   142  	dir := filepath.Join(gopath, "src", "godogs")
   143  	err := buildTestPackage(dir, map[string]string{
   144  		"godogs.feature": builderFeatureFile,
   145  		"godogs.go":      builderMainCodeFile,
   146  		"godogs_test.go": builderTestFile,
   147  	})
   148  	if err != nil {
   149  		os.RemoveAll(gopath)
   150  		t.Fatal(err)
   151  	}
   152  	defer os.RemoveAll(gopath)
   153  
   154  	prevDir, err := os.Getwd()
   155  	if err != nil {
   156  		t.Fatal(err)
   157  	}
   158  
   159  	if err := os.Chdir(dir); err != nil {
   160  		t.Fatal(err)
   161  	}
   162  	defer os.Chdir(prevDir)
   163  
   164  	c := exec.Command("go", "mod", "init", "godogs")
   165  	c.Env = os.Environ()
   166  	c.Env = append(c.Env, "GOPATH="+gopath)
   167  	c.Env = append(c.Env, "GO111MODULE=on")
   168  	if out, err := c.CombinedOutput(); err != nil {
   169  		t.Log(string(out))
   170  		t.Fatal(err)
   171  	}
   172  
   173  	var stdout, stderr bytes.Buffer
   174  	cmd := buildTestCommand(t, "godogs.feature")
   175  	cmd.Stdout = &stdout
   176  	cmd.Stderr = &stderr
   177  	cmd.Env = os.Environ()
   178  	cmd.Env = append(cmd.Env, "GOPATH="+gopath)
   179  	cmd.Env = append(cmd.Env, "GO111MODULE=on")
   180  
   181  	if err := cmd.Run(); err != nil {
   182  		t.Log(stdout.String())
   183  		t.Log(stderr.String())
   184  		t.Fatal(err)
   185  	}
   186  }