mirror of
https://gitea.com/gitea/act_runner.git
synced 2026-05-01 16:30:20 +08:00
Removes 88 `nolint` directives (386 → 298) via mechanical, zero-regression cleanups: - **38 `bodyclose`** in `act/artifactcache/handler_test.go`: replaced by `defer resp.Body.Close()` after each HTTP call. - **21 dead directives** (`gocyclo`, `dogsled`, `contextcheck`): none of these linters are enabled in `.golangci.yml`, so the directives were doing nothing. - **29 `testifylint`** directives whose underlying issues were addressed by mechanical rewrites: - `assert.Nil(t, err)` → `assert.NoError(t, err)` - `assert.NotNil(t, err)` → `assert.Error(t, err)` - `assert.Equal(t, true/false, x)` → `assert.True/False(t, x)` - `assert.Equal(t, 0, len(x))` → `assert.Empty(t, x)` - `assert.Equal(t, N, len(x))` → `assert.Len(t, x, N)` - `assert.Len(t, x, 0)` → `assert.Empty(t, x)` Many `testifylint` directives still apply because they flag `require-error` (i.e. testifylint wants `require.NoError` instead of `assert.NoError` for early bail-out). That's a behavior change (fail-fast vs continue) and out of scope for this purely mechanical cleanup — those can be addressed in a follow-up. Same for `expected-actual`, `equal-values`, `error-is-as`, and the remaining `nilnil` / `unparam` / `forbidigo` / `staticcheck` / `goheader` / `dupl` directives. `golangci-lint run` is clean. Tests pass for all touched packages. --- This PR was written with the help of Claude Opus 4.7 Reviewed-on: https://gitea.com/gitea/act_runner/pulls/864 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com> Co-committed-by: silverwind <2021+silverwind@noreply.gitea.com>
68 lines
2.3 KiB
Go
68 lines
2.3 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// Copyright 2021 The nektos/act Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package model
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type WorkflowPlanTest struct {
|
|
workflowPath string
|
|
errorMessage string
|
|
noWorkflowRecurse bool
|
|
}
|
|
|
|
func TestPlanner(t *testing.T) {
|
|
log.SetLevel(log.DebugLevel)
|
|
|
|
tables := []WorkflowPlanTest{
|
|
{"invalid-job-name/invalid-1.yml", "workflow is not valid. 'invalid-job-name-1': Job name 'invalid-JOB-Name-v1.2.3-docker_hub' is invalid. Names must start with a letter or '_' and contain only alphanumeric characters, '-', or '_'", false},
|
|
{"invalid-job-name/invalid-2.yml", "workflow is not valid. 'invalid-job-name-2': Job name '1234invalid-JOB-Name-v123-docker_hub' is invalid. Names must start with a letter or '_' and contain only alphanumeric characters, '-', or '_'", false},
|
|
{"invalid-job-name/valid-1.yml", "", false},
|
|
{"invalid-job-name/valid-2.yml", "", false},
|
|
{"empty-workflow", "unable to read workflow 'push.yml': file is empty: EOF", false},
|
|
{"nested", "unable to read workflow 'fail.yml': file is empty: EOF", false},
|
|
{"nested", "", true},
|
|
}
|
|
|
|
workdir, err := filepath.Abs("testdata")
|
|
assert.NoError(t, err, workdir) //nolint:testifylint // pre-existing issue from nektos/act
|
|
for _, table := range tables {
|
|
fullWorkflowPath := filepath.Join(workdir, table.workflowPath)
|
|
_, err = NewWorkflowPlanner(fullWorkflowPath, table.noWorkflowRecurse)
|
|
if table.errorMessage == "" {
|
|
assert.NoError(t, err, "WorkflowPlanner should exit without any error")
|
|
} else {
|
|
assert.EqualError(t, err, table.errorMessage)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestWorkflow(t *testing.T) {
|
|
log.SetLevel(log.DebugLevel)
|
|
|
|
workflow := Workflow{
|
|
Jobs: map[string]*Job{
|
|
"valid_job": {
|
|
Name: "valid_job",
|
|
},
|
|
},
|
|
}
|
|
|
|
// Check that an invalid job id returns error
|
|
result, err := createStages(&workflow, "invalid_job_id")
|
|
assert.Error(t, err) //nolint:testifylint // pre-existing issue from nektos/act
|
|
assert.Nil(t, result)
|
|
|
|
// Check that an valid job id returns non-error
|
|
result, err = createStages(&workflow, "valid_job")
|
|
assert.NoError(t, err) //nolint:testifylint // pre-existing issue from nektos/act
|
|
assert.NotNil(t, result)
|
|
}
|