1
0
mirror of https://github.com/go-task/task.git synced 2025-01-04 03:48:02 +02:00

Added version validation and updated tests

This commit is contained in:
Evgeny Abramovich 2020-02-15 17:24:06 +03:00
parent f38ba7fcd3
commit 17ad7060b3
6 changed files with 48 additions and 5 deletions

View File

@ -9,8 +9,9 @@ var (
// IncludedTaskfile represents information about included tasksfile
type IncludedTaskfile struct {
Taskfile string
Dir string
Taskfile string
Dir string
AdvancedImport bool
}
// IncludedTaskfiles represents information about included tasksfiles
@ -31,6 +32,7 @@ func (it *IncludedTaskfile) UnmarshalYAML(unmarshal func(interface{}) error) err
if err := unmarshal(&includedTaskfile); err == nil {
it.Dir = includedTaskfile.Dir
it.Taskfile = includedTaskfile.Taskfile
it.AdvancedImport = true
return nil
}

View File

@ -45,9 +45,11 @@ func Taskfile(dir string, entrypoint string) (*taskfile.Taskfile, error) {
return nil, ErrIncludedTaskfilesCantHaveIncludes
}
for _, task := range includedTaskfile.Tasks {
if !filepath.IsAbs(task.Dir) {
task.Dir = filepath.Join(includedTask.Dir, task.Dir)
if includedTask.AdvancedImport {
for _, task := range includedTaskfile.Tasks {
if !filepath.IsAbs(task.Dir) {
task.Dir = filepath.Join(includedTask.Dir, task.Dir)
}
}
}

View File

@ -207,6 +207,14 @@ func (e *Executor) Setup() error {
}
}
if v < 3 {
for _, taskfile := range e.Taskfile.Includes {
if taskfile.AdvancedImport {
return errors.New(`task: Import with additional parameters is only available starting on Taskfile version v3`)
}
}
}
e.taskCallCount = make(map[string]*int32, len(e.Taskfile.Tasks))
e.mkdirMutexMap = make(map[string]*sync.Mutex, len(e.Taskfile.Tasks))
for k := range e.Taskfile.Tasks {

View File

@ -551,6 +551,21 @@ func TestIncludes(t *testing.T) {
tt.Run(t)
}
func TestIncorrectVersionIncludes(t *testing.T) {
const dir = "testdata/incorrect_includes"
expectedError := "task: Import with additional parameters is only available starting on Taskfile version v3"
var buff bytes.Buffer
e := task.Executor{
Dir: dir,
Stdout: &buff,
Stderr: &buff,
Silent: true,
}
assert.EqualError(t, e.Setup(), expectedError)
}
func TestIncludesEmptyMain(t *testing.T) {
tt := fileContentTest{
Dir: "testdata/includes_empty",

View File

@ -0,0 +1,10 @@
version: '2.6'
includes:
included:
taskfile: ./included
tasks:
default:
cmds:
- task: gen

View File

@ -0,0 +1,6 @@
version: '2.6'
tasks:
gen:
cmds:
- echo incorrect includes test