marcin.suterski
7 years ago
3 changed files with 176 additions and 2 deletions
@ -0,0 +1,133 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"os/exec" |
||||
|
"reflect" |
||||
|
"testing" |
||||
|
) |
||||
|
|
||||
|
func Test_destroyCommand(t *testing.T) { |
||||
|
type args struct { |
||||
|
config Config |
||||
|
} |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
args args |
||||
|
want *exec.Cmd |
||||
|
}{ |
||||
|
{ |
||||
|
"default", |
||||
|
args{config: Config{}}, |
||||
|
exec.Command("terraform", "destroy", "-force"), |
||||
|
}, |
||||
|
{ |
||||
|
"with targets", |
||||
|
args{config: Config{Targets: []string{"target1", "target2"}}}, |
||||
|
exec.Command("terraform", "destroy", "-target=target1", "-target=target2", "-force"), |
||||
|
}, |
||||
|
{ |
||||
|
"with parallelism", |
||||
|
args{config: Config{Parallelism: 5}}, |
||||
|
exec.Command("terraform", "destroy", "-parallelism=5", "-force"), |
||||
|
}, |
||||
|
} |
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if got := destroyCommand(tt.args.config); !reflect.DeepEqual(got, tt.want) { |
||||
|
t.Errorf("destroyCommand() = %v, want %v", got, tt.want) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func Test_applyCommand(t *testing.T) { |
||||
|
type args struct { |
||||
|
config Config |
||||
|
} |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
args args |
||||
|
want *exec.Cmd |
||||
|
}{ |
||||
|
{ |
||||
|
"default", |
||||
|
args{config: Config{}}, |
||||
|
exec.Command("terraform", "apply", "plan.tfout"), |
||||
|
}, |
||||
|
{ |
||||
|
"with targets", |
||||
|
args{config: Config{Targets: []string{"target1", "target2"}}}, |
||||
|
exec.Command("terraform", "apply", "--target", "target1", "--target", "target2", "plan.tfout"), |
||||
|
}, |
||||
|
{ |
||||
|
"with parallelism", |
||||
|
args{config: Config{Parallelism: 5}}, |
||||
|
exec.Command("terraform", "apply", "-parallelism=5", "plan.tfout"), |
||||
|
}, |
||||
|
} |
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if got := applyCommand(tt.args.config); !reflect.DeepEqual(got, tt.want) { |
||||
|
t.Errorf("applyCommand() = %v, want %v", got, tt.want) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func Test_terraformCommand(t *testing.T) { |
||||
|
type args struct { |
||||
|
config Config |
||||
|
} |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
args args |
||||
|
want *exec.Cmd |
||||
|
}{ |
||||
|
{ |
||||
|
"default", |
||||
|
args{config: Config{}}, |
||||
|
exec.Command("terraform", "apply", "plan.tfout"), |
||||
|
}, |
||||
|
{ |
||||
|
"destroy", |
||||
|
args{config: Config{Destroy: true}}, |
||||
|
exec.Command("terraform", "destroy", "-force"), |
||||
|
}, |
||||
|
} |
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if got := terraformCommand(tt.args.config); !reflect.DeepEqual(got, tt.want) { |
||||
|
t.Errorf("terraformCommand() = %v, want %v", got, tt.want) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func Test_planCommand(t *testing.T) { |
||||
|
type args struct { |
||||
|
config Config |
||||
|
} |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
args args |
||||
|
want *exec.Cmd |
||||
|
}{ |
||||
|
{ |
||||
|
"default", |
||||
|
args{config: Config{}}, |
||||
|
exec.Command("terraform", "plan", "-out=plan.tfout"), |
||||
|
}, |
||||
|
{ |
||||
|
"destroy", |
||||
|
args{config: Config{Destroy: true}}, |
||||
|
exec.Command("terraform", "plan", "-destroy"), |
||||
|
}, |
||||
|
} |
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if got := planCommand(tt.args.config); !reflect.DeepEqual(got, tt.want) { |
||||
|
t.Errorf("planCommand() = %v, want %v", got, tt.want) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue