mirror of
https://gitea.com/gitea/act_runner.git
synced 2026-03-20 03:46:09 +08:00
fixes
This commit is contained in:
@@ -6,7 +6,7 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gotest.tools/v3/assert"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRegisterNonInteractiveReturnsLabelValidationError(t *testing.T) {
|
func TestRegisterNonInteractiveReturnsLabelValidationError(t *testing.T) {
|
||||||
@@ -15,5 +15,5 @@ func TestRegisterNonInteractiveReturnsLabelValidationError(t *testing.T) {
|
|||||||
Token: "token",
|
Token: "token",
|
||||||
InstanceAddr: "http://localhost:3000",
|
InstanceAddr: "http://localhost:3000",
|
||||||
})
|
})
|
||||||
assert.Error(t, err, "unsupported schema: invalid")
|
require.Error(t, err, "unsupported schema: invalid")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,14 +74,14 @@ func TestRewriteSubExpression_ForceFormatMultiple(t *testing.T) {
|
|||||||
func TestRewriteSubExpression_UnclosedExpression(t *testing.T) {
|
func TestRewriteSubExpression_UnclosedExpression(t *testing.T) {
|
||||||
in := "Hello ${{ 'world' " // missing closing }}
|
in := "Hello ${{ 'world' " // missing closing }}
|
||||||
_, _, err := rewriteSubExpression(in, false)
|
_, _, err := rewriteSubExpression(in, false)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Contains(t, err.Error(), "unclosed expression")
|
assert.Contains(t, err.Error(), "unclosed expression")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRewriteSubExpression_UnclosedString(t *testing.T) {
|
func TestRewriteSubExpression_UnclosedString(t *testing.T) {
|
||||||
in := "Hello ${{ 'world }}, you are ${{ 'awesome' }}"
|
in := "Hello ${{ 'world }}, you are ${{ 'awesome' }}"
|
||||||
_, _, err := rewriteSubExpression(in, false)
|
_, _, err := rewriteSubExpression(in, false)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Contains(t, err.Error(), "unclosed string")
|
assert.Contains(t, err.Error(), "unclosed string")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func TestHandler(t *testing.T) {
|
|||||||
assert.Nil(t, handler.server)
|
assert.Nil(t, handler.server)
|
||||||
assert.Nil(t, handler.listener)
|
assert.Nil(t, handler.listener)
|
||||||
_, err := http.Post(fmt.Sprintf("%s/caches/%d", base, 1), "", nil)
|
_, err := http.Post(fmt.Sprintf("%s/caches/%d", base, 1), "", nil)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ func runTestJobFile(ctx context.Context, t *testing.T, tjfi TestJobFileInfo) {
|
|||||||
if tjfi.errorMessage == "" {
|
if tjfi.errorMessage == "" {
|
||||||
require.NoError(t, err, fullWorkflowPath)
|
require.NoError(t, err, fullWorkflowPath)
|
||||||
} else {
|
} else {
|
||||||
assert.Error(t, err, tjfi.errorMessage)
|
require.Error(t, err, tjfi.errorMessage)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
assert.Nil(t, plan)
|
assert.Nil(t, plan)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ func TestNewWorkflow(t *testing.T) {
|
|||||||
|
|
||||||
// error case
|
// error case
|
||||||
errorWorkflow := NewErrorExecutor(errors.New("test error"))
|
errorWorkflow := NewErrorExecutor(errors.New("test error"))
|
||||||
assert.Error(errorWorkflow(ctx))
|
require.Error(t, errorWorkflow(ctx))
|
||||||
|
|
||||||
// multiple success case
|
// multiple success case
|
||||||
runcount := 0
|
runcount := 0
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ func TestGitCloneExecutor(t *testing.T) {
|
|||||||
|
|
||||||
err := clone(context.Background())
|
err := clone(context.Background())
|
||||||
if tt.Err != nil {
|
if tt.Err != nil {
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Equal(t, tt.Err, err)
|
assert.Equal(t, tt.Err, err)
|
||||||
} else {
|
} else {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import (
|
|||||||
"github.com/docker/go-connections/nat"
|
"github.com/docker/go-connections/nat"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
"gotest.tools/v3/assert"
|
"gotest.tools/v3/assert"
|
||||||
is "gotest.tools/v3/assert/cmp"
|
is "gotest.tools/v3/assert/cmp"
|
||||||
"gotest.tools/v3/skip"
|
"gotest.tools/v3/skip"
|
||||||
@@ -185,7 +186,7 @@ func TestParseRunWithInvalidArgs(t *testing.T) {
|
|||||||
flags, _ := setupRunFlags()
|
flags, _ := setupRunFlags()
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
t.Run(strings.Join(tc.args, " "), func(t *testing.T) {
|
t.Run(strings.Join(tc.args, " "), func(t *testing.T) {
|
||||||
assert.Error(t, flags.Parse(tc.args), tc.error)
|
require.Error(t, flags.Parse(tc.args), tc.error)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -606,7 +607,7 @@ func TestParseNetworkConfig(t *testing.T) {
|
|||||||
_, hConfig, nwConfig, err := parseRun(tc.flags)
|
_, hConfig, nwConfig, err := parseRun(tc.flags)
|
||||||
|
|
||||||
if tc.expectedErr != "" {
|
if tc.expectedErr != "" {
|
||||||
assert.Error(t, err, tc.expectedErr)
|
require.Error(t, err, tc.expectedErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ func TestDockerExecFailure(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err := cr.execExt([]string{""}, map[string]string{}, "user", "workdir")(ctx)
|
err := cr.execExt([]string{""}, map[string]string{}, "user", "workdir")(ctx)
|
||||||
assert.Error(t, err, "exit with `FAILURE`: 1")
|
require.Error(t, err, "exit with `FAILURE`: 1")
|
||||||
|
|
||||||
conn.AssertExpectations(t)
|
conn.AssertExpectations(t)
|
||||||
client.AssertExpectations(t)
|
client.AssertExpectations(t)
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ func TestGetSocketAndHostNoHostInvalidSocket(t *testing.T) {
|
|||||||
assert.False(t, found, "Expected no default socket to be found")
|
assert.False(t, found, "Expected no default socket to be found")
|
||||||
assert.Empty(t, defaultSocket, "Expected no default socket to be found")
|
assert.Empty(t, defaultSocket, "Expected no default socket to be found")
|
||||||
assert.Equal(t, SocketAndHost{}, ret, "Expected to match default socket location")
|
assert.Equal(t, SocketAndHost{}, ret, "Expected to match default socket location")
|
||||||
assert.Error(t, err, "Expected an error in invalid state")
|
require.Error(t, err, "Expected an error in invalid state")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSocketAndHostOnlySocketValidButUnusualLocation(t *testing.T) {
|
func TestGetSocketAndHostOnlySocketValidButUnusualLocation(t *testing.T) {
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ func TestOperators(t *testing.T) {
|
|||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
output, err := NewInterpeter(env, Config{}).Evaluate(tt.input, DefaultStatusCheckNone)
|
output, err := NewInterpeter(env, Config{}).Evaluate(tt.input, DefaultStatusCheckNone)
|
||||||
if tt.error != "" {
|
if tt.error != "" {
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Equal(t, tt.error, err.Error())
|
assert.Equal(t, tt.error, err.Error())
|
||||||
} else {
|
} else {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package model
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
@@ -20,7 +19,7 @@ test:
|
|||||||
}
|
}
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
err = resolveAliases(&node)
|
err = resolveAliases(&node)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVerifyNoRecursion(t *testing.T) {
|
func TestVerifyNoRecursion(t *testing.T) {
|
||||||
@@ -100,13 +99,13 @@ c: *a
|
|||||||
var node yaml.Node
|
var node yaml.Node
|
||||||
err := yaml.Unmarshal([]byte(tt.yaml), &node)
|
err := yaml.Unmarshal([]byte(tt.yaml), &node)
|
||||||
if tt.yamlErr {
|
if tt.yamlErr {
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
err = resolveAliases(&node)
|
err = resolveAliases(&node)
|
||||||
if tt.anchorErr {
|
if tt.anchorErr {
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
} else {
|
} else {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,19 +246,19 @@ jobs:
|
|||||||
|
|
||||||
jobType, err := workflow.Jobs["remote-reusable-workflow-missing-version"].Type()
|
jobType, err := workflow.Jobs["remote-reusable-workflow-missing-version"].Type()
|
||||||
assert.Equal(t, JobTypeInvalid, jobType)
|
assert.Equal(t, JobTypeInvalid, jobType)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
||||||
jobType, err = workflow.Jobs["remote-reusable-workflow-bad-extension"].Type()
|
jobType, err = workflow.Jobs["remote-reusable-workflow-bad-extension"].Type()
|
||||||
assert.Equal(t, JobTypeInvalid, jobType)
|
assert.Equal(t, JobTypeInvalid, jobType)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
||||||
jobType, err = workflow.Jobs["local-reusable-workflow-bad-extension"].Type()
|
jobType, err = workflow.Jobs["local-reusable-workflow-bad-extension"].Type()
|
||||||
assert.Equal(t, JobTypeInvalid, jobType)
|
assert.Equal(t, JobTypeInvalid, jobType)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
||||||
jobType, err = workflow.Jobs["local-reusable-workflow-bad-path"].Type()
|
jobType, err = workflow.Jobs["local-reusable-workflow-bad-path"].Type()
|
||||||
assert.Equal(t, JobTypeInvalid, jobType)
|
assert.Equal(t, JobTypeInvalid, jobType)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadWorkflow_StepsTypes(t *testing.T) {
|
func TestReadWorkflow_StepsTypes(t *testing.T) {
|
||||||
@@ -283,7 +283,7 @@ jobs:
|
|||||||
`
|
`
|
||||||
|
|
||||||
_, err := ReadWorkflow(strings.NewReader(yaml), WorkflowConfig{})
|
_, err := ReadWorkflow(strings.NewReader(yaml), WorkflowConfig{})
|
||||||
assert.Error(t, err, "read workflow should fail")
|
require.Error(t, err, "read workflow should fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs
|
// See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs
|
||||||
@@ -582,7 +582,7 @@ jobs:
|
|||||||
`
|
`
|
||||||
|
|
||||||
_, err := ReadWorkflow(strings.NewReader(yaml), WorkflowConfig{Strict: true})
|
_, err := ReadWorkflow(strings.NewReader(yaml), WorkflowConfig{Strict: true})
|
||||||
assert.Error(t, err, "read workflow should succeed")
|
require.Error(t, err, "read workflow should succeed")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadWorkflow_AnchorStrict(t *testing.T) {
|
func TestReadWorkflow_AnchorStrict(t *testing.T) {
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ func TestEvaluateRunContext(t *testing.T) {
|
|||||||
assertObject := assert.New(t)
|
assertObject := assert.New(t)
|
||||||
out, err := ee.evaluate(context.Background(), table.in, exprparser.DefaultStatusCheckNone)
|
out, err := ee.evaluate(context.Background(), table.in, exprparser.DefaultStatusCheckNone)
|
||||||
if table.errMesg == "" {
|
if table.errMesg == "" {
|
||||||
assertObject.NoError(err, table.in)
|
require.NoError(t, err, table.in)
|
||||||
if i, ok := table.out.(int); ok {
|
if i, ok := table.out.(int); ok {
|
||||||
table.out = float64(i)
|
table.out = float64(i)
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ func TestEvaluateStep(t *testing.T) {
|
|||||||
assertObject := assert.New(t)
|
assertObject := assert.New(t)
|
||||||
out, err := ee.evaluate(context.Background(), table.in, exprparser.DefaultStatusCheckNone)
|
out, err := ee.evaluate(context.Background(), table.in, exprparser.DefaultStatusCheckNone)
|
||||||
if table.errMesg == "" {
|
if table.errMesg == "" {
|
||||||
assertObject.NoError(err, table.in)
|
require.NoError(t, err, table.in)
|
||||||
assertObject.Equal(table.out, out, table.in)
|
assertObject.Equal(table.out, out, table.in)
|
||||||
} else {
|
} else {
|
||||||
assertObject.Error(err, table.in)
|
assertObject.Error(err, table.in)
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ func TestGraphWithSomeMissing(t *testing.T) {
|
|||||||
log.SetLevel(log.DebugLevel)
|
log.SetLevel(log.DebugLevel)
|
||||||
|
|
||||||
plan, err := planner.PlanAll()
|
plan, err := planner.PlanAll()
|
||||||
assert.Error(t, err, "unable to build dependency graph for no first (no-first.yml)")
|
require.Error(t, err, "unable to build dependency graph for no first (no-first.yml)")
|
||||||
assert.NotNil(t, plan)
|
assert.NotNil(t, plan)
|
||||||
assert.Len(t, plan.Stages, 1)
|
assert.Len(t, plan.Stages, 1)
|
||||||
assert.Contains(t, buf.String(), "unable to build dependency graph for missing (missing.yml)")
|
assert.Contains(t, buf.String(), "unable to build dependency graph for missing (missing.yml)")
|
||||||
@@ -204,7 +204,7 @@ func (j *TestJobFileInfo) runTest(ctx context.Context, t *testing.T, cfg *Config
|
|||||||
|
|
||||||
planner, err := model.NewWorkflowPlanner(fullWorkflowPath, model.PlannerConfig{})
|
planner, err := model.NewWorkflowPlanner(fullWorkflowPath, model.PlannerConfig{})
|
||||||
if j.errorMessage != "" && err != nil {
|
if j.errorMessage != "" && err != nil {
|
||||||
assert.Error(t, err, j.errorMessage)
|
require.Error(t, err, j.errorMessage)
|
||||||
} else if assert.NoError(t, err, fullWorkflowPath) {
|
} else if assert.NoError(t, err, fullWorkflowPath) {
|
||||||
plan, err := planner.PlanEvent(j.eventName)
|
plan, err := planner.PlanEvent(j.eventName)
|
||||||
assert.NotEqual(t, (err == nil), (plan == nil), "PlanEvent should return either a plan or an error")
|
assert.NotEqual(t, (err == nil), (plan == nil), "PlanEvent should return either a plan or an error")
|
||||||
@@ -213,7 +213,7 @@ func (j *TestJobFileInfo) runTest(ctx context.Context, t *testing.T, cfg *Config
|
|||||||
if j.errorMessage == "" {
|
if j.errorMessage == "" {
|
||||||
require.NoError(t, err, fullWorkflowPath)
|
require.NoError(t, err, fullWorkflowPath)
|
||||||
} else {
|
} else {
|
||||||
assert.Error(t, err, j.errorMessage)
|
require.Error(t, err, j.errorMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,5 +78,5 @@ func TestStepFactoryInvalidStep(t *testing.T) {
|
|||||||
|
|
||||||
_, err := sf.newStep(model, &RunContext{})
|
_, err := sf.newStep(model, &RunContext{})
|
||||||
|
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -314,31 +314,31 @@ func TestIsContinueOnError(t *testing.T) {
|
|||||||
step := createTestStep(t, "name: test")
|
step := createTestStep(t, "name: test")
|
||||||
continueOnError, err := isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
continueOnError, err := isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
||||||
assertObject.False(continueOnError)
|
assertObject.False(continueOnError)
|
||||||
assertObject.NoError(err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// explicit true
|
// explicit true
|
||||||
step = createTestStep(t, "continue-on-error: true")
|
step = createTestStep(t, "continue-on-error: true")
|
||||||
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
||||||
assertObject.True(continueOnError)
|
assertObject.True(continueOnError)
|
||||||
assertObject.NoError(err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// explicit false
|
// explicit false
|
||||||
step = createTestStep(t, "continue-on-error: false")
|
step = createTestStep(t, "continue-on-error: false")
|
||||||
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
||||||
assertObject.False(continueOnError)
|
assertObject.False(continueOnError)
|
||||||
assertObject.NoError(err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// expression true
|
// expression true
|
||||||
step = createTestStep(t, "continue-on-error: ${{ 'test' == 'test' }}")
|
step = createTestStep(t, "continue-on-error: ${{ 'test' == 'test' }}")
|
||||||
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
||||||
assertObject.True(continueOnError)
|
assertObject.True(continueOnError)
|
||||||
assertObject.NoError(err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// expression false
|
// expression false
|
||||||
step = createTestStep(t, "continue-on-error: ${{ 'test' != 'test' }}")
|
step = createTestStep(t, "continue-on-error: ${{ 'test' != 'test' }}")
|
||||||
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
continueOnError, err = isContinueOnError(context.Background(), step.getStepModel().RawContinueOnError, step, stepStageMain)
|
||||||
assertObject.False(continueOnError)
|
assertObject.False(continueOnError)
|
||||||
assertObject.NoError(err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// expression parse error
|
// expression parse error
|
||||||
step = createTestStep(t, "continue-on-error: ${{ 'test' != test }}")
|
step = createTestStep(t, "continue-on-error: ${{ 'test' != test }}")
|
||||||
@@ -368,7 +368,7 @@ func TestSymlinkJoin(t *testing.T) {
|
|||||||
if entry.err == "" {
|
if entry.err == "" {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
} else {
|
} else {
|
||||||
assert.Error(t, err, entry.err)
|
require.Error(t, err, entry.err)
|
||||||
}
|
}
|
||||||
assert.Equal(t, entry.result, result)
|
assert.Equal(t, entry.result, result)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
Definition: "workflow-root-strict",
|
Definition: "workflow-root-strict",
|
||||||
Schema: GetWorkflowSchema(),
|
Schema: GetWorkflowSchema(),
|
||||||
}).UnmarshalYAML(&node)
|
}).UnmarshalYAML(&node)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAdditionalFunctionsSteps(t *testing.T) {
|
func TestAdditionalFunctionsSteps(t *testing.T) {
|
||||||
@@ -98,7 +98,7 @@ jobs:
|
|||||||
Definition: "workflow-root-strict",
|
Definition: "workflow-root-strict",
|
||||||
Schema: GetWorkflowSchema(),
|
Schema: GetWorkflowSchema(),
|
||||||
}).UnmarshalYAML(&node)
|
}).UnmarshalYAML(&node)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFailure2(t *testing.T) {
|
func TestFailure2(t *testing.T) {
|
||||||
@@ -115,7 +115,7 @@ jobs:
|
|||||||
Definition: "workflow-root-strict",
|
Definition: "workflow-root-strict",
|
||||||
Schema: GetWorkflowSchema(),
|
Schema: GetWorkflowSchema(),
|
||||||
}).UnmarshalYAML(&node)
|
}).UnmarshalYAML(&node)
|
||||||
assert.Error(t, err)
|
require.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEscape(t *testing.T) {
|
func TestEscape(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user