1
0
mirror of https://github.com/go-task/task.git synced 2025-03-19 21:17:46 +02:00
task/internal/summary/summary_test.go

172 lines
3.6 KiB
Go
Raw Normal View History

2019-02-24 17:05:37 +01:00
package summary_test
import (
"bytes"
"strings"
2019-03-04 12:04:31 +01:00
"testing"
"github.com/stretchr/testify/assert"
"github.com/go-task/task/v3/internal/logger"
"github.com/go-task/task/v3/internal/summary"
"github.com/go-task/task/v3/taskfile/ast"
2019-02-24 17:05:37 +01:00
)
2019-02-24 17:10:59 +01:00
func TestPrintsDependenciesIfPresent(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
Deps: []*ast.Dep{
2019-02-24 17:05:37 +01:00
{Task: "dep1"},
{Task: "dep2"},
{Task: "dep3"},
},
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:05:37 +01:00
assert.Contains(t, buffer.String(), "\ndependencies:\n - dep1\n - dep2\n - dep3\n")
2019-02-24 17:05:37 +01:00
}
func createDummyLogger() (*bytes.Buffer, logger.Logger) {
2019-02-24 17:05:37 +01:00
buffer := &bytes.Buffer{}
l := logger.Logger{
Stderr: buffer,
Stdout: buffer,
2019-02-24 17:05:37 +01:00
Verbose: false,
}
return buffer, l
}
func TestDoesNotPrintDependenciesIfMissing(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
Deps: []*ast.Dep{},
2019-02-24 17:05:37 +01:00
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:05:37 +01:00
assert.NotContains(t, buffer.String(), "dependencies:")
}
2019-02-24 17:10:59 +01:00
func TestPrintTaskName(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
2019-02-24 17:10:59 +01:00
Task: "my-task-name",
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:10:59 +01:00
assert.Contains(t, buffer.String(), "task: my-task-name\n")
}
func TestPrintTaskCommandsIfPresent(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
Cmds: []*ast.Cmd{
2019-02-24 17:10:59 +01:00
{Cmd: "command-1"},
{Cmd: "command-2"},
2019-02-24 17:23:31 +01:00
{Task: "task-1"},
2019-02-24 17:10:59 +01:00
},
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:10:59 +01:00
assert.Contains(t, buffer.String(), "\ncommands:\n")
assert.Contains(t, buffer.String(), "\n - command-1\n")
assert.Contains(t, buffer.String(), "\n - command-2\n")
2019-02-24 17:23:31 +01:00
assert.Contains(t, buffer.String(), "\n - Task: task-1\n")
2019-02-24 17:10:59 +01:00
}
2019-02-24 17:12:22 +01:00
func TestDoesNotPrintCommandIfMissing(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
Cmds: []*ast.Cmd{},
2019-02-24 17:12:22 +01:00
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:12:22 +01:00
assert.NotContains(t, buffer.String(), "commands")
}
2019-02-24 17:20:29 +01:00
2019-02-24 17:29:03 +01:00
func TestLayout(t *testing.T) {
buffer, l := createDummyLogger()
task := &ast.Task{
2019-02-24 17:20:29 +01:00
Task: "sample-task",
Summary: "line1\nline2\nline3\n",
Deps: []*ast.Dep{
2019-02-24 17:20:29 +01:00
{Task: "dependency"},
},
Cmds: []*ast.Cmd{
2019-02-24 17:20:29 +01:00
{Cmd: "command"},
},
}
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, task)
2019-02-24 17:20:29 +01:00
2019-02-24 17:25:03 +01:00
assert.Equal(t, expectedOutput(), buffer.String())
}
func expectedOutput() string {
2019-02-24 17:28:06 +01:00
expected := `task: sample-task
line1
line2
line3
dependencies:
- dependency
commands:
- command
`
2019-02-24 17:25:03 +01:00
return expected
2019-02-24 17:20:29 +01:00
}
2019-02-24 18:20:59 +01:00
func TestPrintDescriptionAsFallback(t *testing.T) {
buffer, l := createDummyLogger()
taskWithoutSummary := &ast.Task{
2019-02-24 18:20:59 +01:00
Desc: "description",
}
taskWithSummary := &ast.Task{
2019-02-24 18:20:59 +01:00
Desc: "description",
Summary: "summary",
}
taskWithoutSummaryOrDescription := &ast.Task{}
2019-02-24 18:20:59 +01:00
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, taskWithoutSummary)
2019-02-24 18:20:59 +01:00
assert.Contains(t, buffer.String(), "description")
buffer.Reset()
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, taskWithSummary)
2019-02-24 18:20:59 +01:00
assert.NotContains(t, buffer.String(), "description")
buffer.Reset()
2019-03-04 13:03:13 +01:00
summary.PrintTask(&l, taskWithoutSummaryOrDescription)
assert.Contains(t, buffer.String(), "\n(task does not have description or summary)\n")
2019-02-24 18:20:59 +01:00
}
func TestPrintAllWithSpaces(t *testing.T) {
buffer, l := createDummyLogger()
t1 := &ast.Task{Task: "t1"}
t2 := &ast.Task{Task: "t2"}
t3 := &ast.Task{Task: "t3"}
tasks := ast.Tasks{}
tasks.Set("t1", t1)
tasks.Set("t2", t2)
tasks.Set("t3", t3)
2019-03-04 13:03:13 +01:00
summary.PrintTasks(&l,
&ast.Taskfile{Tasks: tasks},
2024-01-26 14:34:18 +00:00
[]*ast.Call{{Task: "t1"}, {Task: "t2"}, {Task: "t3"}})
assert.True(t, strings.HasPrefix(buffer.String(), "task: t1"))
assert.Contains(t, buffer.String(), "\n(task does not have description or summary)\n\n\ntask: t2")
assert.Contains(t, buffer.String(), "\n(task does not have description or summary)\n\n\ntask: t3")
}