annotate libgo/misc/cgo/life/life_test.go @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 // Copyright 2019 The Go Authors. All rights reserved.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 // Use of this source code is governed by a BSD-style
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 // license that can be found in the LICENSE file.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 package life_test
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 import (
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 "bytes"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 "io/ioutil"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 "log"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 "os"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 "os/exec"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 "path/filepath"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 "strings"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 "testing"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 )
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 func TestMain(m *testing.M) {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 log.SetFlags(log.Lshortfile)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 os.Exit(testMain(m))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 func testMain(m *testing.M) int {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 GOPATH, err := ioutil.TempDir("", "cgolife")
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 if err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 log.Panic(err)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 defer os.RemoveAll(GOPATH)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 os.Setenv("GOPATH", GOPATH)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 // Copy testdata into GOPATH/src/cgolife, along with a go.mod file
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 // declaring the same path.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 modRoot := filepath.Join(GOPATH, "src", "cgolife")
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 if err := overlayDir(modRoot, "testdata"); err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 log.Panic(err)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 if err := os.Chdir(modRoot); err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 log.Panic(err)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 os.Setenv("PWD", modRoot)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 if err := ioutil.WriteFile("go.mod", []byte("module cgolife\n"), 0666); err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 log.Panic(err)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 return m.Run()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 func TestTestRun(t *testing.T) {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 if os.Getenv("GOOS") == "android" {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 t.Skip("the go tool runs with CGO_ENABLED=0 on the android device")
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 out, err := exec.Command("go", "env", "GOROOT").Output()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 if err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 t.Fatal(err)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 GOROOT := string(bytes.TrimSpace(out))
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 cmd := exec.Command("go", "run", filepath.Join(GOROOT, "test", "run.go"), "-", ".")
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 out, err = cmd.CombinedOutput()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 if err != nil {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 t.Fatalf("%s: %s\n%s", strings.Join(cmd.Args, " "), err, out)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 t.Logf("%s:\n%s", strings.Join(cmd.Args, " "), out)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 }