bee/test.go

102 lines
2.2 KiB
Go
Raw Permalink Normal View History

2013-09-03 17:23:58 +00:00
// Copyright 2013 bee authors
//
// Licensed under the Apache License, Version 2.0 (the "License"): you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
2013-08-22 03:03:31 +00:00
package main
import (
"os"
"os/exec"
path "path/filepath"
2013-08-22 03:03:31 +00:00
"time"
2013-12-23 15:32:01 +00:00
_ "github.com/smartystreets/goconvey/convey"
2013-08-22 03:03:31 +00:00
)
var cmdTest = &Command{
UsageLine: "test [appname]",
Short: "test the app",
Long: ``,
2013-08-22 03:03:31 +00:00
}
func init() {
cmdTest.Run = testApp
}
func safePathAppend(arr []string, paths ...string) []string {
for _, path := range paths {
if pathExists(path) {
arr = append(arr, path)
}
}
return arr
}
func pathExists(path string) bool {
_, err := os.Stat(path)
return err == nil || os.IsExist(err)
}
var started = make(chan bool)
2013-08-22 03:03:31 +00:00
2014-08-15 09:38:51 +00:00
func testApp(cmd *Command, args []string) int {
2013-08-22 03:03:31 +00:00
if len(args) != 1 {
2013-10-30 23:39:44 +00:00
ColorLog("[ERRO] Cannot start running[ %s ]\n",
2013-08-22 03:03:31 +00:00
"argument 'appname' is missing")
os.Exit(2)
}
crupath, _ := os.Getwd()
Debugf("current path:%s\n", crupath)
err := loadConfig()
if err != nil {
2013-10-30 23:39:44 +00:00
ColorLog("[ERRO] Fail to parse bee.json[ %s ]\n", err)
2013-08-22 03:03:31 +00:00
}
var paths []string
2014-04-03 08:41:44 +00:00
readAppDirectories(crupath, &paths)
2013-08-22 03:03:31 +00:00
NewWatcher(paths, nil, false)
2013-08-22 03:03:31 +00:00
appname = args[0]
for {
select {
case <-started:
runTest()
}
}
}
func runTest() {
2013-10-30 23:39:44 +00:00
ColorLog("[INFO] Start testing...\n")
time.Sleep(time.Second * 1)
crupwd, _ := os.Getwd()
testDir := path.Join(crupwd, "tests")
if pathExists(testDir) {
os.Chdir(testDir)
}
2013-08-22 03:03:31 +00:00
var err error
icmd := exec.Command("go", "test")
icmd.Stdout = os.Stdout
icmd.Stderr = os.Stderr
2013-10-30 23:54:53 +00:00
ColorLog("[TRAC] ============== Test Begin ===================\n")
2013-08-22 03:03:31 +00:00
err = icmd.Run()
2013-10-30 23:54:53 +00:00
ColorLog("[TRAC] ============== Test End ===================\n")
2013-08-22 03:03:31 +00:00
if err != nil {
2013-10-30 23:39:44 +00:00
ColorLog("[ERRO] ============== Test failed ===================\n")
ColorLog("[ERRO] %s", err)
2013-08-22 03:03:31 +00:00
return
}
2013-10-30 23:39:44 +00:00
ColorLog("[SUCC] Test finish\n")
2013-08-22 03:03:31 +00:00
}