chore(atlantis): fix linter errors (#3690)

* chore(atlantis): fix linter errors

* fix superfluous-else

* revert gitlab check

* ignore stub funcs on azuredevops_client

* remove fetch-depth

* remove fail_on_error

* fix plan_step_runner_test.go

* more lint fixes

---------

Co-authored-by: Dylan Page <dylan.page@autodesk.com>
This commit is contained in:
Gabriel Martinez
2023-12-11 19:02:16 +00:00
committed by GitHub
parent 2e6758e6ee
commit 56e38b4151
42 changed files with 237 additions and 229 deletions

View File

@@ -7,22 +7,26 @@ linters-settings:
ignore-words:
# for gitlab notes api
- noteable
revive:
rules:
- name: dot-imports
disabled: true
linters:
enable:
- errcheck
- gochecknoinits
- gofmt
- gosec
- gosimple
- ineffassign
- misspell
- revive
- staticcheck
- typecheck
- unconvert
- unused
- vet
- vetshadow
- errcheck
- gochecknoinits
- gofmt
- gosec
- gosimple
- ineffassign
- misspell
- revive
- staticcheck
- typecheck
- unconvert
- unused
- vet
- vetshadow
run:
timeout: 10m

View File

@@ -38,7 +38,7 @@ var passedConfig server.UserConfig
type ServerCreatorMock struct{}
func (s *ServerCreatorMock) NewServer(userConfig server.UserConfig, config server.Config) (ServerStarter, error) {
func (s *ServerCreatorMock) NewServer(userConfig server.UserConfig, _ server.Config) (ServerStarter, error) {
passedConfig = userConfig
return &ServerStarterMock{}, nil
}

View File

@@ -53,11 +53,11 @@ var mockPreWorkflowHookRunner *runtimemocks.MockPreWorkflowHookRunner
var mockPostWorkflowHookRunner *runtimemocks.MockPostWorkflowHookRunner
func (m *NoopTFDownloader) GetFile(dst, src string) error {
func (m *NoopTFDownloader) GetFile(_, _ string) error {
return nil
}
func (m *NoopTFDownloader) GetAny(dst, src string) error {
func (m *NoopTFDownloader) GetAny(_, _ string) error {
return nil
}
@@ -1572,13 +1572,13 @@ func setupE2E(t *testing.T, repoDir string, opt setupOption) (events_controllers
type mockLockURLGenerator struct{}
func (m *mockLockURLGenerator) GenerateLockURL(lockID string) string {
func (m *mockLockURLGenerator) GenerateLockURL(_ string) string {
return "lock-url"
}
type mockWebhookSender struct{}
func (w *mockWebhookSender) Send(log logging.SimpleLogging, result webhooks.ApplyResult) error {
func (w *mockWebhookSender) Send(_ logging.SimpleLogging, _ webhooks.ApplyResult) error {
return nil
}

View File

@@ -85,7 +85,7 @@ func (g *GithubAppController) ExchangeCode(w http.ResponseWriter, r *http.Reques
}
// New redirects the user to create a new GitHub app
func (g *GithubAppController) New(w http.ResponseWriter, r *http.Request) {
func (g *GithubAppController) New(w http.ResponseWriter, _ *http.Request) {
if g.GithubSetupComplete {
g.respond(w, logging.Error, http.StatusBadRequest, "Atlantis already has GitHub credentials")

View File

@@ -32,7 +32,7 @@ type LocksController struct {
// LockApply handles creating a global apply lock.
// If Lock already exists it will be a no-op
func (l *LocksController) LockApply(w http.ResponseWriter, r *http.Request) {
func (l *LocksController) LockApply(w http.ResponseWriter, _ *http.Request) {
lock, err := l.ApplyLocker.LockApply()
if err != nil {
l.respond(w, logging.Error, http.StatusInternalServerError, "creating apply lock failed with: %s", err)
@@ -44,7 +44,7 @@ func (l *LocksController) LockApply(w http.ResponseWriter, r *http.Request) {
// UnlockApply handles releasing a global apply lock.
// If Lock doesn't exists it will be a no-op
func (l *LocksController) UnlockApply(w http.ResponseWriter, r *http.Request) {
func (l *LocksController) UnlockApply(w http.ResponseWriter, _ *http.Request) {
err := l.ApplyLocker.UnlockApply()
if err != nil {
l.respond(w, logging.Error, http.StatusInternalServerError, "deleting apply lock failed with: %s", err)

View File

@@ -23,7 +23,7 @@ type StatusResponse struct {
}
// Get is the GET /status route.
func (d *StatusController) Get(w http.ResponseWriter, r *http.Request) {
func (d *StatusController) Get(w http.ResponseWriter, _ *http.Request) {
status := d.Drainer.GetStatus()
data, err := json.MarshalIndent(&StatusResponse{
ShuttingDown: status.ShuttingDown,

View File

@@ -37,16 +37,16 @@ const (
//
// 2. A map for an env step with name and command or value, or a run step with a command and output config
// - env:
// name: test
// command: echo 312
// value: value
// name: test
// command: echo 312
// value: value
// - run:
// command: my custom command
// output: hide
// command: my custom command
// output: hide
//
// 3. A map for a built-in command and extra_args:
// - plan:
// extra_args: [-var-file=staging.tfvars]
// extra_args: [-var-file=staging.tfvars]
//
// 4. A map for a custom run command:
// - run: my custom command

View File

@@ -286,9 +286,9 @@ func TestUnlockingMultiple(t *testing.T) {
_, _, err := b.TryLock(lock)
Ok(t, err)
new := lock
new.Project.RepoFullName = "new/repo"
_, _, err = b.TryLock(new)
new1 := lock
new1.Project.RepoFullName = "new/repo"
_, _, err = b.TryLock(new1)
Ok(t, err)
new2 := lock
@@ -306,7 +306,7 @@ func TestUnlockingMultiple(t *testing.T) {
Ok(t, err)
_, err = b.Unlock(new2.Project, workspace)
Ok(t, err)
_, err = b.Unlock(new.Project, workspace)
_, err = b.Unlock(new1.Project, workspace)
Ok(t, err)
_, err = b.Unlock(project, workspace)
Ok(t, err)
@@ -383,9 +383,9 @@ func TestUnlockByPullMatching(t *testing.T) {
Ok(t, err)
// add additional locks with the same repo and pull num but different paths/workspaces
new := lock
new.Project.Path = "dif/path"
_, _, err = b.TryLock(new)
new1 := lock
new1.Project.Path = "dif/path"
_, _, err = b.TryLock(new1)
Ok(t, err)
new2 := lock
new2.Workspace = "new-workspace"

View File

@@ -166,7 +166,7 @@ func NewNoOpLocker() *NoOpLocker {
}
// TryLock attempts to acquire a lock to a project and workspace.
func (c *NoOpLocker) TryLock(p models.Project, workspace string, pull models.PullRequest, user models.User) (TryLockResponse, error) {
func (c *NoOpLocker) TryLock(p models.Project, workspace string, _ models.PullRequest, _ models.User) (TryLockResponse, error) {
return TryLockResponse{true, models.ProjectLock{}, c.key(p, workspace)}, nil
}
@@ -174,7 +174,7 @@ func (c *NoOpLocker) TryLock(p models.Project, workspace string, pull models.Pul
// a pointer to the now deleted lock will be returned. Else, that
// pointer will be nil. An error will only be returned if there was
// an error deleting the lock (i.e. not if there was no lock).
func (c *NoOpLocker) Unlock(key string) (*models.ProjectLock, error) {
func (c *NoOpLocker) Unlock(_ string) (*models.ProjectLock, error) {
return &models.ProjectLock{}, nil
}
@@ -186,7 +186,7 @@ func (c *NoOpLocker) List() (map[string]models.ProjectLock, error) {
}
// UnlockByPull deletes all locks associated with that pull request.
func (c *NoOpLocker) UnlockByPull(repoFullName string, pullNum int) ([]models.ProjectLock, error) {
func (c *NoOpLocker) UnlockByPull(_ string, _ int) ([]models.ProjectLock, error) {
return []models.ProjectLock{}, nil
}
@@ -194,7 +194,7 @@ func (c *NoOpLocker) UnlockByPull(repoFullName string, pullNum int) ([]models.Pr
// a pointer to the lock will be returned. Else, the pointer will be nil.
// An error will only be returned if there was an error getting the lock
// (i.e. not if there was no lock).
func (c *NoOpLocker) GetLock(key string) (*models.ProjectLock, error) {
func (c *NoOpLocker) GetLock(_ string) (*models.ProjectLock, error) {
return nil, nil
}

View File

@@ -56,7 +56,7 @@ func New(hostname string, port int, password string, tlsEnabled bool, insecureSk
}
// NewWithClient is used for testing.
func NewWithClient(client *redis.Client, bucket string, globalBucket string) (*RedisDB, error) {
func NewWithClient(client *redis.Client, _ string, _ string) (*RedisDB, error) {
return &RedisDB{
client: client,
}, nil
@@ -82,12 +82,12 @@ func (r *RedisDB) TryLock(newLock models.ProjectLock) (bool, models.ProjectLock,
} else if err != nil {
// otherwise the lock fails, return to caller the run that's holding the lock
return false, currLock, errors.Wrap(err, "db transaction failed")
} else {
if err := json.Unmarshal([]byte(val), &currLock); err != nil {
return false, currLock, errors.Wrap(err, "failed to deserialize current lock")
}
return false, currLock, nil
}
if err := json.Unmarshal([]byte(val), &currLock); err != nil {
return false, currLock, errors.Wrap(err, "failed to deserialize current lock")
}
return false, currLock, nil
}
// Unlock attempts to unlock the project and workspace.
@@ -103,13 +103,13 @@ func (r *RedisDB) Unlock(project models.Project, workspace string) (*models.Proj
return nil, nil
} else if err != nil {
return nil, errors.Wrap(err, "db transaction failed")
} else {
if err := json.Unmarshal([]byte(val), &lock); err != nil {
return nil, errors.Wrap(err, "failed to deserialize current lock")
}
r.client.Del(ctx, key)
return &lock, nil
}
if err := json.Unmarshal([]byte(val), &lock); err != nil {
return nil, errors.Wrap(err, "failed to deserialize current lock")
}
r.client.Del(ctx, key)
return &lock, nil
}
// List lists all current locks.
@@ -144,15 +144,15 @@ func (r *RedisDB) GetLock(project models.Project, workspace string) (*models.Pro
return nil, nil
} else if err != nil {
return nil, errors.Wrap(err, "db transaction failed")
} else {
var lock models.ProjectLock
if err := json.Unmarshal([]byte(val), &lock); err != nil {
return nil, errors.Wrapf(err, "deserializing lock at key %q", key)
}
// need to set it to Local after deserialization due to https://github.com/golang/go/issues/19486
lock.Time = lock.Time.Local()
return &lock, nil
}
var lock models.ProjectLock
if err := json.Unmarshal([]byte(val), &lock); err != nil {
return nil, errors.Wrapf(err, "deserializing lock at key %q", key)
}
// need to set it to Local after deserialization due to https://github.com/golang/go/issues/19486
lock.Time = lock.Time.Local()
return &lock, nil
}
// UnlockByPull deletes all locks associated with that pull request and returns them.
@@ -203,9 +203,9 @@ func (r *RedisDB) LockCommand(cmdName command.Name, lockTime time.Time) (*comman
return &lock, errors.Wrap(err, "db transaction failed")
} else if err != nil {
return nil, errors.Wrap(err, "db transaction failed")
} else {
return nil, errors.New("db transaction failed: lock already exists")
}
return nil, errors.New("db transaction failed: lock already exists")
}
func (r *RedisDB) UnlockCommand(cmdName command.Name) error {
@@ -215,9 +215,10 @@ func (r *RedisDB) UnlockCommand(cmdName command.Name) error {
return errors.New("db transaction failed: no lock exists")
} else if err != nil {
return errors.Wrap(err, "db transaction failed")
} else {
return r.client.Del(ctx, cmdLockKey).Err()
}
return r.client.Del(ctx, cmdLockKey).Err()
}
func (r *RedisDB) CheckCommandLock(cmdName command.Name) (*command.Lock, error) {
@@ -229,12 +230,12 @@ func (r *RedisDB) CheckCommandLock(cmdName command.Name) (*command.Lock, error)
return nil, nil
} else if err != nil {
return nil, errors.Wrap(err, "db transaction failed")
} else {
if err := json.Unmarshal([]byte(val), &cmdLock); err != nil {
return nil, errors.Wrap(err, "failed to deserialize Lock")
}
return &cmdLock, err
}
if err := json.Unmarshal([]byte(val), &cmdLock); err != nil {
return nil, errors.Wrap(err, "failed to deserialize Lock")
}
return &cmdLock, err
}
// UpdatePullWithResults updates pull's status with the latest project results.
@@ -367,13 +368,13 @@ func (r *RedisDB) getPull(key string) (*models.PullStatus, error) {
return nil, nil
} else if err != nil {
return nil, errors.Wrap(err, "db transaction failed")
} else {
var p models.PullStatus
if err := json.Unmarshal([]byte(val), &p); err != nil {
return nil, errors.Wrapf(err, "deserializing pull at %q with contents %q", key, val)
}
return &p, nil
}
var p models.PullStatus
if err := json.Unmarshal([]byte(val), &p); err != nil {
return nil, errors.Wrapf(err, "deserializing pull at %q with contents %q", key, val)
}
return &p, nil
}
func (r *RedisDB) writePull(key string, pull models.PullStatus) error {

View File

@@ -322,9 +322,9 @@ func TestUnlockingMultiple(t *testing.T) {
_, _, err := rdb.TryLock(lock)
Ok(t, err)
new := lock
new.Project.RepoFullName = "new/repo"
_, _, err = rdb.TryLock(new)
new1 := lock
new1.Project.RepoFullName = "new/repo"
_, _, err = rdb.TryLock(new1)
Ok(t, err)
new2 := lock
@@ -342,7 +342,7 @@ func TestUnlockingMultiple(t *testing.T) {
Ok(t, err)
_, err = rdb.Unlock(new2.Project, workspace)
Ok(t, err)
_, err = rdb.Unlock(new.Project, workspace)
_, err = rdb.Unlock(new1.Project, workspace)
Ok(t, err)
_, err = rdb.Unlock(project, workspace)
Ok(t, err)
@@ -419,9 +419,9 @@ func TestUnlockByPullMatching(t *testing.T) {
Ok(t, err)
// add additional locks with the same repo and pull num but different paths/workspaces
new := lock
new.Project.Path = "dif/path"
_, _, err = rdb.TryLock(new)
new1 := lock
new1.Project.Path = "dif/path"
_, _, err = rdb.TryLock(new1)
Ok(t, err)
new2 := lock
new2.Workspace = "new-workspace"

View File

@@ -361,7 +361,7 @@ type remoteApplyMock struct {
}
// RunCommandAsync fakes out running terraform async.
func (r *remoteApplyMock) RunCommandAsync(ctx command.ProjectContext, path string, args []string, envs map[string]string, v *version.Version, workspace string) (chan<- string, <-chan runtimemodels.Line) {
func (r *remoteApplyMock) RunCommandAsync(_ command.ProjectContext, _ string, args []string, _ map[string]string, _ *version.Version, _ string) (chan<- string, <-chan runtimemodels.Line) {
r.CalledArgs = args
in := make(chan string)

View File

@@ -296,7 +296,7 @@ locally at this time.
// using Terraform Cloud remote operations in TF 1.1.0 and above
var remoteOpsErr110 = `
│ Error: Saving a generated plan is currently not supported
│ Terraform Cloud does not support saving the generated execution plan
│ locally at this time.

View File

@@ -193,9 +193,8 @@ Terraform will perform the following actions:
return []ReturnValue{"default", nil}
} else if tfArgs[0] == "plan" {
return []ReturnValue{rawOutput, nil}
} else {
return []ReturnValue{"", errors.New("unexpected call to RunCommandWithVersion")}
}
return []ReturnValue{"", errors.New("unexpected call to RunCommandWithVersion")}
})
actOutput, err := s.Run(command.ProjectContext{Workspace: "default"}, nil, "", map[string]string(nil))
Ok(t, err)
@@ -246,9 +245,8 @@ func TestRun_OutputOnErr(t *testing.T) {
return []ReturnValue{"default\n", nil}
} else if tfArgs[0] == "plan" {
return []ReturnValue{expOutput, errors.New(expErrMsg)}
} else {
return []ReturnValue{"", errors.New("unexpected call to RunCommandWithVersion")}
}
return []ReturnValue{"", errors.New("unexpected call to RunCommandWithVersion")}
})
actOutput, actErr := s.Run(command.ProjectContext{Workspace: "default"}, nil, "", map[string]string(nil))
ErrEquals(t, expErrMsg, actErr)
@@ -359,7 +357,7 @@ locally at this time.
tfVersion: "1.1.0",
remoteOpsErr: `
│ Error: Saving a generated plan is currently not supported
│ Terraform Cloud does not support saving the generated execution plan
│ locally at this time.
@@ -545,7 +543,7 @@ type remotePlanMock struct {
CalledArgs []string
}
func (r *remotePlanMock) RunCommandAsync(ctx command.ProjectContext, path string, args []string, envs map[string]string, v *version.Version, workspace string) (chan<- string, <-chan runtimemodels.Line) {
func (r *remotePlanMock) RunCommandAsync(_ command.ProjectContext, _ string, args []string, _ map[string]string, _ *version.Version, _ string) (chan<- string, <-chan runtimemodels.Line) {
r.CalledArgs = args
in := make(chan string)
out := make(chan runtimemodels.Line)

View File

@@ -76,9 +76,8 @@ func (r *RunStepRunner) Run(ctx command.ProjectContext, command string, path str
if !ctx.CustomPolicyCheck {
ctx.Log.Debug("error: %s", err)
return "", err
} else {
ctx.Log.Debug("Treating custom policy tool error exit code as a policy failure. Error output: %s", err)
}
ctx.Log.Debug("Treating custom policy tool error exit code as a policy failure. Error output: %s", err)
}
switch postProcessOutput {

View File

@@ -64,7 +64,7 @@ type Runner interface {
// NullRunner is a runner that isn't configured for a given plan type but outputs nothing
type NullRunner struct{}
func (p NullRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error) {
func (p NullRunner) Run(ctx command.ProjectContext, _ []string, _ string, _ map[string]string) (string, error) {
ctx.Log.Debug("runner not configured for plan type")
return "", nil
}
@@ -72,7 +72,7 @@ func (p NullRunner) Run(ctx command.ProjectContext, extraArgs []string, path str
// RemoteBackendUnsupportedRunner is a runner that is responsible for outputting that the remote backend is unsupported
type RemoteBackendUnsupportedRunner struct{}
func (p RemoteBackendUnsupportedRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error) {
func (p RemoteBackendUnsupportedRunner) Run(ctx command.ProjectContext, _ []string, _ string, _ map[string]string) (string, error) {
ctx.Log.Debug("runner not configured for remote backend")
return "Remote backend is unsupported for this step.", nil
}

View File

@@ -27,7 +27,7 @@ type showStepRunner struct {
defaultTFVersion *version.Version
}
func (p *showStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error) {
func (p *showStepRunner) Run(ctx command.ProjectContext, _ []string, path string, envs map[string]string) (string, error) {
tfVersion := p.defaultTFVersion
if ctx.TerraformVersion != nil {
tfVersion = ctx.TerraformVersion

View File

@@ -14,7 +14,7 @@ type VersionStepRunner struct {
}
// Run ensures a given version for the executable, builds the args from the project context and then runs executable returning the result
func (v *VersionStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error) {
func (v *VersionStepRunner) Run(ctx command.ProjectContext, _ []string, path string, envs map[string]string) (string, error) {
tfVersion := v.DefaultTFVersion
if ctx.TerraformVersion != nil {
tfVersion = ctx.TerraformVersion

View File

@@ -249,7 +249,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
},
RunnerInvokeMatch: []*EqMatcher{
@@ -258,7 +258,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
},
ExpComment: "Ran Apply for 2 projects:\n\n" +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---\n### " +
"2. dir: `` workspace: ``\n**Apply Error**\n```\nShabang!\n```\n\n---",
"2. dir: `` workspace: ``\n**Apply Error**\n```\nshabang\n```\n\n---",
},
{
Description: "When first apply fails, the second not will run",
@@ -279,7 +279,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Apply,
@@ -290,7 +290,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
Once(),
Never(),
},
ExpComment: "Ran Apply for dir: `` workspace: ``\n\n**Apply Error**\n```\nShabang!\n```",
ExpComment: "Ran Apply for dir: `` workspace: ``\n\n**Apply Error**\n```\nshabang\n```",
},
{
Description: "When both in a group of two succeeds, the following two will run",
@@ -324,7 +324,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Apply,
@@ -343,7 +343,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
},
ExpComment: "Ran Apply for 2 projects:\n\n" +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---\n### " +
"2. dir: `` workspace: ``\n**Apply Error**\n```\nShabang!\n```\n\n---",
"2. dir: `` workspace: ``\n**Apply Error**\n```\nshabang\n```\n\n---",
},
{
Description: "When one out of two fails, the following two will not run",
@@ -381,7 +381,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Apply,
@@ -397,7 +397,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
ExpComment: "Ran Apply for 4 projects:\n\n" +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---\n### " +
"2. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---\n### " +
"3. dir: `` workspace: ``\n**Apply Error**\n```\nShabang!\n```\n\n---\n### " +
"3. dir: `` workspace: ``\n**Apply Error**\n```\nshabang\n```\n\n---\n### " +
"4. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---",
},
{
@@ -417,7 +417,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Apply,
@@ -429,7 +429,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
Once(),
},
ExpComment: "Ran Apply for 2 projects:\n\n" +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n**Apply Error**\n```\nShabang!\n```\n\n---\n### " +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n**Apply Error**\n```\nshabang\n```\n\n---\n### " +
"2. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---",
},
{
@@ -447,7 +447,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Apply,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Apply,
@@ -459,7 +459,7 @@ func TestApplyCommandRunner_ExecutionOrder(t *testing.T) {
Once(),
},
ExpComment: "Ran Apply for 2 projects:\n\n" +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n**Apply Error**\n```\nShabang!\n```\n\n---\n### " +
"1. dir: `` workspace: ``\n1. dir: `` workspace: ``\n\n### 1. dir: `` workspace: ``\n**Apply Error**\n```\nshabang\n```\n\n---\n### " +
"2. dir: `` workspace: ``\n```diff\nGreat success!\n```\n\n---",
},
}

View File

@@ -425,7 +425,7 @@ func (c *DefaultCommandRunner) ensureValidRepoMetadata(
baseRepo models.Repo,
maybeHeadRepo *models.Repo,
maybePull *models.PullRequest,
user models.User,
_ models.User,
pullNum int,
log logging.SimpleLogging,
) (headRepo models.Repo, pull models.PullRequest, err error) {

View File

@@ -284,18 +284,18 @@ func (m *MockCSU) UpdateCombinedCount(repo models.Repo, pull models.PullRequest,
return nil
}
func (m *MockCSU) UpdateCombined(repo models.Repo, pull models.PullRequest, status models.CommitStatus, command command.Name) error {
func (m *MockCSU) UpdateCombined(_ models.Repo, _ models.PullRequest, _ models.CommitStatus, _ command.Name) error {
return nil
}
func (m *MockCSU) UpdateProject(ctx command.ProjectContext, cmdName command.Name, status models.CommitStatus, url string, result *command.ProjectResult) error {
func (m *MockCSU) UpdateProject(_ command.ProjectContext, _ command.Name, _ models.CommitStatus, _ string, _ *command.ProjectResult) error {
return nil
}
func (m *MockCSU) UpdatePreWorkflowHook(pull models.PullRequest, status models.CommitStatus, hookDescription string, runtimeDescription string, url string) error {
func (m *MockCSU) UpdatePreWorkflowHook(_ models.PullRequest, _ models.CommitStatus, _ string, _ string, _ string) error {
return nil
}
func (m *MockCSU) UpdatePostWorkflowHook(pull models.PullRequest, status models.CommitStatus, hookDescription string, runtimeDescription string, url string) error {
func (m *MockCSU) UpdatePostWorkflowHook(_ models.PullRequest, _ models.CommitStatus, _ string, _ string, _ string) error {
return nil
}

View File

@@ -599,9 +599,8 @@ func (e *EventParser) ParseGitlabMergeRequestUpdateEvent(event gitlab.MergeEvent
// Check for MR that has been marked as ready
(strings.HasPrefix(event.Changes.Title.Previous, "Draft:") && !strings.HasPrefix(event.Changes.Title.Current, "Draft:")) {
return models.UpdatedPullEvent
} else {
return models.OtherPullEvent
}
return models.OtherPullEvent
}
// ParseGitlabMergeRequestEvent parses GitLab merge request events.

View File

@@ -253,7 +253,8 @@ func TestParseGithubPullEvent_EventType(t *testing.T) {
t.Run(c.action, func(t *testing.T) {
// Test normal parsing
event := deepcopy.Copy(PullEvent).(github.PullRequestEvent)
event.Action = &c.action
action := c.action
event.Action = &action
_, actType, _, _, _, err := parser.ParseGithubPullEvent(&event)
Ok(t, err)
Equals(t, c.exp, actType)

View File

@@ -564,7 +564,7 @@ $$$
RepoRelDir: "path",
PolicyCheckResults: &models.PolicyCheckResults{
PolicySetResults: []models.PolicySetResult{
models.PolicySetResult{
{
PolicySetName: "policy1",
PolicyOutput: "4 tests, 4 passed, 0 warnings, 0 failures, 0 exceptions",
Passed: true,
@@ -581,7 +581,7 @@ $$$
ProjectName: "projectname",
PolicyCheckResults: &models.PolicyCheckResults{
PolicySetResults: []models.PolicySetResult{
models.PolicySetResult{
{
PolicySetName: "policy1",
PolicyOutput: "4 tests, 4 passed, 0 warnings, 0 failures, 0 exceptions",
Passed: true,
@@ -777,7 +777,7 @@ $$$
RepoRelDir: "path",
PolicyCheckResults: &models.PolicyCheckResults{
PolicySetResults: []models.PolicySetResult{
models.PolicySetResult{
{
PolicySetName: "policy1",
PolicyOutput: "4 tests, 4 passed, 0 warnings, 0 failures, 0 exceptions",
Passed: true,
@@ -793,7 +793,7 @@ $$$
Failure: "failure",
PolicyCheckResults: &models.PolicyCheckResults{
PolicySetResults: []models.PolicySetResult{
models.PolicySetResult{
{
PolicySetName: "policy1",
PolicyOutput: "4 tests, 2 passed, 0 warnings, 2 failures, 0 exceptions",
Passed: false,
@@ -1316,7 +1316,7 @@ func TestRenderCustomPolicyCheckTemplate_DisableApplyAll(t *testing.T) {
RepoRelDir: "path",
PolicyCheckResults: &models.PolicyCheckResults{
PolicySetResults: []models.PolicySetResult{
models.PolicySetResult{
{
PolicySetName: "policy1",
PolicyOutput: "4 tests, 4 passed, 0 warnings, 0 failures, 0 exceptions",
Passed: true,

View File

@@ -192,7 +192,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
},
RunnerInvokeMatch: []*EqMatcher{
@@ -221,7 +221,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,
@@ -256,7 +256,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,
@@ -306,7 +306,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,
@@ -372,7 +372,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
},
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,
@@ -407,7 +407,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,
@@ -438,7 +438,7 @@ func TestPlanCommandRunner_ExecutionOrder(t *testing.T) {
ProjectResults: []command.ProjectResult{
{
Command: command.Plan,
Error: errors.New("Shabang!"),
Error: errors.New("shabang"),
},
{
Command: command.Plan,

View File

@@ -119,7 +119,7 @@ func NewProjectCommandBuilder(
IncludeGitUntrackedFiles bool,
AutoDiscoverMode string,
scope tally.Scope,
logger logging.SimpleLogging,
_ logging.SimpleLogging,
terraformClient terraform.Client,
) *DefaultProjectCommandBuilder {
return &DefaultProjectCommandBuilder{

View File

@@ -562,13 +562,14 @@ projects:
var actCtxs []command.ProjectContext
var err error
cmd := c.Cmd
if cmdName == command.Plan {
actCtxs, err = builder.BuildPlanCommands(&command.Context{
Log: logger,
Scope: scope,
}, &c.Cmd)
}, &cmd)
} else {
actCtxs, err = builder.BuildApplyCommands(&command.Context{Log: logger, Scope: scope}, &c.Cmd)
actCtxs, err = builder.BuildApplyCommands(&command.Context{Log: logger, Scope: scope}, &cmd)
}
if c.ExpErr != "" {
@@ -752,10 +753,11 @@ projects:
var actCtxs []command.ProjectContext
var err error
cmd := c.Cmd
actCtxs, err = builder.BuildPlanCommands(&command.Context{
Log: logger,
Scope: scope,
}, &c.Cmd)
}, &cmd)
if c.ExpErr != "" {
ErrEquals(t, c.ExpErr, err)
@@ -1956,10 +1958,11 @@ func TestDefaultProjectCommandBuilder_BuildPlanCommands_Single_With_RestrictFile
var actCtxs []command.ProjectContext
var err error
cmd := c.Cmd
actCtxs, err = builder.BuildPlanCommands(&command.Context{
Log: logger,
Scope: scope,
}, &c.Cmd)
}, &cmd)
if c.ExpErr != "" {
ErrEquals(t, c.ExpErr, err)
return
@@ -2068,10 +2071,11 @@ func TestDefaultProjectCommandBuilder_BuildPlanCommands_with_IncludeGitUntracked
var actCtxs []command.ProjectContext
var err error
cmd := c.Cmd
actCtxs, err = builder.BuildPlanCommands(&command.Context{
Log: logger,
Scope: scope,
}, &c.Cmd)
}, &cmd)
if c.ExpErr != "" {
ErrEquals(t, c.ExpErr, err)
return

View File

@@ -1,9 +1,10 @@
package events
import (
"slices"
"github.com/runatlantis/atlantis/server/events/command"
"github.com/runatlantis/atlantis/server/events/vcs"
"slices"
)
func NewUnlockCommandRunner(
@@ -29,10 +30,7 @@ type UnlockCommandRunner struct {
DisableUnlockLabel string
}
func (u *UnlockCommandRunner) Run(
ctx *command.Context,
cmd *CommentCommand,
) {
func (u *UnlockCommandRunner) Run(ctx *command.Context, _ *CommentCommand) {
baseRepo := ctx.Pull.BaseRepo
pullNum := ctx.Pull.Num
disableUnlockLabel := u.DisableUnlockLabel

View File

@@ -95,7 +95,7 @@ func (g *AzureDevopsClient) GetModifiedFiles(repo models.Repo, pull models.PullR
//
// If comment length is greater than the max comment length we split into
// multiple comments.
func (g *AzureDevopsClient) CreateComment(repo models.Repo, pullNum int, comment string, command string) error {
func (g *AzureDevopsClient) CreateComment(repo models.Repo, pullNum int, comment string, command string) error { //nolint: revive
sepEnd := "\n```\n</details>" +
"\n<br>\n\n**Warning**: Output length greater than max comment size. Continued in next comment."
sepStart := "Continued from previous comment.\n<details><summary>Show Output</summary>\n\n" +
@@ -134,7 +134,7 @@ func (g *AzureDevopsClient) ReactToComment(repo models.Repo, pullNum int, commen
return nil
}
func (g *AzureDevopsClient) HidePrevCommandComments(repo models.Repo, pullNum int, command string) error {
func (g *AzureDevopsClient) HidePrevCommandComments(repo models.Repo, pullNum int, command string) error { //nolint: revive
return nil
}
@@ -170,13 +170,13 @@ func (g *AzureDevopsClient) PullIsApproved(repo models.Repo, pull models.PullReq
return approvalStatus, nil
}
func (g *AzureDevopsClient) DiscardReviews(repo models.Repo, pull models.PullRequest) error {
func (g *AzureDevopsClient) DiscardReviews(repo models.Repo, pull models.PullRequest) error { //nolint: revive
// TODO implement
return nil
}
// PullIsMergeable returns true if the merge request can be merged.
func (g *AzureDevopsClient) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcsstatusname string) (bool, error) {
func (g *AzureDevopsClient) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcsstatusname string) (bool, error) { //nolint: revive
owner, project, repoName := SplitAzureDevopsRepoFullName(repo.FullName)
opts := azuredevops.PullRequestGetOptions{IncludeWorkItemRefs: true}
@@ -390,16 +390,16 @@ func SplitAzureDevopsRepoFullName(repoFullName string) (owner string, project st
}
// GetTeamNamesForUser returns the names of the teams or groups that the user belongs to (in the organization the repository belongs to).
func (g *AzureDevopsClient) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) {
func (g *AzureDevopsClient) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) { //nolint: revive
return nil, nil
}
func (g *AzureDevopsClient) SupportsSingleFileDownload(repo models.Repo) bool {
func (g *AzureDevopsClient) SupportsSingleFileDownload(repo models.Repo) bool { //nolint: revive
return false
}
func (g *AzureDevopsClient) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) {
return false, []byte{}, fmt.Errorf("Not Implemented")
func (g *AzureDevopsClient) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) { //nolint: revive
return false, []byte{}, fmt.Errorf("not implemented")
}
// GitStatusContextFromSrc parses an Atlantis formatted src string into a context suitable
@@ -421,10 +421,10 @@ func GitStatusContextFromSrc(src string) *azuredevops.GitStatusContext {
}
}
func (g *AzureDevopsClient) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (g *AzureDevopsClient) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) { //nolint: revive
return "", fmt.Errorf("not yet implemented")
}
func (g *AzureDevopsClient) GetPullLabels(repo models.Repo, pull models.PullRequest) ([]string, error) {
func (g *AzureDevopsClient) GetPullLabels(_ models.Repo, _ models.PullRequest) ([]string, error) {
return nil, fmt.Errorf("not yet implemented")
}

View File

@@ -618,7 +618,9 @@ func TestAzureDevopsClient_GitStatusContextFromSrc(t *testing.T) {
for _, c := range cases {
result := vcs.GitStatusContextFromSrc(c.src)
Equals(t, &c.expName, result.Name)
Equals(t, &c.expGenre, result.Genre)
expName := c.expName
expGenre := c.expGenre
Equals(t, &expName, result.Name)
Equals(t, &expGenre, result.Genre)
}
}

View File

@@ -85,7 +85,7 @@ func (b *Client) GetModifiedFiles(repo models.Repo, pull models.PullRequest) ([]
}
// CreateComment creates a comment on the merge request.
func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, command string) error {
func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, _ string) error {
// NOTE: I tried to find the maximum size of a comment for bitbucket.org but
// I got up to 200k chars without issue so for now I'm not going to bother
// to detect this.
@@ -101,12 +101,12 @@ func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, co
}
// UpdateComment updates the body of a comment on the merge request.
func (b *Client) ReactToComment(repo models.Repo, pullNum int, commentID int64, reaction string) error { // nolint revive
func (b *Client) ReactToComment(_ models.Repo, _ int, _ int64, _ string) error {
// TODO: Bitbucket support for reactions
return nil
}
func (b *Client) HidePrevCommandComments(repo models.Repo, pullNum int, command string) error {
func (b *Client) HidePrevCommandComments(_ models.Repo, _ int, _ string) error {
return nil
}
@@ -138,7 +138,7 @@ func (b *Client) PullIsApproved(repo models.Repo, pull models.PullRequest) (appr
}
// PullIsMergeable returns true if the merge request has no conflicts and can be merged.
func (b *Client) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcsstatusname string) (bool, error) {
func (b *Client) PullIsMergeable(repo models.Repo, pull models.PullRequest, _ string) (bool, error) {
nextPageURL := fmt.Sprintf("%s/2.0/repositories/%s/pullrequests/%d/diffstat", b.BaseURL, repo.FullName, pull.Num)
// We'll only loop 1000 times as a safety measure.
maxLoops := 1000
@@ -207,7 +207,7 @@ func (b *Client) UpdateStatus(repo models.Repo, pull models.PullRequest, status
}
// MergePull merges the pull request.
func (b *Client) MergePull(pull models.PullRequest, pullOptions models.PullRequestOptions) error {
func (b *Client) MergePull(pull models.PullRequest, _ models.PullRequestOptions) error {
path := fmt.Sprintf("%s/2.0/repositories/%s/pullrequests/%d/merge", b.BaseURL, pull.BaseRepo.FullName, pull.Num)
_, err := b.makeRequest("POST", path, nil)
return err
@@ -234,7 +234,7 @@ func (b *Client) prepRequest(method string, path string, body io.Reader) (*http.
return req, nil
}
func (b *Client) DiscardReviews(repo models.Repo, pull models.PullRequest) error {
func (b *Client) DiscardReviews(_ models.Repo, _ models.PullRequest) error {
// TODO implement
return nil
}
@@ -263,7 +263,7 @@ func (b *Client) makeRequest(method string, path string, reqBody io.Reader) ([]b
}
// GetTeamNamesForUser returns the names of the teams or groups that the user belongs to (in the organization the repository belongs to).
func (b *Client) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) {
func (b *Client) GetTeamNamesForUser(_ models.Repo, _ models.User) ([]string, error) {
return nil, nil
}
@@ -274,14 +274,14 @@ func (b *Client) SupportsSingleFileDownload(models.Repo) bool {
// GetFileContent a repository file content from VCS (which support fetch a single file from repository)
// The first return value indicates whether the repo contains a file or not
// if BaseRepo had a file, its content will placed on the second return value
func (b *Client) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) {
return false, []byte{}, fmt.Errorf("Not Implemented")
func (b *Client) GetFileContent(_ models.PullRequest, _ string) (bool, []byte, error) {
return false, []byte{}, fmt.Errorf("not implemented")
}
func (b *Client) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (b *Client) GetCloneURL(_ models.VCSHostType, _ string) (string, error) {
return "", fmt.Errorf("not yet implemented")
}
func (b *Client) GetPullLabels(repo models.Repo, pull models.PullRequest) ([]string, error) {
func (b *Client) GetPullLabels(_ models.Repo, _ models.PullRequest) ([]string, error) {
return nil, fmt.Errorf("not yet implemented")
}

View File

@@ -133,7 +133,7 @@ func (b *Client) GetProjectKey(repoName string, cloneURL string) (string, error)
// CreateComment creates a comment on the merge request. It will write multiple
// comments if a single comment is too long.
func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, command string) error {
func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, _ string) error {
sepEnd := "\n```\n**Warning**: Output length greater than max comment size. Continued in next comment."
sepStart := "Continued from previous comment.\n```diff\n"
comments := common.SplitComment(comment, maxCommentLength, sepEnd, sepStart)
@@ -145,11 +145,11 @@ func (b *Client) CreateComment(repo models.Repo, pullNum int, comment string, co
return nil
}
func (b *Client) ReactToComment(repo models.Repo, pullNum int, commentID int64, reaction string) error { // nolint: revive
func (b *Client) ReactToComment(_ models.Repo, _ int, _ int64, _ string) error {
return nil
}
func (b *Client) HidePrevCommandComments(repo models.Repo, pullNum int, command string) error {
func (b *Client) HidePrevCommandComments(_ models.Repo, _ int, _ string) error {
return nil
}
@@ -196,13 +196,13 @@ func (b *Client) PullIsApproved(repo models.Repo, pull models.PullRequest) (appr
return approvalStatus, nil
}
func (b *Client) DiscardReviews(repo models.Repo, pull models.PullRequest) error {
func (b *Client) DiscardReviews(_ models.Repo, _ models.PullRequest) error {
// TODO implement
return nil
}
// PullIsMergeable returns true if the merge request has no conflicts and can be merged.
func (b *Client) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcsstatusname string) (bool, error) {
func (b *Client) PullIsMergeable(repo models.Repo, pull models.PullRequest, _ string) (bool, error) {
projectKey, err := b.GetProjectKey(repo.Name, repo.SanitizedCloneURL)
if err != nil {
return false, err
@@ -226,7 +226,7 @@ func (b *Client) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcss
}
// UpdateStatus updates the status of a commit.
func (b *Client) UpdateStatus(repo models.Repo, pull models.PullRequest, status models.CommitStatus, src string, description string, url string) error {
func (b *Client) UpdateStatus(_ models.Repo, pull models.PullRequest, status models.CommitStatus, src string, description string, url string) error {
bbState := "FAILED"
switch status {
case models.PendingCommitStatus:
@@ -347,25 +347,25 @@ func (b *Client) makeRequest(method string, path string, reqBody io.Reader) ([]b
}
// GetTeamNamesForUser returns the names of the teams or groups that the user belongs to (in the organization the repository belongs to).
func (b *Client) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) {
func (b *Client) GetTeamNamesForUser(_ models.Repo, _ models.User) ([]string, error) {
return nil, nil
}
func (b *Client) SupportsSingleFileDownload(repo models.Repo) bool {
func (b *Client) SupportsSingleFileDownload(_ models.Repo) bool {
return false
}
// GetFileContent a repository file content from VCS (which support fetch a single file from repository)
// The first return value indicates whether the repo contains a file or not
// if BaseRepo had a file, its content will placed on the second return value
func (b *Client) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) {
func (b *Client) GetFileContent(_ models.PullRequest, _ string) (bool, []byte, error) {
return false, []byte{}, fmt.Errorf("not implemented")
}
func (b *Client) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (b *Client) GetCloneURL(_ models.VCSHostType, _ string) (string, error) {
return "", fmt.Errorf("not yet implemented")
}
func (b *Client) GetPullLabels(repo models.Repo, pull models.PullRequest) ([]string, error) {
func (b *Client) GetPullLabels(_ models.Repo, _ models.PullRequest) ([]string, error) {
return nil, fmt.Errorf("not yet implemented")
}

View File

@@ -199,7 +199,7 @@ func (g *GithubClient) CreateComment(repo models.Repo, pullNum int, comment stri
}
// ReactToComment adds a reaction to a comment.
func (g *GithubClient) ReactToComment(repo models.Repo, pullNum int, commentID int64, reaction string) error {
func (g *GithubClient) ReactToComment(repo models.Repo, _ int, commentID int64, reaction string) error {
_, resp, err := g.client.Reactions.CreateIssueCommentReaction(g.ctx, repo.Owner, repo.Name, commentID, reaction)
g.logger.Debug("POST /repos/%v/%v/issues/comments/%d/reactions returned: %v", repo.Owner, repo.Name, commentID, resp.StatusCode)
return err
@@ -446,14 +446,11 @@ func (g *GithubClient) GetCombinedStatusMinusApply(repo models.Repo, pull *githu
if isRequiredCheck(*r.Name, required.RequiredStatusChecks.Contexts) {
if *c.Conclusion == "success" {
continue
} else {
return false, nil
}
} else {
//ignore checks that arent required
continue
return false, nil
}
//ignore checks that arent required
continue
}
}
}
@@ -588,7 +585,7 @@ func (g *GithubClient) UpdateStatus(repo models.Repo, pull models.PullRequest, s
}
// MergePull merges the pull request.
func (g *GithubClient) MergePull(pull models.PullRequest, pullOptions models.PullRequestOptions) error {
func (g *GithubClient) MergePull(pull models.PullRequest, _ models.PullRequestOptions) error {
// Users can set their repo to disallow certain types of merging.
// We detect which types aren't allowed and use the type that is.
repo, resp, err := g.client.Repositories.Get(g.ctx, pull.BaseRepo.Owner, pull.BaseRepo.Name)
@@ -721,11 +718,11 @@ func (g *GithubClient) GetFileContent(pull models.PullRequest, fileName string)
return true, decodedData, nil
}
func (g *GithubClient) SupportsSingleFileDownload(repo models.Repo) bool {
func (g *GithubClient) SupportsSingleFileDownload(_ models.Repo) bool {
return true
}
func (g *GithubClient) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (g *GithubClient) GetCloneURL(_ models.VCSHostType, repo string) (string, error) {
parts := strings.Split(repo, "/")
repository, resp, err := g.client.Repositories.Get(g.ctx, parts[0], parts[1])
g.logger.Debug("GET /repos/%v/%v returned: %v", parts[0], parts[1], resp.StatusCode)

View File

@@ -171,14 +171,14 @@ func (g *GitlabClient) GetModifiedFiles(repo models.Repo, pull models.PullReques
}
// CreateComment creates a comment on the merge request.
func (g *GitlabClient) CreateComment(repo models.Repo, pullNum int, comment string, command string) error {
func (g *GitlabClient) CreateComment(repo models.Repo, pullNum int, comment string, _ string) error {
sepEnd := "\n```\n</details>" +
"\n<br>\n\n**Warning**: Output length greater than max comment size. Continued in next comment."
sepStart := "Continued from previous comment.\n<details><summary>Show Output</summary>\n\n" +
"```diff\n"
comments := common.SplitComment(comment, gitlabMaxCommentLength, sepEnd, sepStart)
for _, c := range comments {
_, resp, err := g.Client.Notes.CreateMergeRequestNote(repo.FullName, pullNum, &gitlab.CreateMergeRequestNoteOptions{Body: gitlab.String(c)})
_, resp, err := g.Client.Notes.CreateMergeRequestNote(repo.FullName, pullNum, &gitlab.CreateMergeRequestNoteOptions{Body: gitlab.Ptr(c)})
g.logger.Debug("POST /projects/%s/merge_requests/%d/notes returned: %d", repo.FullName, pullNum, resp.StatusCode)
if err != nil {
return err
@@ -202,8 +202,8 @@ func (g *GitlabClient) HidePrevCommandComments(repo models.Repo, pullNum int, co
g.logger.Debug("/projects/%v/merge_requests/%d/notes", repo.FullName, pullNum)
comments, resp, err := g.Client.Notes.ListMergeRequestNotes(repo.FullName, pullNum,
&gitlab.ListMergeRequestNotesOptions{
Sort: gitlab.String("asc"),
OrderBy: gitlab.String("created_at"),
Sort: gitlab.Ptr("asc"),
OrderBy: gitlab.Ptr("created_at"),
ListOptions: gitlab.ListOptions{Page: nextPage},
})
g.logger.Debug("GET /projects/%s/merge_requests/%d/notes returned: %d", repo.FullName, pullNum, resp.StatusCode)
@@ -329,6 +329,7 @@ func (g *GitlabClient) PullIsMergeable(repo models.Repo, pull models.PullRequest
}
if ((ok && (mr.DetailedMergeStatus == "mergeable" || mr.DetailedMergeStatus == "ci_still_running")) ||
//nolint:staticcheck // SA1019 this check ensures compatibility with older gitlab versions
(!ok && mr.MergeStatus == "can_be_merged")) &&
mr.ApprovalsBeforeMerge <= 0 &&
mr.BlockingDiscussionsResolved &&
@@ -398,10 +399,10 @@ func (g *GitlabClient) UpdateStatus(repo models.Repo, pull models.PullRequest, s
_, resp, err := g.Client.Commits.SetCommitStatus(repo.FullName, pull.HeadCommit, &gitlab.SetCommitStatusOptions{
State: gitlabState,
Context: gitlab.String(src),
Description: gitlab.String(description),
Context: gitlab.Ptr(src),
Description: gitlab.Ptr(description),
TargetURL: &url,
Ref: gitlab.String(refTarget),
Ref: gitlab.Ptr(refTarget),
})
g.logger.Debug("POST /projects/%s/statuses/%s returned: %d", repo.FullName, pull.HeadCommit, resp.StatusCode)
return err
@@ -471,7 +472,7 @@ func (g *GitlabClient) MarkdownPullLink(pull models.PullRequest) (string, error)
return fmt.Sprintf("!%d", pull.Num), nil
}
func (g *GitlabClient) DiscardReviews(repo models.Repo, pull models.PullRequest) error {
func (g *GitlabClient) DiscardReviews(_ models.Repo, _ models.PullRequest) error {
// TODO implement
return nil
}
@@ -516,7 +517,7 @@ func MustConstraint(constraint string) version.Constraints {
}
// GetTeamNamesForUser returns the names of the teams or groups that the user belongs to (in the organization the repository belongs to).
func (g *GitlabClient) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) {
func (g *GitlabClient) GetTeamNamesForUser(_ models.Repo, _ models.User) ([]string, error) {
return nil, nil
}
@@ -524,7 +525,7 @@ func (g *GitlabClient) GetTeamNamesForUser(repo models.Repo, user models.User) (
// The first return value indicates whether the repo contains a file or not
// if BaseRepo had a file, its content will placed on the second return value
func (g *GitlabClient) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) {
opt := gitlab.GetRawFileOptions{Ref: gitlab.String(pull.HeadBranch)}
opt := gitlab.GetRawFileOptions{Ref: gitlab.Ptr(pull.HeadBranch)}
bytes, resp, err := g.Client.RepositoryFiles.GetRawFile(pull.BaseRepo.FullName, fileName, &opt)
g.logger.Debug("GET /projects/%s/repository/files/%s/raw returned: %d", pull.BaseRepo.FullName, fileName, resp.StatusCode)
@@ -539,11 +540,11 @@ func (g *GitlabClient) GetFileContent(pull models.PullRequest, fileName string)
return true, bytes, nil
}
func (g *GitlabClient) SupportsSingleFileDownload(repo models.Repo) bool {
func (g *GitlabClient) SupportsSingleFileDownload(_ models.Repo) bool {
return true
}
func (g *GitlabClient) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (g *GitlabClient) GetCloneURL(_ models.VCSHostType, repo string) (string, error) {
project, resp, err := g.Client.Projects.GetProject(repo, nil)
g.logger.Debug("GET /projects/%s returned: %d", repo, resp.StatusCode)
if err != nil {

View File

@@ -125,7 +125,7 @@ func TestGitlabClient_GetModifiedFiles(t *testing.T) {
switch r.RequestURI {
case "/api/v4/projects/lkysow%2Fatlantis-example/merge_requests/8312/changes?page=1&per_page=100":
w.WriteHeader(200)
numAttempts += 1
numAttempts++
if numAttempts < c.attempts {
w.Write([]byte(changesPending)) // nolint: errcheck
t.Logf("returning changesPending for attempt %d", numAttempts)
@@ -332,7 +332,7 @@ func TestGitlabClient_PullIsMergeable(t *testing.T) {
statusName string
status models.CommitStatus
gitlabVersion []string
mrId int
mrID int
expState bool
}{
{
@@ -442,7 +442,8 @@ func TestGitlabClient_PullIsMergeable(t *testing.T) {
Version string
}
v := version{Version: serverVersion}
json.NewEncoder(w).Encode(v)
err := json.NewEncoder(w).Encode(v)
Ok(t, err)
default:
t.Errorf("got unexpected request at %q", r.RequestURI)
http.Error(w, "not found", http.StatusNotFound)
@@ -468,7 +469,7 @@ func TestGitlabClient_PullIsMergeable(t *testing.T) {
}
mergeable, err := client.PullIsMergeable(repo, models.PullRequest{
Num: c.mrId,
Num: c.mrID,
BaseRepo: repo,
HeadCommit: "67cb91d3f6198189f433c045154a885784ba6977",
}, vcsStatusName)
@@ -554,7 +555,8 @@ func TestGitlabClient_HideOldComments(t *testing.T) {
case strings.HasPrefix(r.RequestURI, fmt.Sprintf("/api/v4/projects/runatlantis%%2Fatlantis/merge_requests/%d/notes/", pullNum)):
w.WriteHeader(http.StatusOK)
var body jsonBody
json.NewDecoder(r.Body).Decode(&body)
err := json.NewDecoder(r.Body).Decode(&body)
Ok(t, err)
notePutCallDetail := notePutCallDetails{
noteID: path.Base(r.RequestURI),
comment: strings.Split(body.Body, "\n"),

View File

@@ -26,54 +26,54 @@ type NotConfiguredVCSClient struct {
Host models.VCSHostType
}
func (a *NotConfiguredVCSClient) GetModifiedFiles(repo models.Repo, pull models.PullRequest) ([]string, error) {
func (a *NotConfiguredVCSClient) GetModifiedFiles(_ models.Repo, _ models.PullRequest) ([]string, error) {
return nil, a.err()
}
func (a *NotConfiguredVCSClient) CreateComment(repo models.Repo, pullNum int, comment string, command string) error {
func (a *NotConfiguredVCSClient) CreateComment(_ models.Repo, _ int, _ string, _ string) error {
return a.err()
}
func (a *NotConfiguredVCSClient) HidePrevCommandComments(repo models.Repo, pullNum int, command string) error {
func (a *NotConfiguredVCSClient) HidePrevCommandComments(_ models.Repo, _ int, _ string) error {
return nil
}
func (a *NotConfiguredVCSClient) ReactToComment(repo models.Repo, pullNum int, commentID int64, reaction string) error { // nolint: revive
return nil
}
func (a *NotConfiguredVCSClient) PullIsApproved(repo models.Repo, pull models.PullRequest) (models.ApprovalStatus, error) {
func (a *NotConfiguredVCSClient) PullIsApproved(_ models.Repo, _ models.PullRequest) (models.ApprovalStatus, error) {
return models.ApprovalStatus{}, a.err()
}
func (a *NotConfiguredVCSClient) DiscardReviews(repo models.Repo, pull models.PullRequest) error {
func (a *NotConfiguredVCSClient) DiscardReviews(_ models.Repo, _ models.PullRequest) error {
return nil
}
func (a *NotConfiguredVCSClient) PullIsMergeable(repo models.Repo, pull models.PullRequest, vcsstatusname string) (bool, error) {
func (a *NotConfiguredVCSClient) PullIsMergeable(_ models.Repo, _ models.PullRequest, _ string) (bool, error) {
return false, a.err()
}
func (a *NotConfiguredVCSClient) UpdateStatus(repo models.Repo, pull models.PullRequest, state models.CommitStatus, src string, description string, url string) error {
func (a *NotConfiguredVCSClient) UpdateStatus(_ models.Repo, _ models.PullRequest, _ models.CommitStatus, _ string, _ string, _ string) error {
return a.err()
}
func (a *NotConfiguredVCSClient) MergePull(pull models.PullRequest, pullOptions models.PullRequestOptions) error {
func (a *NotConfiguredVCSClient) MergePull(_ models.PullRequest, _ models.PullRequestOptions) error {
return a.err()
}
func (a *NotConfiguredVCSClient) MarkdownPullLink(pull models.PullRequest) (string, error) {
func (a *NotConfiguredVCSClient) MarkdownPullLink(_ models.PullRequest) (string, error) {
return "", a.err()
}
func (a *NotConfiguredVCSClient) err() error {
return fmt.Errorf("atlantis was not configured to support repos from %s", a.Host.String())
}
func (a *NotConfiguredVCSClient) GetTeamNamesForUser(repo models.Repo, user models.User) ([]string, error) {
func (a *NotConfiguredVCSClient) GetTeamNamesForUser(_ models.Repo, _ models.User) ([]string, error) {
return nil, a.err()
}
func (a *NotConfiguredVCSClient) SupportsSingleFileDownload(repo models.Repo) bool {
func (a *NotConfiguredVCSClient) SupportsSingleFileDownload(_ models.Repo) bool {
return false
}
func (a *NotConfiguredVCSClient) GetFileContent(pull models.PullRequest, fileName string) (bool, []byte, error) {
func (a *NotConfiguredVCSClient) GetFileContent(_ models.PullRequest, _ string) (bool, []byte, error) {
return true, []byte{}, a.err()
}
func (a *NotConfiguredVCSClient) GetCloneURL(VCSHostType models.VCSHostType, repo string) (string, error) {
func (a *NotConfiguredVCSClient) GetCloneURL(_ models.VCSHostType, _ string) (string, error) {
return "", a.err()
}
func (a *NotConfiguredVCSClient) GetPullLabels(repo models.Repo, pull models.PullRequest) ([]string, error) {
func (a *NotConfiguredVCSClient) GetPullLabels(_ models.Repo, _ models.PullRequest) ([]string, error) {
return nil, a.err()
}

View File

@@ -43,7 +43,7 @@ func NewSlack(wr *regexp.Regexp, br *regexp.Regexp, channel string, client Slack
}
// Send sends the webhook to Slack if workspace and branch matches their respective regex.
func (s *SlackWebhook) Send(log logging.SimpleLogging, applyResult ApplyResult) error {
func (s *SlackWebhook) Send(_ logging.SimpleLogging, applyResult ApplyResult) error {
if !s.WorkspaceRegex.MatchString(applyResult.Workspace) || !s.BranchRegex.MatchString(applyResult.Pull.BaseBranch) {
return nil
}

View File

@@ -132,10 +132,9 @@ func (w *FileWorkspace) Clone(
if w.CheckForUpstreamChanges && w.CheckoutMerge && w.recheckDiverged(p, headRepo, cloneDir) {
w.Logger.Info("base branch has been updated, using merge strategy and will clone again")
return cloneDir, true, w.mergeAgain(c)
} else {
w.Logger.Debug("repo is at correct commit %q so will not re-clone", p.HeadCommit)
return cloneDir, false, nil
}
w.Logger.Debug("repo is at correct commit %q so will not re-clone", p.HeadCommit)
return cloneDir, false, nil
} else {
w.Logger.Debug("repo was already cloned but is not at correct commit, wanted %q got %q", p.HeadCommit, currCommit)
}

View File

@@ -3,13 +3,14 @@ package events_test
import (
"crypto/tls"
"fmt"
"github.com/stretchr/testify/assert"
"net/http"
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/runatlantis/atlantis/server/events"
"github.com/runatlantis/atlantis/server/events/models"
"github.com/runatlantis/atlantis/server/logging"

View File

@@ -267,21 +267,22 @@ func (p *AsyncProjectCommandOutputHandler) CleanUp(pullInfo PullInfo) {
// NoopProjectOutputHandler is a mock that doesn't do anything
type NoopProjectOutputHandler struct{}
func (p *NoopProjectOutputHandler) Send(ctx command.ProjectContext, msg string, isOperationComplete bool) {
func (p *NoopProjectOutputHandler) Send(_ command.ProjectContext, _ string, _ bool) {
}
func (p *NoopProjectOutputHandler) SendWorkflowHook(ctx models.WorkflowHookCommandContext, msg string, operationComplete bool) {
func (p *NoopProjectOutputHandler) SendWorkflowHook(_ models.WorkflowHookCommandContext, _ string, _ bool) {
}
func (p *NoopProjectOutputHandler) Register(jobID string, receiver chan string) {}
func (p *NoopProjectOutputHandler) Deregister(jobID string, receiver chan string) {}
func (p *NoopProjectOutputHandler) Register(_ string, _ chan string) {}
func (p *NoopProjectOutputHandler) Deregister(_ string, _ chan string) {}
func (p *NoopProjectOutputHandler) Handle() {
}
func (p *NoopProjectOutputHandler) CleanUp(pullInfo PullInfo) {
func (p *NoopProjectOutputHandler) CleanUp(_ PullInfo) {
}
func (p *NoopProjectOutputHandler) IsKeyExists(key string) bool {
func (p *NoopProjectOutputHandler) IsKeyExists(_ string) bool {
return false
}

View File

@@ -191,7 +191,7 @@ func TestProjectCommandOutputHandler(t *testing.T) {
// read from channel
go func() {
for range ch {
for range ch { //revive:disable-line:empty-block
}
}()
@@ -225,7 +225,7 @@ func TestProjectCommandOutputHandler(t *testing.T) {
// read from channel
go func() {
for range ch {
for range ch { //revive:disable-line:empty-block
}
}()
@@ -240,7 +240,7 @@ func TestProjectCommandOutputHandler(t *testing.T) {
// buffer channel will be closed immediately after logs are streamed
go func() {
for range ch2 {
for range ch2 { //revive:disable-line:empty-block
}
opComplete <- true
}()

View File

@@ -1005,7 +1005,8 @@ func (s *Server) Start() error {
s.Logger.Err(err.Error())
}
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second) // nolint: vet
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := server.Shutdown(ctx); err != nil {
return fmt.Errorf("while shutting down: %s", err)
}