2
2
3
3
f=$1
4
4
success=true
5
+ exitCode=0
5
6
6
7
f=$( echo $f | xargs echo -n)
8
+ f=" ${f%/ } "
7
9
8
- exitCode=0
9
10
echo " "
10
11
echo " ====> 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
+
11
46
terraform -chdir=$f init -upgrade > /dev/null
12
47
if [[ $? -ne 0 ]]; then
13
48
success=false
@@ -17,7 +52,7 @@ if [[ $? -ne 0 ]]; then
17
52
else
18
53
echo " "
19
54
echo " ----> Plan Testing"
20
- terraform -chdir=$f plan > /dev/null
55
+ terraform -chdir=$f plan $varfile > /dev/null
21
56
if [[ $? -ne 0 ]]; then
22
57
success=false
23
58
exitCode=2
27
62
echo -e " \033[32m - plan check: success\033[0m"
28
63
echo " "
29
64
echo " ----> Apply Testing"
30
- terraform -chdir=$f apply -auto-approve > /dev/null
65
+ terraform -chdir=$f apply -auto-approve $varfile > /dev/null
31
66
if [[ $? -ne 0 ]]; then
32
67
success=false
33
68
exitCode=3
37
72
echo -e " \033[32m - apply check: success\033[0m"
38
73
echo " "
39
74
echo -e " ----> Apply Diff Checking\n"
40
- terraform -chdir=$f plan -detailed-exitcode
75
+ terraform -chdir=$f plan $varfile -detailed-exitcode
41
76
if [[ $? -ne 0 ]]; then
42
77
success=false
43
78
exitCode=4
53
88
fi
54
89
echo " "
55
90
echo " ----> Destroying"
56
- terraform -chdir=$f destroy -auto-approve > /dev/null
91
+ terraform -chdir=$f destroy $varfile -auto-approve > /dev/null
57
92
if [[ $? -ne 0 ]]; then
58
93
success=false
59
94
if [[ $exitCode -eq 0 ]]; then
@@ -66,14 +101,31 @@ else
66
101
fi
67
102
fi
68
103
69
- if [[ $success == " true" ]]; then
70
- bash scripts/generate-test-record.sh $f
71
- fi
72
-
73
104
rm -rf $f /.terraform
74
105
rm -rf $f /.terraform.lock.hcl
75
106
fi
76
107
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
77
129
echo -e " \n"
78
130
79
131
exit $exitCode
0 commit comments