diff --git a/server/events/project_finder_test.go b/server/events/project_finder_test.go index 5a0d0304d0..f6e95a3df5 100644 --- a/server/events/project_finder_test.go +++ b/server/events/project_finder_test.go @@ -276,10 +276,7 @@ func TestDefaultProjectFinder_DetermineProjectsViaConfig(t *testing.T) { Projects: []valid.Project{ { Dir: ".", - Autoplan: valid.Autoplan{ - Enabled: false, - WhenModified: []string{"**/*.tf"}, - }, + Autoplan: DefaultValidAutoplan().SetEnabled(false), }, }, }, @@ -292,10 +289,7 @@ func TestDefaultProjectFinder_DetermineProjectsViaConfig(t *testing.T) { Projects: []valid.Project{ { Dir: ".", - Autoplan: valid.Autoplan{ - Enabled: true, - WhenModified: []string{"**/*.tf"}, - }, + Autoplan: DefaultValidAutoplan(), }, }, }, @@ -308,10 +302,7 @@ func TestDefaultProjectFinder_DetermineProjectsViaConfig(t *testing.T) { Projects: []valid.Project{ { Dir: "project", - Autoplan: valid.Autoplan{ - Enabled: true, - WhenModified: []string{"**/*.tf"}, - }, + Autoplan: DefaultValidAutoplan(), }, }, }, diff --git a/server/events/yaml/parser_validator_test.go b/server/events/yaml/parser_validator_test.go index ae332636f9..33265aea8a 100644 --- a/server/events/yaml/parser_validator_test.go +++ b/server/events/yaml/parser_validator_test.go @@ -205,10 +205,7 @@ projects: Workspace: "default", WorkflowName: nil, TerraformVersion: nil, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), ApplyRequirements: nil, }, }, @@ -220,6 +217,24 @@ projects: input: ` version: 3 projects: +- dir: "."`, + exp: valid.RepoCfg{ + Version: 3, + Projects: []valid.Project{ + { + Dir: ".", + Workspace: "default", + Autoplan: DefaultValidAutoplan(), + }, + }, + Workflows: make(map[string]valid.Workflow), + }, + }, + { + description: "autoplan should be enabled by default if custom when_modified", + input: ` +version: 3 +projects: - dir: "." autoplan: when_modified: ["**/*.tf*"] @@ -252,10 +267,7 @@ projects: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: make(map[string]valid.Workflow), @@ -275,10 +287,7 @@ workflows: ~ { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: make(map[string]valid.Workflow), @@ -303,10 +312,7 @@ workflows: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{ @@ -338,10 +344,7 @@ workflows: Workspace: "myworkspace", WorkflowName: String("myworkflow"), TerraformVersion: tfVersion, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), ApplyRequirements: []string{"approved"}, }, }, @@ -355,7 +358,7 @@ workflows: }, }, { - description: "project field with autoplan", + description: "project field with autoplan disabled", input: ` version: 3 projects: @@ -376,10 +379,7 @@ workflows: Workspace: "myworkspace", WorkflowName: String("myworkflow"), TerraformVersion: tfVersion, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: false, - }, + Autoplan: DefaultValidAutoplan().SetEnabled(false), ApplyRequirements: []string{"approved"}, }, }, @@ -414,10 +414,7 @@ workflows: Workspace: "myworkspace", WorkflowName: String("myworkflow"), TerraformVersion: tfVersion, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: false, - }, + Autoplan: DefaultValidAutoplan().SetEnabled(false), ApplyRequirements: []string{"mergeable"}, }, }, @@ -452,10 +449,7 @@ workflows: Workspace: "myworkspace", WorkflowName: String("myworkflow"), TerraformVersion: tfVersion, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: false, - }, + Autoplan: DefaultValidAutoplan().SetEnabled(false), ApplyRequirements: []string{"mergeable", "approved"}, }, }, @@ -566,19 +560,13 @@ projects: Name: String("myname"), Dir: ".", Workspace: "workspace", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, { Name: String("myname2"), Dir: ".", Workspace: "workspace", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{}, @@ -607,10 +595,7 @@ workflows: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{ @@ -669,10 +654,7 @@ workflows: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{ @@ -727,10 +709,7 @@ workflows: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{ @@ -781,10 +760,7 @@ workflows: { Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, Workflows: map[string]valid.Workflow{ diff --git a/server/events/yaml/raw/autoplan_test.go b/server/events/yaml/raw/autoplan_test.go index 66744340df..165082a147 100644 --- a/server/events/yaml/raw/autoplan_test.go +++ b/server/events/yaml/raw/autoplan_test.go @@ -107,10 +107,7 @@ func TestAutoplan_ToValid(t *testing.T) { { description: "nothing set", input: raw.Autoplan{}, - exp: valid.Autoplan{ - Enabled: true, - WhenModified: []string{"**/*.tf*", "**/terragrunt.hcl"}, - }, + exp: DefaultValidAutoplan(), }, { description: "when modified empty", @@ -127,20 +124,14 @@ func TestAutoplan_ToValid(t *testing.T) { input: raw.Autoplan{ Enabled: Bool(false), }, - exp: valid.Autoplan{ - Enabled: false, - WhenModified: []string{"**/*.tf*", "**/terragrunt.hcl"}, - }, + exp: DefaultValidAutoplan().SetEnabled(false), }, { description: "enabled true", input: raw.Autoplan{ Enabled: Bool(true), }, - exp: valid.Autoplan{ - Enabled: true, - WhenModified: []string{"**/*.tf*", "**/terragrunt.hcl"}, - }, + exp: DefaultValidAutoplan(), }, } for _, c := range cases { diff --git a/server/events/yaml/raw/project_test.go b/server/events/yaml/raw/project_test.go index 8da75c01f4..605094925a 100644 --- a/server/events/yaml/raw/project_test.go +++ b/server/events/yaml/raw/project_test.go @@ -230,10 +230,7 @@ func TestProject_ToValid(t *testing.T) { Workspace: "default", WorkflowName: nil, TerraformVersion: nil, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), ApplyRequirements: nil, Name: nil, }, @@ -275,10 +272,7 @@ func TestProject_ToValid(t *testing.T) { Dir: ".", Workspace: "default", TerraformVersion: tfVersionPointEleven, - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, { @@ -289,10 +283,7 @@ func TestProject_ToValid(t *testing.T) { exp: valid.Project{ Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, { @@ -303,10 +294,7 @@ func TestProject_ToValid(t *testing.T) { exp: valid.Project{ Dir: "mydir", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, { @@ -318,10 +306,7 @@ func TestProject_ToValid(t *testing.T) { exp: valid.Project{ Dir: "mydir", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, { @@ -333,10 +318,7 @@ func TestProject_ToValid(t *testing.T) { exp: valid.Project{ Dir: ".", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, } @@ -346,3 +328,6 @@ func TestProject_ToValid(t *testing.T) { }) } } + + + diff --git a/server/events/yaml/raw/repo_cfg_test.go b/server/events/yaml/raw/repo_cfg_test.go index 5d3da46d86..98f1426338 100644 --- a/server/events/yaml/raw/repo_cfg_test.go +++ b/server/events/yaml/raw/repo_cfg_test.go @@ -354,10 +354,7 @@ func TestConfig_ToValid(t *testing.T) { { Dir: "mydir", Workspace: "default", - Autoplan: valid.Autoplan{ - WhenModified: []string{"**/*.tf*"}, - Enabled: true, - }, + Autoplan: DefaultValidAutoplan(), }, }, }, diff --git a/server/events/yaml/valid/repo_cfg.go b/server/events/yaml/valid/repo_cfg.go index 8fa20aebaf..3aff7bfc57 100644 --- a/server/events/yaml/valid/repo_cfg.go +++ b/server/events/yaml/valid/repo_cfg.go @@ -67,6 +67,11 @@ type Autoplan struct { Enabled bool } +func (a Autoplan) SetEnabled(enabled bool) Autoplan { + a.Enabled = enabled + return a +} + type Stage struct { Steps []Step } diff --git a/testing/default_structs.go b/testing/default_structs.go new file mode 100644 index 0000000000..7a6747d8c5 --- /dev/null +++ b/testing/default_structs.go @@ -0,0 +1,11 @@ +package testing + +import "github.com/runatlantis/atlantis/server/events/yaml/valid" + +// Helper function to return a frequently repeated valid Autoplan struct. +func DefaultValidAutoplan() valid.Autoplan { + return valid.Autoplan{ + WhenModified: []string{"**/*.tf*", "**/terragrunt.hcl"}, + Enabled: true, + } +}