From 9ba4bbc1bc6ee42c208ddcef09bd37faf868653f Mon Sep 17 00:00:00 2001 From: fanngyuan Date: Thu, 22 Aug 2013 11:03:31 +0800 Subject: [PATCH] add test --- apiapp.go | 2 ++ test.go | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 test.go diff --git a/apiapp.go b/apiapp.go index 705b1a0..18b1a91 100644 --- a/apiapp.go +++ b/apiapp.go @@ -194,6 +194,8 @@ func createapi(cmd *Command, args []string) { fmt.Println("create controllers:", path.Join(apppath, "controllers")) os.Mkdir(path.Join(apppath, "models"), 0755) fmt.Println("create models:", path.Join(apppath, "models")) + os.Mkdir(path.Join(apppath, "tests"), 0755) + fmt.Println("create tests:", path.Join(apppath, "tests")) fmt.Println("create conf app.conf:", path.Join(apppath, "conf", "app.conf")) writetofile(path.Join(apppath, "conf", "app.conf"), diff --git a/test.go b/test.go new file mode 100644 index 0000000..56446b4 --- /dev/null +++ b/test.go @@ -0,0 +1,82 @@ +package main + +import ( + "os" + path "path/filepath" + "os/exec" + "time" + "bytes" +) + +var cmdTest = &Command{ + UsageLine: "test [appname]", + Short: "test the app", + Long: ``, +} + +func init() { + cmdTest.Run = testApp +} + +var started= make(chan bool) + +func testApp(cmd *Command, args []string) { + if len(args) != 1 { + colorLog("[ERRO] Cannot start running[ %s ]\n", + "argument 'appname' is missing") + os.Exit(2) + } + crupath, _ := os.Getwd() + Debugf("current path:%s\n", crupath) + + err := loadConfig() + if err != nil { + colorLog("[ERRO] Fail to parse bee.json[ %s ]", err) + } + var paths []string + paths = append(paths, + path.Join(crupath, conf.DirStruct.Controllers), + path.Join(crupath, conf.DirStruct.Models), + path.Join(crupath, "./")) // Current path. + // Because monitor files has some issues, we watch current directory + // and ignore non-go files. + paths = append(paths, conf.DirStruct.Others...) + paths = append(paths, conf.MainFiles.Others...) + + NewWatcher(paths) + appname = args[0] + Autobuild() + for { + select { + case <-started: + runTest() + Kill() + os.Exit(0) + } + } +} + +func runTest(){ + colorLog("[INFO] Start testing...\n") + time.Sleep(time.Second*5) + path, _ := os.Getwd() + os.Chdir(path+"/tests") + + var err error + icmd := exec.Command("go", "test") + var out,errbuffer bytes.Buffer + icmd.Stdout = &out + icmd.Stderr = &errbuffer + colorLog("[INFO] ============== Test Begin ===================\n") + err = icmd.Run() + colorLog(out.String()) + colorLog(errbuffer.String()) + colorLog("[INFO] ============== Test End ===================\n") + + if err != nil { + colorLog("[ERRO] ============== Test failed ===================\n") + colorLog("[ERRO] " ,err) + return + } + colorLog("[SUCC] Test finish\n") +}