-
Notifications
You must be signed in to change notification settings - Fork 6
/
test.go
142 lines (119 loc) · 3.39 KB
/
test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package goraddtool
import (
"fmt"
sys2 "github.com/goradd/gofile/pkg/sys"
"github.com/goradd/goradd/internal/ci"
"github.com/goradd/goradd/pkg/sys"
"io/ioutil"
"log"
"os"
"path/filepath"
)
func test(step int, browser bool, headless bool) {
loadCwd()
switch step {
case 0:
copyTestDir()
testCodegen()
pkgTest()
dbTest()
browserTest(browser)
case 1:
copyTestDir()
case 2:
testCodegen()
case 3:
pkgTest()
case 4:
dbTest()
case 5:
browserTest(browser)
}
}
func copyTestDir() {
var err error
var fInfos []os.FileInfo
if fInfos, err = ioutil.ReadDir(cwd); err != nil {
log.Fatal(fmt.Errorf("could not read the current directory: %s", err.Error()))
}
// make sure we have a goradd-project directory, or the tests will not work
var hasProj bool
for _, fInfo := range fInfos {
if fInfo.Name() == "goradd-project" && fInfo.IsDir() {
hasProj = true
}
}
if !hasProj {
log.Fatal("Could not find a goradd-project directory in the current working directory")
}
dest := filepath.Join(cwd, "goradd-test")
err = os.RemoveAll(dest)
if err != nil {
log.Fatal("could not remove goradd-test directory: " + err.Error())
}
err = sys2.CopyDirectory(filepath.Join(ci.TestFolderLocation, "goradd-test"), cwd, sys2.CopyDoNotOverwrite)
if err != nil {
log.Fatal("could not copy directory: " + err.Error())
}
}
func testCodegen() {
var err error
err = os.Chdir(filepath.Join(cwd, "goradd-test", "codegen")) // For module-aware mode in go v1.11, we have to be in a directory with a go.mod file
// Release notes for go v1.12 appear to indicate they have fixed this.
if err != nil {
log.Fatal("could not change to the goradd-test/codegen directory: " + err.Error())
}
var cmd = "go generate build.go"
var generateResult []byte
generateResult, err = sys2.ExecuteShellCommand(cmd)
fmt.Print(string(generateResult))
if err != nil {
log.Fatal("could not generate code: " + err.Error())
}
}
func pkgTest() {
var err error
err = os.Chdir(filepath.Join(cwd, "goradd-project")) // For module-aware mode in go v1.11, we have to be in a directory with a go.mod file
if err != nil {
log.Fatal("could not change to the goradd-project directory: " + err.Error())
}
cmd := "go test github.com/goradd/goradd/pkg/..."
var testResult []byte
testResult, err = sys2.ExecuteShellCommand(cmd)
fmt.Print(string(testResult))
if err != nil {
log.Fatal("pkg unit test failed: " + err.Error())
}
}
func dbTest() {
var err error
err = os.Chdir(filepath.Join(cwd, "goradd-project")) // For module-aware mode in go v1.11, we have to be in a directory with a go.mod file
if err != nil {
log.Fatal("could not change to the goradd-project directory: " + err.Error())
}
cmd := "go test github.com/goradd/goradd/test/dbtest"
var testResult []byte
testResult, err = sys2.ExecuteShellCommand(cmd)
fmt.Print(string(testResult))
if err != nil {
log.Fatal("dbtest failed: " + err.Error())
}
}
func browserTest(browser bool) {
if browser {
if err := sys.LaunchChrome("http://localhost:8000/goradd/Test.g?all=1"); err != nil {
log.Fatal(err)
}
}
if err := os.Chdir(filepath.Join(cwd, "goradd-test")); err != nil {
log.Fatal("could not change to the goradd-test directory: " + err.Error())
}
cmd := "go run main.go"
var result []byte
var err error
result, err = sys2.ExecuteShellCommand(cmd)
fmt.Print(string(result))
if err != nil {
log.Fatal("browser test failed: " + err.Error())
}
}