tests nad bug fix

This commit is contained in:
asoseil 2017-12-03 15:44:38 +01:00
parent 894493584e
commit 8b203f9bb7
6 changed files with 154 additions and 19 deletions

View File

@ -1168,7 +1168,7 @@ func start(c *cli.Context) (err error) {
}
if c.String("name") != "" {
// filter by name flag if exist
r.Schema.Filter("name", c.String("name"))
r.Schema.Projects = r.Schema.Filter("Name", c.String("name"))
}
// increase file limit
if r.Settings.FileLimit != 0 {
@ -1205,8 +1205,7 @@ func start(c *cli.Context) (err error) {
}
}
// start workflow
r.Start()
return
return r.Start()
}
// Remove a project from an existing config

View File

@ -10,6 +10,7 @@ import (
"path/filepath"
"strings"
"time"
"github.com/go-siris/siris/core/errors"
)
const (
@ -70,23 +71,33 @@ func init() {
}
// Stop realize workflow
func (r *Realize) Stop() {
close(r.exit)
func (r *Realize) Stop() error{
if r.exit != nil{
close(r.exit)
return nil
}else{
return errors.New("exit chan undefined")
}
}
// Start realize workflow
func (r *Realize) Start() {
r.exit = make(chan os.Signal, 1)
signal.Notify(r.exit, os.Interrupt)
for k := range r.Schema.Projects {
r.Schema.Projects[k].parent = r
go r.Schema.Projects[k].Watch(r.exit)
}
for {
select {
case <-r.exit:
return
func (r *Realize) Start() error {
if len(r.Schema.Projects) > 0 {
r.exit = make(chan os.Signal, 1)
signal.Notify(r.exit, os.Interrupt)
for k := range r.Schema.Projects {
r.Schema.Projects[k].parent = r
go r.Schema.Projects[k].Watch(r.exit)
}
for {
select {
case <-r.exit:
return nil
}
}
return nil
}else{
return errors.New("there are no projects")
}
}

View File

@ -21,6 +21,11 @@ func TestRealize_Stop(t *testing.T) {
func TestRealize_Start(t *testing.T) {
r := Realize{}
err := r.Start()
if err == nil{
t.Error("Error expected")
}
r.Projects = append(r.Projects,Project{Name:"test"})
go func() {
time.Sleep(100)
close(r.exit)
@ -29,7 +34,10 @@ func TestRealize_Start(t *testing.T) {
t.Error("Unexpected error", "channel should be closed")
}
}()
r.Start()
err = r.Start()
if err != nil{
t.Error("Unexpected error", err)
}
}
func TestRealize_Prefix(t *testing.T) {

View File

@ -36,7 +36,7 @@ func (s *Schema) Remove(name string) error {
// New create a project using cli fields
func (s *Schema) New(c *cli.Context) Project {
name := filepath.Base(c.String("path"))
if name == "." {
if len(name) == 0 || name == "." {
name = filepath.Base(Wdir())
}
project := Project{
@ -76,4 +76,17 @@ func (s *Schema) New(c *cli.Context) Project {
}
// Filter project list by field
func (s *Schema) Filter(field string, value interface{}) {}
func (s *Schema) Filter(field string, value interface{}) []Project{
result := []Project{}
for _, item := range s.Projects{
v := reflect.ValueOf(item)
for i := 0; i < v.NumField(); i++ {
if v.Type().Field(i).Name == field {
if reflect.DeepEqual(v.Field(i).Interface(), value) {
result = append(result,item)
}
}
}
}
return result
}

View File

@ -1 +1,104 @@
package realize
import (
"testing"
"flag"
"gopkg.in/urfave/cli.v2"
"path/filepath"
)
func TestSchema_Add(t *testing.T) {
r := Realize{}
p := Project{Name:"test"}
r.Add(p)
if len(r.Schema.Projects) != 1{
t.Error("Unexpected error there are",len(r.Schema.Projects),"instead one")
}
r.Add(p)
if len(r.Schema.Projects) != 1{
t.Error("Unexpected error there are",len(r.Schema.Projects),"instead one")
}
r.Add(Project{Name:"testing"})
if len(r.Schema.Projects) != 2{
t.Error("Unexpected error there are",len(r.Schema.Projects),"instead two")
}
}
func TestSchema_Remove(t *testing.T) {
r := Realize{}
r.Schema.Projects = []Project{
{
Name: "test",
},{
Name: "testing",
},{
Name: "testing",
},
}
r.Remove("testing")
if len(r.Schema.Projects) != 2{
t.Error("Unexpected errore there are",len(r.Schema.Projects),"instead one")
}
}
func TestSchema_New(t *testing.T) {
r := Realize{}
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{"--fmt", "--install", "--run", "--build", "--generate", "--test", "--vet"})
p := r.New(c)
if p.Name != filepath.Base(Wdir()){
t.Error("Unexpected error",p.Name,"instead",filepath.Base(Wdir()))
}
if !p.Tools.Install.Status{
t.Error("Install should be enabled")
}
if !p.Tools.Fmt.Status{
t.Error("Fmt should be enabled")
}
if !p.Tools.Run.Status{
t.Error("Run should be enabled")
}
if !p.Tools.Build.Status{
t.Error("Build should be enabled")
}
if !p.Tools.Generate.Status{
t.Error("Generate should be enabled")
}
if !p.Tools.Test.Status{
t.Error("Test should be enabled")
}
if !p.Tools.Vet.Status{
t.Error("Vet should be enabled")
}
}
func TestSchema_Filter(t *testing.T) {
r := Realize{}
r.Schema.Projects = []Project{
{
Name: "test",
},{
Name: "test",
},
{
Name: "example",
},
}
result := r.Filter("Name","test")
if len(result) != 2{
t.Error("Expected two project")
}
result = r.Filter("Name","example")
if len(result) != 1{
t.Error("Expected one project")
}
}

View File

@ -52,6 +52,7 @@ type Files struct {
// Resource status and file name
type Resource struct {
Status bool
Path string
Name string
}