mirror of
				https://github.com/go-task/task.git
				synced 2025-10-30 23:58:01 +02:00 
			
		
		
		
	change all tests to call functions instead of binary directly
I had to temporarely hack github.com/mvdan/sh to fix dir handling
This commit is contained in:
		| @@ -53,7 +53,11 @@ hello: | ||||
| 	} | ||||
|  | ||||
| 	if init { | ||||
| 		if err := task.InitTaskfile(); err != nil { | ||||
| 		wd, err := os.Getwd() | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		if err := task.InitTaskfile(wd); err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		return | ||||
|   | ||||
							
								
								
									
										7
									
								
								init.go
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								init.go
									
									
									
									
									
								
							| @@ -4,6 +4,7 @@ import ( | ||||
| 	"io/ioutil" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| ) | ||||
|  | ||||
| const defaultTaskfile = `# github.com/go-task/task | ||||
| @@ -14,14 +15,16 @@ default: | ||||
| ` | ||||
|  | ||||
| // InitTaskfile Taskfile creates a new Taskfile | ||||
| func InitTaskfile() error { | ||||
| func InitTaskfile(path string) error { | ||||
| 	for _, f := range []string{"Taskfile.yml", "Taskfile.toml", "Taskfile.json"} { | ||||
| 		f = filepath.Join(path, f) | ||||
| 		if _, err := os.Stat(f); err == nil { | ||||
| 			return ErrTaskfileAlreadyExists | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if err := ioutil.WriteFile("Taskfile.yml", []byte(defaultTaskfile), 0666); err != nil { | ||||
| 	f := filepath.Join(path, "Taskfile.yml") | ||||
| 	if err := ioutil.WriteFile(f, []byte(defaultTaskfile), 0666); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	log.Printf("Taskfile.yml created in the current directory") | ||||
|   | ||||
							
								
								
									
										40
									
								
								task_test.go
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								task_test.go
									
									
									
									
									
								
							| @@ -4,7 +4,6 @@ import ( | ||||
| 	"bytes" | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
| @@ -37,7 +36,9 @@ func TestDeps(t *testing.T) { | ||||
| 	} | ||||
|  | ||||
| 	e := &task.Executor{ | ||||
| 		Dir: dir, | ||||
| 		Dir:    dir, | ||||
| 		Stdout: ioutil.Discard, | ||||
| 		Stderr: ioutil.Discard, | ||||
| 	} | ||||
| 	assert.NoError(t, e.ReadTaskfile()) | ||||
| 	assert.NoError(t, e.Run("default")) | ||||
| @@ -69,7 +70,9 @@ func TestVars(t *testing.T) { | ||||
| 	} | ||||
|  | ||||
| 	e := &task.Executor{ | ||||
| 		Dir: dir, | ||||
| 		Dir:    dir, | ||||
| 		Stdout: ioutil.Discard, | ||||
| 		Stderr: ioutil.Discard, | ||||
| 	} | ||||
| 	assert.NoError(t, e.ReadTaskfile()) | ||||
| 	assert.NoError(t, e.Run("default")) | ||||
| @@ -101,7 +104,9 @@ func TestTaskCall(t *testing.T) { | ||||
| 	} | ||||
|  | ||||
| 	e := &task.Executor{ | ||||
| 		Dir: dir, | ||||
| 		Dir:    dir, | ||||
| 		Stdout: ioutil.Discard, | ||||
| 		Stderr: ioutil.Discard, | ||||
| 	} | ||||
| 	assert.NoError(t, e.ReadTaskfile()) | ||||
| 	assert.NoError(t, e.Run("default")) | ||||
| @@ -122,23 +127,23 @@ func TestStatus(t *testing.T) { | ||||
| 	if _, err := os.Stat(file); err == nil { | ||||
| 		t.Errorf("File should not exists: %v", err) | ||||
| 	} | ||||
| 	c := exec.Command("task", "gen-foo") | ||||
| 	c.Dir = dir | ||||
| 	if err := c.Run(); err != nil { | ||||
| 		t.Error(err) | ||||
|  | ||||
| 	e := &task.Executor{ | ||||
| 		Dir:    dir, | ||||
| 		Stdout: ioutil.Discard, | ||||
| 		Stderr: ioutil.Discard, | ||||
| 	} | ||||
| 	assert.NoError(t, e.ReadTaskfile()) | ||||
| 	assert.NoError(t, e.Run("gen-foo")) | ||||
|  | ||||
| 	if _, err := os.Stat(file); err != nil { | ||||
| 		t.Errorf("File should exists: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	buff := bytes.NewBuffer(nil) | ||||
| 	c = exec.Command("task", "gen-foo") | ||||
| 	c.Dir = dir | ||||
| 	c.Stderr = buff | ||||
| 	c.Stdout = buff | ||||
| 	if err := c.Run(); err != nil { | ||||
| 		t.Error(err) | ||||
| 	} | ||||
| 	e.Stdout, e.Stderr = buff, buff | ||||
| 	assert.NoError(t, e.Run("gen-foo")) | ||||
|  | ||||
| 	if buff.String() != `task: Task "gen-foo" is up to date`+"\n" { | ||||
| 		t.Errorf("Wrong output message: %s", buff.String()) | ||||
| 	} | ||||
| @@ -153,11 +158,10 @@ func TestInit(t *testing.T) { | ||||
| 		t.Errorf("Taskfile.yml should not exists") | ||||
| 	} | ||||
|  | ||||
| 	c := exec.Command("task", "--init") | ||||
| 	c.Dir = dir | ||||
| 	if err := c.Run(); err != nil { | ||||
| 	if err := task.InitTaskfile(dir); err != nil { | ||||
| 		t.Error(err) | ||||
| 	} | ||||
|  | ||||
| 	if _, err := os.Stat(file); err != nil { | ||||
| 		t.Errorf("Taskfile.yml should exists") | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										32
									
								
								vendor/github.com/mvdan/sh/interp/test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/mvdan/sh/interp/test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -58,19 +58,19 @@ func (r *Runner) binTest(op syntax.BinTestOperator, x, y string) bool { | ||||
| 		} | ||||
| 		return re.MatchString(x) | ||||
| 	case syntax.TsNewer: | ||||
| 		i1, i2 := stat(x), stat(y) | ||||
| 		i1, i2 := stat(r.Dir, x), stat(r.Dir, y) | ||||
| 		if i1 == nil || i2 == nil { | ||||
| 			return false | ||||
| 		} | ||||
| 		return i1.ModTime().After(i2.ModTime()) | ||||
| 	case syntax.TsOlder: | ||||
| 		i1, i2 := stat(x), stat(y) | ||||
| 		i1, i2 := stat(r.Dir, x), stat(r.Dir, y) | ||||
| 		if i1 == nil || i2 == nil { | ||||
| 			return false | ||||
| 		} | ||||
| 		return i1.ModTime().Before(i2.ModTime()) | ||||
| 	case syntax.TsDevIno: | ||||
| 		i1, i2 := stat(x), stat(y) | ||||
| 		i1, i2 := stat(r.Dir, x), stat(r.Dir, y) | ||||
| 		return os.SameFile(i1, i2) | ||||
| 	case syntax.TsEql: | ||||
| 		return atoi(x) == atoi(y) | ||||
| @@ -95,40 +95,40 @@ func (r *Runner) binTest(op syntax.BinTestOperator, x, y string) bool { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func stat(name string) os.FileInfo { | ||||
| 	info, _ := os.Stat(name) | ||||
| func stat(dir, name string) os.FileInfo { | ||||
| 	info, _ := os.Stat(filepath.Join(dir, name)) | ||||
| 	return info | ||||
| } | ||||
|  | ||||
| func statMode(name string, mode os.FileMode) bool { | ||||
| 	info := stat(name) | ||||
| func statMode(dir, name string, mode os.FileMode) bool { | ||||
| 	info := stat(dir, name) | ||||
| 	return info != nil && info.Mode()&mode != 0 | ||||
| } | ||||
|  | ||||
| func (r *Runner) unTest(op syntax.UnTestOperator, x string) bool { | ||||
| 	switch op { | ||||
| 	case syntax.TsExists: | ||||
| 		return stat(x) != nil | ||||
| 		return stat(r.Dir, x) != nil | ||||
| 	case syntax.TsRegFile: | ||||
| 		info := stat(x) | ||||
| 		info := stat(r.Dir, x) | ||||
| 		return info != nil && info.Mode().IsRegular() | ||||
| 	case syntax.TsDirect: | ||||
| 		return statMode(x, os.ModeDir) | ||||
| 		return statMode(r.Dir, x, os.ModeDir) | ||||
| 	//case syntax.TsCharSp: | ||||
| 	//case syntax.TsBlckSp: | ||||
| 	case syntax.TsNmPipe: | ||||
| 		return statMode(x, os.ModeNamedPipe) | ||||
| 		return statMode(r.Dir, x, os.ModeNamedPipe) | ||||
| 	case syntax.TsSocket: | ||||
| 		return statMode(x, os.ModeSocket) | ||||
| 		return statMode(r.Dir, x, os.ModeSocket) | ||||
| 	case syntax.TsSmbLink: | ||||
| 		info, _ := os.Lstat(x) | ||||
| 		return info != nil && info.Mode()&os.ModeSymlink != 0 | ||||
| 	case syntax.TsSticky: | ||||
| 		return statMode(x, os.ModeSticky) | ||||
| 		return statMode(r.Dir, x, os.ModeSticky) | ||||
| 	case syntax.TsUIDSet: | ||||
| 		return statMode(x, os.ModeSetuid) | ||||
| 		return statMode(r.Dir, x, os.ModeSetuid) | ||||
| 	case syntax.TsGIDSet: | ||||
| 		return statMode(x, os.ModeSetgid) | ||||
| 		return statMode(r.Dir, x, os.ModeSetgid) | ||||
| 	//case syntax.TsGrpOwn: | ||||
| 	//case syntax.TsUsrOwn: | ||||
| 	//case syntax.TsModif: | ||||
| @@ -149,7 +149,7 @@ func (r *Runner) unTest(op syntax.UnTestOperator, x string) bool { | ||||
| 		_, err := exec.LookPath(filepath.Join(r.Dir, x)) | ||||
| 		return err == nil | ||||
| 	case syntax.TsNoEmpty: | ||||
| 		info := stat(x) | ||||
| 		info := stat(r.Dir, x) | ||||
| 		return info != nil && info.Size() > 0 | ||||
| 	//case syntax.TsFdTerm: | ||||
| 	case syntax.TsEmpStr: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user