tests nad bug fix
This commit is contained in:
parent
894493584e
commit
8b203f9bb7
@ -1168,7 +1168,7 @@ func start(c *cli.Context) (err error) {
|
|||||||
}
|
}
|
||||||
if c.String("name") != "" {
|
if c.String("name") != "" {
|
||||||
// filter by name flag if exist
|
// 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
|
// increase file limit
|
||||||
if r.Settings.FileLimit != 0 {
|
if r.Settings.FileLimit != 0 {
|
||||||
@ -1205,8 +1205,7 @@ func start(c *cli.Context) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// start workflow
|
// start workflow
|
||||||
r.Start()
|
return r.Start()
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove a project from an existing config
|
// Remove a project from an existing config
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
"github.com/go-siris/siris/core/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -70,23 +71,33 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stop realize workflow
|
// Stop realize workflow
|
||||||
func (r *Realize) Stop() {
|
func (r *Realize) Stop() error{
|
||||||
close(r.exit)
|
if r.exit != nil{
|
||||||
|
close(r.exit)
|
||||||
|
return nil
|
||||||
|
}else{
|
||||||
|
return errors.New("exit chan undefined")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start realize workflow
|
// Start realize workflow
|
||||||
func (r *Realize) Start() {
|
func (r *Realize) Start() error {
|
||||||
r.exit = make(chan os.Signal, 1)
|
if len(r.Schema.Projects) > 0 {
|
||||||
signal.Notify(r.exit, os.Interrupt)
|
r.exit = make(chan os.Signal, 1)
|
||||||
for k := range r.Schema.Projects {
|
signal.Notify(r.exit, os.Interrupt)
|
||||||
r.Schema.Projects[k].parent = r
|
for k := range r.Schema.Projects {
|
||||||
go r.Schema.Projects[k].Watch(r.exit)
|
r.Schema.Projects[k].parent = r
|
||||||
}
|
go r.Schema.Projects[k].Watch(r.exit)
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-r.exit:
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-r.exit:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}else{
|
||||||
|
return errors.New("there are no projects")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,11 @@ func TestRealize_Stop(t *testing.T) {
|
|||||||
|
|
||||||
func TestRealize_Start(t *testing.T) {
|
func TestRealize_Start(t *testing.T) {
|
||||||
r := Realize{}
|
r := Realize{}
|
||||||
|
err := r.Start()
|
||||||
|
if err == nil{
|
||||||
|
t.Error("Error expected")
|
||||||
|
}
|
||||||
|
r.Projects = append(r.Projects,Project{Name:"test"})
|
||||||
go func() {
|
go func() {
|
||||||
time.Sleep(100)
|
time.Sleep(100)
|
||||||
close(r.exit)
|
close(r.exit)
|
||||||
@ -29,7 +34,10 @@ func TestRealize_Start(t *testing.T) {
|
|||||||
t.Error("Unexpected error", "channel should be closed")
|
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) {
|
func TestRealize_Prefix(t *testing.T) {
|
||||||
|
@ -36,7 +36,7 @@ func (s *Schema) Remove(name string) error {
|
|||||||
// New create a project using cli fields
|
// New create a project using cli fields
|
||||||
func (s *Schema) New(c *cli.Context) Project {
|
func (s *Schema) New(c *cli.Context) Project {
|
||||||
name := filepath.Base(c.String("path"))
|
name := filepath.Base(c.String("path"))
|
||||||
if name == "." {
|
if len(name) == 0 || name == "." {
|
||||||
name = filepath.Base(Wdir())
|
name = filepath.Base(Wdir())
|
||||||
}
|
}
|
||||||
project := Project{
|
project := Project{
|
||||||
@ -76,4 +76,17 @@ func (s *Schema) New(c *cli.Context) Project {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Filter project list by field
|
// 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
|
||||||
|
}
|
||||||
|
@ -1 +1,104 @@
|
|||||||
package realize
|
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")
|
||||||
|
}
|
||||||
|
}
|
@ -52,6 +52,7 @@ type Files struct {
|
|||||||
// Resource status and file name
|
// Resource status and file name
|
||||||
type Resource struct {
|
type Resource struct {
|
||||||
Status bool
|
Status bool
|
||||||
|
Path string
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user