forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
Monorepo for Tangled
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package workflow
2
3import (
4 "strings"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8 "tangled.sh/tangled.sh/core/api/tangled"
9)
10
11var trigger = tangled.Pipeline_TriggerMetadata{
12 Kind: string(TriggerKindPush),
13 Push: &tangled.Pipeline_PushTriggerData{
14 Ref: "refs/heads/main",
15 OldSha: strings.Repeat("0", 40),
16 NewSha: strings.Repeat("f", 40),
17 },
18}
19
20var when = []Constraint{
21 {
22 Event: []string{"push"},
23 Branch: []string{"main"},
24 },
25}
26
27func TestCompileWorkflow_MatchingWorkflowWithSteps(t *testing.T) {
28 wf := Workflow{
29 Name: ".tangled/workflows/test.yml",
30 When: when,
31 Steps: []Step{
32 {Name: "Test", Command: "go test ./..."},
33 },
34 CloneOpts: CloneOpts{}, // default true
35 }
36
37 c := Compiler{Trigger: trigger}
38 cp := c.Compile([]Workflow{wf})
39
40 assert.Len(t, cp.Workflows, 1)
41 assert.Equal(t, wf.Name, cp.Workflows[0].Name)
42 assert.False(t, cp.Workflows[0].Clone.Skip)
43 assert.False(t, c.Diagnostics.IsErr())
44}
45
46func TestCompileWorkflow_EmptySteps(t *testing.T) {
47 wf := Workflow{
48 Name: ".tangled/workflows/empty.yml",
49 When: when,
50 Steps: []Step{}, // no steps
51 }
52
53 c := Compiler{Trigger: trigger}
54 cp := c.Compile([]Workflow{wf})
55
56 assert.Len(t, cp.Workflows, 0)
57 assert.Len(t, c.Diagnostics.Warnings, 1)
58 assert.Equal(t, WorkflowSkipped, c.Diagnostics.Warnings[0].Type)
59}
60
61func TestCompileWorkflow_TriggerMismatch(t *testing.T) {
62 wf := Workflow{
63 Name: ".tangled/workflows/mismatch.yml",
64 When: []Constraint{
65 {
66 Event: []string{"push"},
67 Branch: []string{"master"}, // different branch
68 },
69 },
70 Steps: []Step{
71 {Name: "Lint", Command: "golint ./..."},
72 },
73 }
74
75 c := Compiler{Trigger: trigger}
76 cp := c.Compile([]Workflow{wf})
77
78 assert.Len(t, cp.Workflows, 0)
79 assert.Len(t, c.Diagnostics.Warnings, 1)
80 assert.Equal(t, WorkflowSkipped, c.Diagnostics.Warnings[0].Type)
81}
82
83func TestCompileWorkflow_CloneFalseWithShallowTrue(t *testing.T) {
84 wf := Workflow{
85 Name: ".tangled/workflows/clone_skip.yml",
86 When: when,
87 Steps: []Step{
88 {Name: "Skip", Command: "echo skip"},
89 },
90 CloneOpts: CloneOpts{
91 Skip: true,
92 Depth: 1,
93 }, // false
94 }
95
96 c := Compiler{Trigger: trigger}
97 cp := c.Compile([]Workflow{wf})
98
99 assert.Len(t, cp.Workflows, 1)
100 assert.True(t, cp.Workflows[0].Clone.Skip)
101 assert.Len(t, c.Diagnostics.Warnings, 1)
102 assert.Equal(t, InvalidConfiguration, c.Diagnostics.Warnings[0].Type)
103}