Skip to content

Commit

Permalink
Merge pull request #2 from antage/master
Browse files Browse the repository at this point in the history
Events burst guard. Fixes #1.
  • Loading branch information
ryanslade committed Sep 22, 2012
2 parents 325ee96 + 70e25bd commit 4e77276
Showing 1 changed file with 33 additions and 24 deletions.
57 changes: 33 additions & 24 deletions goautotest.go
Expand Up @@ -7,8 +7,36 @@ import (
"os"
"os/exec"
"strings"
"time"
)

func startGoTest() {
fmt.Println("Running tests...")

args := append([]string{"test"}, os.Args[1:]...)
cmd := exec.Command("go", args...)

stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
os.Exit(1)
}

err = cmd.Start()
if err != nil {
fmt.Println(err)
os.Exit(1)
}

go io.Copy(os.Stdout, stdout)
err = cmd.Wait()
if err != nil {
fmt.Println(err)
}

fmt.Println()
}

func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
Expand All @@ -30,38 +58,19 @@ func main() {

defer watcher.Close()

burstGuard := make(<-chan time.Time)
for {
select {
case ev := <-watcher.Event:
if strings.HasSuffix(ev.Name, ".go") {
fmt.Println("Running tests...")

args := append([]string{"test"}, os.Args[1:]...)
cmd := exec.Command("go", args...)

stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
break
}

err = cmd.Start()
if err != nil {
fmt.Println(err)
break
}

go io.Copy(os.Stdout, stdout)
err = cmd.Wait()
if err != nil {
fmt.Println(err)
}

fmt.Println()
burstGuard = time.After(500 * time.Millisecond)
}

case err := <-watcher.Error:
fmt.Println(err)

case <-burstGuard:
startGoTest()
}
}

Expand Down

0 comments on commit 4e77276

Please sign in to comment.