Simplify Matrix decode, add defaults for fail-fast and max-parallel, add test (#763)
* fix[workflow]: multiple fixes for workflow/matrix fix[workflow]: default `max-parallel` fix[workflow]: default `fail-fast`, it's `true`, not `false` fix[workflow]: skipping over the job when `strategy:` is defined but `matrix:` isn't (fixes #625) fix[workflow]: skip non-existing includes keys and hard fail on non-existing excludes keys fix[workflow]: simplify Matrix decode (because I "think" I know how `yaml` works) (fixes #760) fix[tests]: add test for planner and runner * fix(workflow): use yaml node for env key Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
@@ -9,9 +9,17 @@ import (
|
||||
|
||||
"github.com/nektos/act/pkg/model"
|
||||
assert "github.com/stretchr/testify/assert"
|
||||
yaml "gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func TestEvaluate(t *testing.T) {
|
||||
var yml yaml.Node
|
||||
err := yml.Encode(map[string][]interface{}{
|
||||
"os": {"Linux", "Windows"},
|
||||
"foo": {"bar", "baz"},
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
rc := &RunContext{
|
||||
Config: &Config{
|
||||
Workdir: ".",
|
||||
@@ -29,10 +37,7 @@ func TestEvaluate(t *testing.T) {
|
||||
Jobs: map[string]*model.Job{
|
||||
"job1": {
|
||||
Strategy: &model.Strategy{
|
||||
Matrix: map[string][]interface{}{
|
||||
"os": {"Linux", "Windows"},
|
||||
"foo": {"bar", "baz"},
|
||||
},
|
||||
RawMatrix: yml,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@@ -14,9 +14,17 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/sirupsen/logrus/hooks/test"
|
||||
assert "github.com/stretchr/testify/assert"
|
||||
yaml "gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func TestRunContext_EvalBool(t *testing.T) {
|
||||
var yml yaml.Node
|
||||
err := yml.Encode(map[string][]interface{}{
|
||||
"os": {"Linux", "Windows"},
|
||||
"foo": {"bar", "baz"},
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
hook := test.NewGlobal()
|
||||
rc := &RunContext{
|
||||
Config: &Config{
|
||||
@@ -34,10 +42,7 @@ func TestRunContext_EvalBool(t *testing.T) {
|
||||
Jobs: map[string]*model.Job{
|
||||
"job1": {
|
||||
Strategy: &model.Strategy{
|
||||
Matrix: map[string][]interface{}{
|
||||
"os": {"Linux", "Windows"},
|
||||
"foo": {"bar", "baz"},
|
||||
},
|
||||
RawMatrix: yml,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@@ -118,6 +118,7 @@ func TestRunEvent(t *testing.T) {
|
||||
{"testdata", "issue-597", "push", "", platforms, ""},
|
||||
{"testdata", "issue-598", "push", "", platforms, ""},
|
||||
{"testdata", "env-and-path", "push", "", platforms, ""},
|
||||
{"../model/testdata", "strategy", "push", "", platforms, ""}, // TODO: move all testdata into pkg so we can validate it with planner and runner
|
||||
// {"testdata", "issue-228", "push", "", platforms, ""}, // TODO [igni]: Remove this once everything passes
|
||||
|
||||
// single test for different architecture: linux/arm64
|
||||
|
Reference in New Issue
Block a user