22
33f=$1
44success=true
5+ exitCode=0
56
67f=$( echo $f | xargs echo -n)
8+ f=" ${f%/ } "
79
8- exitCode=0
910echo " "
1011echo " ====> Terraform testing in" $f
12+
13+ # set up prerequisite resources
14+ varfile=" "
15+ if [ -d " $f /prepare" ]; then
16+ echo " "
17+ echo " ====> Found prepare directory. Creating prerequisite resources in $f /prepare"
18+ terraform -chdir=$f /prepare init -upgrade > /dev/null
19+ if [[ $? -ne 0 ]]; then
20+ success=false
21+ exitCode=1
22+ echo -e " \033[31m[ERROR]\033[0m: running terraform init in prepare directory failed."
23+ bash scripts/generate-test-record.sh $f " Prepare Init: running terraform init in prepare directory failed."
24+ else
25+ terraform -chdir=$f /prepare apply -auto-approve > /dev/null
26+ if [[ $? -ne 0 ]]; then
27+ success=false
28+ exitCode=3
29+ echo -e " \033[31m[ERROR]\033[0m: running terraform apply in prepare directory failed."
30+ bash scripts/generate-test-record.sh $f " Prepare Apply: running terraform apply in prepare directory failed."
31+ terraform -chdir=$f /prepare destroy -auto-approve > /dev/null
32+ else
33+ echo -e " \033[32m - prepare apply: success\033[0m"
34+ terraform -chdir=$f /prepare output > $f /prepare/terraform.tfvars
35+ varfile=" -var-file=./prepare/terraform.tfvars"
36+ fi
37+ fi
38+ fi
39+ if [[ $success == " false" ]]; then
40+ rm -rf $f /prepare/.terraform
41+ rm -rf $f /prepare/.terraform.lock.hcl
42+ exit $exitCode
43+ fi
44+
45+
1146terraform -chdir=$f init -upgrade > /dev/null
1247if [[ $? -ne 0 ]]; then
1348 success=false
@@ -17,7 +52,7 @@ if [[ $? -ne 0 ]]; then
1752else
1853 echo " "
1954 echo " ----> Plan Testing"
20- terraform -chdir=$f plan > /dev/null
55+ terraform -chdir=$f plan $varfile > /dev/null
2156 if [[ $? -ne 0 ]]; then
2257 success=false
2358 exitCode=2
2762 echo -e " \033[32m - plan check: success\033[0m"
2863 echo " "
2964 echo " ----> Apply Testing"
30- terraform -chdir=$f apply -auto-approve > /dev/null
65+ terraform -chdir=$f apply -auto-approve $varfile > /dev/null
3166 if [[ $? -ne 0 ]]; then
3267 success=false
3368 exitCode=3
3772 echo -e " \033[32m - apply check: success\033[0m"
3873 echo " "
3974 echo -e " ----> Apply Diff Checking\n"
40- terraform -chdir=$f plan -detailed-exitcode
75+ terraform -chdir=$f plan $varfile -detailed-exitcode
4176 if [[ $? -ne 0 ]]; then
4277 success=false
4378 exitCode=4
5388 fi
5489 echo " "
5590 echo " ----> Destroying"
56- terraform -chdir=$f destroy -auto-approve > /dev/null
91+ terraform -chdir=$f destroy $varfile -auto-approve > /dev/null
5792 if [[ $? -ne 0 ]]; then
5893 success=false
5994 if [[ $exitCode -eq 0 ]]; then
@@ -66,14 +101,31 @@ else
66101 fi
67102 fi
68103
69- if [[ $success == " true" ]]; then
70- bash scripts/generate-test-record.sh $f
71- fi
72-
73104 rm -rf $f /.terraform
74105 rm -rf $f /.terraform.lock.hcl
75106fi
76107
108+ # destroy prerequisite resources
109+ if [ -d " $f /prepare" ]; then
110+ echo " "
111+ echo " ====> Destroying prerequisite resources in $f /prepare"
112+ terraform -chdir=$f /prepare destroy -auto-approve > /dev/null
113+ if [[ $? -ne 0 ]]; then
114+ success=false
115+ exitCode=5
116+ echo -e " \033[31m[ERROR]\033[0m: running terraform destroy in prepare directory failed."
117+ bash scripts/generate-test-record.sh $f " Prepare Destroy: running terraform destroy in prepare directory failed."
118+ else
119+ echo -e " \033[32m - prepare destroy: success\033[0m"
120+ fi
121+ rm -rf $f /prepare/.terraform
122+ rm -rf $f /prepare/.terraform.lock.hcl
123+ fi
124+
125+
126+ if [[ $success == " true" ]]; then
127+ bash scripts/generate-test-record.sh $f
128+ fi
77129echo -e " \n"
78130
79131exit $exitCode
0 commit comments