MCPcopy
hub / github.com/nektos/act / TestReadWorkflow_Strategy

Function TestReadWorkflow_Strategy

pkg/model/workflow_test.go:331–396  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

329}
330
331func TestReadWorkflow_Strategy(t *testing.T) {
332 w, err := NewWorkflowPlanner("testdata/strategy/push.yml", true, false)
333 assert.NoError(t, err)
334
335 p, err := w.PlanJob("strategy-only-max-parallel")
336 assert.NoError(t, err)
337
338 assert.Equal(t, len(p.Stages), 1)
339 assert.Equal(t, len(p.Stages[0].Runs), 1)
340
341 wf := p.Stages[0].Runs[0].Workflow
342
343 job := wf.Jobs["strategy-only-max-parallel"]
344 matrixes, err := job.GetMatrixes()
345 assert.NoError(t, err)
346 assert.Equal(t, matrixes, []map[string]interface{}{{}})
347 assert.Equal(t, job.Matrix(), map[string][]interface{}(nil))
348 assert.Equal(t, job.Strategy.MaxParallel, 2)
349 assert.Equal(t, job.Strategy.FailFast, true)
350
351 job = wf.Jobs["strategy-only-fail-fast"]
352 matrixes, err = job.GetMatrixes()
353 assert.NoError(t, err)
354 assert.Equal(t, matrixes, []map[string]interface{}{{}})
355 assert.Equal(t, job.Matrix(), map[string][]interface{}(nil))
356 assert.Equal(t, job.Strategy.MaxParallel, 4)
357 assert.Equal(t, job.Strategy.FailFast, false)
358
359 job = wf.Jobs["strategy-no-matrix"]
360 matrixes, err = job.GetMatrixes()
361 assert.NoError(t, err)
362 assert.Equal(t, matrixes, []map[string]interface{}{{}})
363 assert.Equal(t, job.Matrix(), map[string][]interface{}(nil))
364 assert.Equal(t, job.Strategy.MaxParallel, 2)
365 assert.Equal(t, job.Strategy.FailFast, false)
366
367 job = wf.Jobs["strategy-all"]
368 matrixes, err = job.GetMatrixes()
369 assert.NoError(t, err)
370 assert.Equal(t, matrixes,
371 []map[string]interface{}{
372 {"datacenter": "site-c", "node-version": "14.x", "site": "staging", "php-version": 5.4},
373 {"datacenter": "site-c", "node-version": "16.x", "site": "staging", "php-version": 5.4},
374 {"datacenter": "site-d", "node-version": "16.x", "site": "staging", "php-version": 5.4},
375 {"datacenter": "site-a", "node-version": "10.x", "site": "prod"},
376 {"datacenter": "site-b", "node-version": "12.x", "site": "dev"},
377 },
378 )
379 assert.Equal(t, job.Matrix(),
380 map[string][]interface{}{
381 "datacenter": {"site-c", "site-d"},
382 "exclude": {
383 map[string]interface{}{"datacenter": "site-d", "node-version": "14.x", "site": "staging"},
384 },
385 "include": {
386 map[string]interface{}{"php-version": 5.4},
387 map[string]interface{}{"datacenter": "site-a", "node-version": "10.x", "site": "prod"},
388 map[string]interface{}{"datacenter": "site-b", "node-version": "12.x", "site": "dev"},

Callers

nothing calls this directly

Calls 4

PlanJobMethod · 0.95
NewWorkflowPlannerFunction · 0.85
GetMatrixesMethod · 0.80
MatrixMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…