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