1
1
mirror of https://github.com/drone-plugins/github-actions synced 2026-03-07 10:01:33 +01:00
github.com-drone-plugins-gi.../utils/workflow_test.go
2025-01-13 19:45:51 +05:30

65 lines
2.1 KiB
Go

package utils
import (
"fmt"
"os"
"testing"
"github.com/stretchr/testify/assert"
)
func TestCreateWorkflowFile(t *testing.T) {
testDir := t.TempDir()
workflowFile := testDir + "/workflow.yml"
outputFile := testDir + "/output"
action := "some-action@v1"
with := map[string]string{"input1": "value1"}
env := map[string]string{"VAR": "value"}
outputVars := []string{"out1", "out-2"}
// With output variables
err := CreateWorkflowFile(workflowFile, action, with, env, outputFile, outputVars)
assert.NoError(t, err)
content, err := os.ReadFile(workflowFile)
assert.NoError(t, err)
// Check general structure
assert.Contains(t, string(content), "uses: some-action@v1")
assert.Contains(t, string(content), "steps:")
assert.Contains(t, string(content), "id: stepIdentifier")
// Check the `run` command
assert.Contains(t, string(content), "out1=${{ steps.stepIdentifier.outputs.out1 }}")
assert.Contains(t, string(content), "out-2=${{ steps.stepIdentifier.outputs.out-2 }}")
assert.Contains(t, string(content), fmt.Sprintf("> %s", outputFile))
// Without output variables
err = CreateWorkflowFile(workflowFile, action, with, env, outputFile, []string{})
assert.NoError(t, err)
content, err = os.ReadFile(workflowFile)
assert.NoError(t, err)
assert.Contains(t, string(content), "name: output variables")
assert.Contains(t, string(content), "run: echo \"\" >")
assert.Contains(t, string(content), "if: \"false\"")
}
func TestSetOutputVariables(t *testing.T) {
outputVars := []string{"var1", "var2"}
prevStepId := "prevStep"
outputFile := "/tmp/output"
// With output variables
step := setOutputVariables(prevStepId, outputFile, outputVars)
assert.Equal(t, "output variables", step.Name)
assert.Contains(t, step.Run, "var1=${{ steps.prevStep.outputs.var1 }}")
assert.Contains(t, step.Run, "var2=${{ steps.prevStep.outputs.var2 }}")
// No output variables
step = setOutputVariables(prevStepId, outputFile, []string{})
assert.Equal(t, "output variables", step.Name)
assert.Contains(t, step.Run, "echo \"\" > /tmp/output")
assert.Contains(t, step.If, "false")
}