mirror of
https://github.com/go-task/task.git
synced 2025-12-16 19:57:43 +01:00
test(if): add golden fixture tests for if conditions
Add comprehensive golden fixture tests for if feature: - Command-level if (true/false) - Task-level if (true/false) - Task calls with if conditions - Go template functions (eq, ne, and, or) - Direct template variable evaluation - CLI variable overrides - For loops with if conditions
This commit is contained in:
@@ -1067,3 +1067,65 @@ func TestFailfast(t *testing.T) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIf(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
task string
|
||||||
|
vars map[string]any
|
||||||
|
verbose bool
|
||||||
|
}{
|
||||||
|
// Basic command-level if
|
||||||
|
{name: "cmd-if-true", task: "cmd-if-true"},
|
||||||
|
{name: "cmd-if-false", task: "cmd-if-false"},
|
||||||
|
|
||||||
|
// Task-level if
|
||||||
|
{name: "task-if-true", task: "task-if-true"},
|
||||||
|
{name: "task-if-false", task: "task-if-false", verbose: true},
|
||||||
|
|
||||||
|
// Task call with if
|
||||||
|
{name: "task-call-if-true", task: "task-call-if-true"},
|
||||||
|
{name: "task-call-if-false", task: "task-call-if-false", verbose: true},
|
||||||
|
|
||||||
|
// Go template conditions
|
||||||
|
{name: "template-eq-true", task: "template-eq-true"},
|
||||||
|
{name: "template-eq-false", task: "template-eq-false", verbose: true},
|
||||||
|
{name: "template-ne", task: "template-ne"},
|
||||||
|
{name: "template-bool-true", task: "template-bool-true"},
|
||||||
|
{name: "template-bool-false", task: "template-bool-false"},
|
||||||
|
{name: "template-direct-true", task: "template-direct-true"},
|
||||||
|
{name: "template-direct-false", task: "template-direct-false"},
|
||||||
|
{name: "template-and", task: "template-and"},
|
||||||
|
{name: "template-or", task: "template-or"},
|
||||||
|
|
||||||
|
// CLI variable override
|
||||||
|
{name: "template-cli-var", task: "template-cli-var", vars: map[string]any{"MY_VAR": "yes"}},
|
||||||
|
|
||||||
|
// Task-level if with template
|
||||||
|
{name: "task-level-template", task: "task-level-template"},
|
||||||
|
{name: "task-level-template-false", task: "task-level-template-false", verbose: true},
|
||||||
|
|
||||||
|
// For loop with if
|
||||||
|
{name: "if-in-for-loop", task: "if-in-for-loop", verbose: true},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
opts := []ExecutorTestOption{
|
||||||
|
WithName(test.name),
|
||||||
|
WithExecutorOptions(
|
||||||
|
task.WithDir("testdata/if"),
|
||||||
|
task.WithSilent(true),
|
||||||
|
task.WithVerbose(test.verbose),
|
||||||
|
),
|
||||||
|
WithTask(test.task),
|
||||||
|
}
|
||||||
|
if test.vars != nil {
|
||||||
|
for k, v := range test.vars {
|
||||||
|
opts = append(opts, WithVar(k, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NewExecutorTest(t, opts...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
1
testdata/if/testdata/TestIf-cmd-if-false.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-cmd-if-false.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
this runs
|
||||||
1
testdata/if/testdata/TestIf-cmd-if-true.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-cmd-if-true.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
executed
|
||||||
7
testdata/if/testdata/TestIf-if-in-for-loop.golden
vendored
Normal file
7
testdata/if/testdata/TestIf-if-in-for-loop.golden
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
task: "if-in-for-loop" started
|
||||||
|
task: [if-in-for-loop] echo "processing a"
|
||||||
|
processing a
|
||||||
|
task: [if-in-for-loop] if condition not met - skipped
|
||||||
|
task: [if-in-for-loop] echo "processing c"
|
||||||
|
processing c
|
||||||
|
task: "if-in-for-loop" finished
|
||||||
5
testdata/if/testdata/TestIf-task-call-if-false.golden
vendored
Normal file
5
testdata/if/testdata/TestIf-task-call-if-false.golden
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
task: "task-call-if-false" started
|
||||||
|
task: [task-call-if-false] if condition not met - skipped
|
||||||
|
task: [task-call-if-false] echo "continues after skipped task"
|
||||||
|
continues after skipped task
|
||||||
|
task: "task-call-if-false" finished
|
||||||
2
testdata/if/testdata/TestIf-task-call-if-true.golden
vendored
Normal file
2
testdata/if/testdata/TestIf-task-call-if-true.golden
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
subtask ran
|
||||||
|
after task call
|
||||||
1
testdata/if/testdata/TestIf-task-if-false.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-task-if-false.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
task: "task-if-false" if condition not met - skipped
|
||||||
1
testdata/if/testdata/TestIf-task-if-true.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-task-if-true.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
task executed
|
||||||
1
testdata/if/testdata/TestIf-task-level-template-false.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-task-level-template-false.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
task: "task-level-template-false" if condition not met - skipped
|
||||||
1
testdata/if/testdata/TestIf-task-level-template.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-task-level-template.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
task runs in prod
|
||||||
1
testdata/if/testdata/TestIf-template-and.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-and.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
both conditions met
|
||||||
1
testdata/if/testdata/TestIf-template-bool-false.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-bool-false.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
feature was disabled
|
||||||
1
testdata/if/testdata/TestIf-template-bool-true.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-bool-true.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
feature enabled
|
||||||
1
testdata/if/testdata/TestIf-template-cli-var.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-cli-var.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MY_VAR is yes
|
||||||
1
testdata/if/testdata/TestIf-template-direct-false.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-direct-false.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
direct false skipped correctly
|
||||||
1
testdata/if/testdata/TestIf-template-direct-true.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-direct-true.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
direct true works
|
||||||
5
testdata/if/testdata/TestIf-template-eq-false.golden
vendored
Normal file
5
testdata/if/testdata/TestIf-template-eq-false.golden
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
task: "template-eq-false" started
|
||||||
|
task: [template-eq-false] if condition not met - skipped
|
||||||
|
task: [template-eq-false] echo "this runs"
|
||||||
|
this runs
|
||||||
|
task: "template-eq-false" finished
|
||||||
1
testdata/if/testdata/TestIf-template-eq-true.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-eq-true.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
env is prod
|
||||||
1
testdata/if/testdata/TestIf-template-ne.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-ne.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
env is not dev
|
||||||
1
testdata/if/testdata/TestIf-template-or.golden
vendored
Normal file
1
testdata/if/testdata/TestIf-template-or.golden
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
at least one condition met
|
||||||
Reference in New Issue
Block a user