1
0
Fork 0
mirror of https://code.forgejo.org/forgejo/runner.git synced 2025-08-11 17:50:58 +00:00

fix: do not fail the job when if: false (#172)

- log job result as info not as debug
- add test

---

v6.4.0 regression introduced in 4880b091a2

It did not fail a test because the [original fix](https://code.forgejo.org/forgejo/act/pulls/67/files)  has tests only for the case where a step is skipped, not when a job is skipped.

Closes forgejo/runner#660

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/172
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
This commit is contained in:
Earl Warren 2025-07-07 12:11:57 +00:00 committed by earl-warren
parent 21f71e5cdc
commit 7eb547faa5
4 changed files with 36 additions and 20 deletions

View file

@ -914,7 +914,7 @@ func (rc *RunContext) isEnabled(ctx context.Context) (bool, error) {
if !runJob { if !runJob {
rc.result("skipped") rc.result("skipped")
l.WithField("jobResult", "skipped").Debugf("Skipping job '%s' due to '%s'", job.Name, job.If.Value) l.WithField("jobResult", "skipped").Infof("Skipping job '%s' due to '%s'", job.Name, job.If.Value)
return false, nil return false, nil
} }

View file

@ -520,6 +520,7 @@ func TestRunDifferentArchitecture(t *testing.T) {
} }
type runSkippedHook struct { type runSkippedHook struct {
resultKey string
found bool found bool
} }
@ -528,8 +529,8 @@ func (h *runSkippedHook) Levels() []log.Level {
} }
func (h *runSkippedHook) Fire(entry *log.Entry) error { func (h *runSkippedHook) Fire(entry *log.Entry) error {
if v, ok := entry.Data["stepResult"]; ok { if result, ok := entry.Data[h.resultKey]; ok {
h.found = (v == model.StepStatusSkipped) h.found = (fmt.Sprintf("%s", result) == "skipped")
} }
return nil return nil
} }
@ -539,21 +540,25 @@ func TestRunSkipped(t *testing.T) {
t.Skip("skipping integration test") t.Skip("skipping integration test")
} }
for _, what := range []string{"step", "job"} {
t.Run(what, func(t *testing.T) {
tjfi := TestJobFileInfo{ tjfi := TestJobFileInfo{
workdir: workdir, workdir: workdir,
workflowPath: "skip", workflowPath: "skip" + what,
eventName: "push", eventName: "push",
errorMessage: "", errorMessage: "",
platforms: platforms, platforms: platforms,
} }
h := &runSkippedHook{} h := &runSkippedHook{resultKey: what + "Result"}
ctx := common.WithLoggerHook(context.Background(), h) ctx := common.WithLoggerHook(context.Background(), h)
jobLoggerLevel := log.InfoLevel jobLoggerLevel := log.InfoLevel
tjfi.runTest(ctx, t, &Config{ContainerArchitecture: "linux/arm64", JobLoggerLevel: &jobLoggerLevel}) tjfi.runTest(ctx, t, &Config{ContainerArchitecture: "linux/arm64", JobLoggerLevel: &jobLoggerLevel})
assert.True(t, h.found) assert.True(t, h.found)
})
}
} }
type maskJobLoggerFactory struct { type maskJobLoggerFactory struct {

11
act/runner/testdata/skipjob/skipjob.yml vendored Normal file
View file

@ -0,0 +1,11 @@
name: skipjob
on: push
jobs:
checkjob:
runs-on: ubuntu-latest
if: false
steps:
- run: echo nothing

View file

@ -1,8 +1,8 @@
name: skip name: skipstep
on: push on: push
jobs: jobs:
check: checkstep:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- if: false - if: false