mirror of
https://git.vectorsigma.ru/public/atlantis.git
synced 2026-07-28 23:08:26 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
╵
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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---",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -119,7 +119,7 @@ func NewProjectCommandBuilder(
|
||||
IncludeGitUntrackedFiles bool,
|
||||
AutoDiscoverMode string,
|
||||
scope tally.Scope,
|
||||
logger logging.SimpleLogging,
|
||||
_ logging.SimpleLogging,
|
||||
terraformClient terraform.Client,
|
||||
) *DefaultProjectCommandBuilder {
|
||||
return &DefaultProjectCommandBuilder{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user