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