2017-10-08 21:09:45 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"gopkg.in/urfave/cli.v2"
|
2017-10-14 21:40:39 +00:00
|
|
|
"log"
|
2017-10-08 21:09:45 +00:00
|
|
|
"reflect"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2017-10-14 21:40:39 +00:00
|
|
|
type logT struct{}
|
|
|
|
|
|
|
|
func (logT) Write(bytes []byte) (int, error) {
|
|
|
|
return 0, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestMain(m *testing.M) {
|
|
|
|
log.SetFlags(0)
|
|
|
|
log.SetOutput(logT{})
|
|
|
|
}
|
|
|
|
|
2017-10-08 21:09:45 +00:00
|
|
|
func TestBlueprint_Clean(t *testing.T) {
|
2017-10-08 21:24:15 +00:00
|
|
|
r := realize{}
|
|
|
|
r.Schema = append(r.Schema, Project{Name: "test0"})
|
|
|
|
r.Schema = append(r.Schema, Project{Name: "test0"})
|
|
|
|
r.clean()
|
|
|
|
if len(r.Schema) > 1 {
|
2017-10-08 21:09:45 +00:00
|
|
|
t.Error("Expected only one project")
|
|
|
|
}
|
2017-10-08 21:24:15 +00:00
|
|
|
r.Schema = append(r.Schema, Project{Path: "test1"})
|
|
|
|
r.Schema = append(r.Schema, Project{Path: "test1"})
|
|
|
|
r.clean()
|
|
|
|
if len(r.Schema) > 2 {
|
2017-10-08 21:09:45 +00:00
|
|
|
t.Error("Expected only one project")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlueprint_Add(t *testing.T) {
|
2017-10-08 21:24:15 +00:00
|
|
|
r := realize{}
|
2017-10-08 21:09:45 +00:00
|
|
|
// add all flags, test with expected
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
set.Bool("fmt", false, "")
|
|
|
|
set.Bool("vet", false, "")
|
|
|
|
set.Bool("test", false, "")
|
|
|
|
set.Bool("install", false, "")
|
|
|
|
set.Bool("run", false, "")
|
|
|
|
set.Bool("build", false, "")
|
|
|
|
set.Bool("generate", false, "")
|
|
|
|
set.String("path", "", "")
|
|
|
|
c := cli.NewContext(nil, set, nil)
|
|
|
|
set.Parse([]string{"--path=test_path", "--fmt", "--install", "--run", "--build", "--generate", "--test", "--vet"})
|
2017-10-08 21:24:15 +00:00
|
|
|
r.add(c)
|
2017-10-08 21:09:45 +00:00
|
|
|
expected := Project{
|
|
|
|
Name: "test_path",
|
|
|
|
Path: "test_path",
|
|
|
|
Cmds: Cmds{
|
|
|
|
Fmt: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Install: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Generate: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Test: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Build: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Vet: Cmd{
|
|
|
|
Status: true,
|
|
|
|
},
|
|
|
|
Run: true,
|
|
|
|
},
|
|
|
|
Watcher: Watch{
|
|
|
|
Paths: []string{"/"},
|
|
|
|
Ignore: []string{"vendor"},
|
|
|
|
Exts: []string{"go"},
|
|
|
|
},
|
|
|
|
}
|
2017-10-08 21:24:15 +00:00
|
|
|
if !reflect.DeepEqual(r.Schema[0], expected) {
|
2017-10-08 21:09:45 +00:00
|
|
|
t.Error("Expected equal struct")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlueprint_Check(t *testing.T) {
|
2017-10-08 21:24:15 +00:00
|
|
|
r := realize{}
|
|
|
|
err := r.check()
|
2017-10-08 21:09:45 +00:00
|
|
|
if err == nil {
|
|
|
|
t.Error("There is no project, error expected")
|
|
|
|
}
|
2017-10-08 21:24:15 +00:00
|
|
|
r.Schema = append(r.Schema, Project{Name: "test0"})
|
|
|
|
err = r.check()
|
2017-10-08 21:09:45 +00:00
|
|
|
if err != nil {
|
|
|
|
t.Error("There is a project, error unexpected", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlueprint_Remove(t *testing.T) {
|
2017-10-08 21:24:15 +00:00
|
|
|
r := realize{}
|
2017-10-08 21:09:45 +00:00
|
|
|
set := flag.NewFlagSet("name", 0)
|
|
|
|
set.String("name", "", "")
|
|
|
|
c := cli.NewContext(nil, set, nil)
|
|
|
|
set.Parse([]string{"--name=test0"})
|
2017-10-08 21:24:15 +00:00
|
|
|
err := r.remove(c)
|
2017-10-08 21:09:45 +00:00
|
|
|
if err == nil {
|
|
|
|
t.Error("Expected an error, there are no projects")
|
|
|
|
}
|
|
|
|
// Append a new project
|
2017-10-08 21:24:15 +00:00
|
|
|
r.Schema = append(r.Schema, Project{Name: "test0"})
|
|
|
|
err = r.remove(c)
|
2017-10-08 21:09:45 +00:00
|
|
|
if err != nil {
|
|
|
|
t.Error("Error unexpected, the project should be remove", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBlueprint_Run(t *testing.T) {
|
|
|
|
set := flag.NewFlagSet("test", 0)
|
|
|
|
params := cli.NewContext(nil, set, nil)
|
|
|
|
m := make(map[string]string)
|
|
|
|
m["test"] = "test"
|
2017-10-08 21:24:15 +00:00
|
|
|
r := realize{}
|
|
|
|
r.Schema = []Project{
|
2017-10-08 21:09:45 +00:00
|
|
|
{
|
2017-10-08 21:24:15 +00:00
|
|
|
Name: "test0",
|
|
|
|
Path: ".",
|
2017-10-08 21:09:45 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "test1",
|
2017-10-08 21:24:15 +00:00
|
|
|
Path: "/test",
|
2017-10-08 21:09:45 +00:00
|
|
|
},
|
|
|
|
{
|
2017-10-08 21:24:15 +00:00
|
|
|
Name: "test2",
|
|
|
|
Path: "/test",
|
2017-10-08 21:09:45 +00:00
|
|
|
},
|
|
|
|
}
|
2017-10-08 21:24:15 +00:00
|
|
|
go r.run(params)
|
2017-10-14 21:40:39 +00:00
|
|
|
time.Sleep(1 * time.Second)
|
2017-10-08 21:09:45 +00:00
|
|
|
}
|