@@ -43,7 +43,7 @@ func TestUnitTemplateResource(t *testing.T) {
43
43
IsGitlabEnterprise : true ,
44
44
TerraformVersion : "0.12.24" ,
45
45
TerragruntVersion : "0.35.1" ,
46
- TerragruntTfBinary : "opentofu " ,
46
+ TerragruntTfBinary : "terraform " ,
47
47
}
48
48
gleeUpdatedTemplate := client.Template {
49
49
Id : gleeTemplate .Id ,
@@ -67,6 +67,7 @@ func TestUnitTemplateResource(t *testing.T) {
67
67
IsGitlabEnterprise : true ,
68
68
TerraformVersion : "0.15.1" ,
69
69
IsTerragruntRunAll : true ,
70
+ TerragruntTfBinary : "terraform" ,
70
71
}
71
72
gitlabTemplate := client.Template {
72
73
Id : "id0-gitlab" ,
@@ -108,11 +109,12 @@ func TestUnitTemplateResource(t *testing.T) {
108
109
ErrorRegex : "NewForDestroy.*" ,
109
110
},
110
111
},
111
- Type : "terragrunt" ,
112
- TerragruntVersion : "0.26.1" ,
113
- TokenId : "2" ,
114
- TerraformVersion : "0.15.1" ,
115
- TokenName : "token_name2" ,
112
+ Type : "terragrunt" ,
113
+ TerragruntVersion : "0.26.1" ,
114
+ TokenId : "2" ,
115
+ TerraformVersion : "0.15.1" ,
116
+ TokenName : "token_name2" ,
117
+ TerragruntTfBinary : "terraform" ,
116
118
}
117
119
githubTemplate := client.Template {
118
120
Id : "id0" ,
@@ -157,6 +159,7 @@ func TestUnitTemplateResource(t *testing.T) {
157
159
GithubInstallationId : 2 ,
158
160
TerraformVersion : "0.15.1" ,
159
161
IsTerragruntRunAll : true ,
162
+ TerragruntTfBinary : "terraform" ,
160
163
}
161
164
bitbucketTemplate := client.Template {
162
165
Id : "id0" ,
@@ -200,6 +203,7 @@ func TestUnitTemplateResource(t *testing.T) {
200
203
BitbucketClientKey : "clientkey2" ,
201
204
TerragruntVersion : "0.35.1" ,
202
205
TerraformVersion : "0.15.1" ,
206
+ TerragruntTfBinary : "terraform" ,
203
207
}
204
208
gheeTemplate := client.Template {
205
209
Id : "id0" ,
@@ -366,11 +370,12 @@ func TestUnitTemplateResource(t *testing.T) {
366
370
ErrorRegex : "NewForDestroy.*" ,
367
371
},
368
372
},
369
- Type : "terragrunt" ,
370
- TerragruntVersion : "0.26.1" ,
371
- TokenId : "2" ,
372
- TerraformVersion : "0.15.1" ,
373
- IsAzureDevOps : true ,
373
+ Type : "terragrunt" ,
374
+ TerragruntVersion : "0.26.1" ,
375
+ TokenId : "2" ,
376
+ TerraformVersion : "0.15.1" ,
377
+ TerragruntTfBinary : "terraform" ,
378
+ IsAzureDevOps : true ,
374
379
}
375
380
376
381
helmTemplate := client.Template {
@@ -594,6 +599,10 @@ func TestUnitTemplateResource(t *testing.T) {
594
599
templateAsDictionary ["ansible_version" ] = template .AnsibleVersion
595
600
}
596
601
602
+ if template .TerragruntTfBinary != "" {
603
+ templateAsDictionary ["terragrunt_tf_binary" ] = template .TerragruntTfBinary
604
+ }
605
+
597
606
return resourceConfigCreate (resourceType , resourceName , templateAsDictionary )
598
607
}
599
608
fullTemplateResourceCheck := func (resourceFullName string , template client.Template ) resource.TestCheckFunc {
@@ -729,31 +738,34 @@ func TestUnitTemplateResource(t *testing.T) {
729
738
GithubInstallationId : templateUseCase .updatedTemplate .GithubInstallationId ,
730
739
IsGitlabEnterprise : templateUseCase .updatedTemplate .IsGitlabEnterprise ,
731
740
IsGitlab : templateUseCase .updatedTemplate .IsGitlab ,
732
-
733
- TokenId : templateUseCase .updatedTemplate .TokenId ,
734
- Path : templateUseCase .updatedTemplate .Path ,
735
- Revision : templateUseCase .updatedTemplate .Revision ,
736
- Type : templateUseCase .updatedTemplate .Type ,
737
- Retry : templateUseCase .updatedTemplate .Retry ,
738
- TerraformVersion : templateUseCase .updatedTemplate .TerraformVersion ,
739
- BitbucketClientKey : templateUseCase .updatedTemplate .BitbucketClientKey ,
740
- IsGithubEnterprise : templateUseCase .updatedTemplate .IsGithubEnterprise ,
741
- IsBitbucketServer : templateUseCase .updatedTemplate .IsBitbucketServer ,
742
- FileName : templateUseCase .updatedTemplate .FileName ,
743
- TerragruntVersion : templateUseCase .updatedTemplate .TerragruntVersion ,
744
- IsTerragruntRunAll : templateUseCase .updatedTemplate .IsTerragruntRunAll ,
745
- IsAzureDevOps : templateUseCase .updatedTemplate .IsAzureDevOps ,
746
- IsHelmRepository : templateUseCase .updatedTemplate .IsHelmRepository ,
747
- HelmChartName : templateUseCase .updatedTemplate .HelmChartName ,
748
- OpentofuVersion : templateUseCase .updatedTemplate .OpentofuVersion ,
749
- TokenName : templateUseCase .updatedTemplate .TokenName ,
750
- AnsibleVersion : templateUseCase .updatedTemplate .AnsibleVersion ,
741
+ TokenId : templateUseCase .updatedTemplate .TokenId ,
742
+ Path : templateUseCase .updatedTemplate .Path ,
743
+ Revision : templateUseCase .updatedTemplate .Revision ,
744
+ Type : templateUseCase .updatedTemplate .Type ,
745
+ Retry : templateUseCase .updatedTemplate .Retry ,
746
+ TerraformVersion : templateUseCase .updatedTemplate .TerraformVersion ,
747
+ BitbucketClientKey : templateUseCase .updatedTemplate .BitbucketClientKey ,
748
+ IsGithubEnterprise : templateUseCase .updatedTemplate .IsGithubEnterprise ,
749
+ IsBitbucketServer : templateUseCase .updatedTemplate .IsBitbucketServer ,
750
+ FileName : templateUseCase .updatedTemplate .FileName ,
751
+ TerragruntVersion : templateUseCase .updatedTemplate .TerragruntVersion ,
752
+ IsTerragruntRunAll : templateUseCase .updatedTemplate .IsTerragruntRunAll ,
753
+ IsAzureDevOps : templateUseCase .updatedTemplate .IsAzureDevOps ,
754
+ IsHelmRepository : templateUseCase .updatedTemplate .IsHelmRepository ,
755
+ HelmChartName : templateUseCase .updatedTemplate .HelmChartName ,
756
+ OpentofuVersion : templateUseCase .updatedTemplate .OpentofuVersion ,
757
+ TokenName : templateUseCase .updatedTemplate .TokenName ,
758
+ AnsibleVersion : templateUseCase .updatedTemplate .AnsibleVersion ,
751
759
}
752
760
753
761
if templateUseCase .template .Type == "terragrunt" {
754
762
templateCreatePayload .TerragruntTfBinary = templateUseCase .template .TerragruntTfBinary
755
763
}
756
764
765
+ if templateUseCase .updatedTemplate .Type == "terragrunt" {
766
+ updateTemplateCreateTemplate .TerragruntTfBinary = templateUseCase .updatedTemplate .TerragruntTfBinary
767
+ }
768
+
757
769
if templateUseCase .template .Type != "terraform" && templateUseCase .template .Type != "terragrunt" {
758
770
templateCreatePayload .TerraformVersion = ""
759
771
updateTemplateCreateTemplate .TerraformVersion = ""
@@ -1366,6 +1378,7 @@ func TestUnitTemplateResource(t *testing.T) {
1366
1378
"type" : "terragrunt" ,
1367
1379
"terraform_version" : "0.15.1" ,
1368
1380
"terragrunt_version" : "0.27.50" ,
1381
+ "terragrunt_tf_binary" : "terraform" ,
1369
1382
"is_terragrunt_run_all" : "true" ,
1370
1383
}),
1371
1384
ExpectError : regexp .MustCompile (`can't set is_terragrunt_run_all to 'true' for terragrunt versions lower than 0.28.1` ),
@@ -1387,7 +1400,46 @@ func TestUnitTemplateResource(t *testing.T) {
1387
1400
"terraform_version" : "0.15.1" ,
1388
1401
"terragrunt_tf_binary" : "opentofu" ,
1389
1402
}),
1390
- ExpectError : regexp .MustCompile (`terragrunt_tf_binary should only be used when the template type is 'terragrunt', but type is 'terraform'` ),
1403
+ ExpectError : regexp .MustCompile (`can't define terragrunt_tf_binary for non-terragrunt template` ),
1404
+ },
1405
+ },
1406
+ }
1407
+
1408
+ runUnitTest (t , testCase , func (mock * client.MockApiClientInterface ) {})
1409
+ })
1410
+
1411
+ t .Run ("run with terragrunt without an opentofu version" , func (t * testing.T ) {
1412
+ testCase := resource.TestCase {
1413
+ Steps : []resource.TestStep {
1414
+ {
1415
+ Config : resourceConfigCreate (resourceType , resourceName , map [string ]interface {}{
1416
+ "name" : "template0" ,
1417
+ "repository" : "env0/repo" ,
1418
+ "type" : "terragrunt" ,
1419
+ "terragrunt_version" : "0.56.50" ,
1420
+ "is_terragrunt_run_all" : "true" ,
1421
+ }),
1422
+ ExpectError : regexp .MustCompile ("must supply opentofu version" ),
1423
+ },
1424
+ },
1425
+ }
1426
+
1427
+ runUnitTest (t , testCase , func (mock * client.MockApiClientInterface ) {})
1428
+ })
1429
+
1430
+ t .Run ("run terragrunt with terraform binary and no terraform version" , func (t * testing.T ) {
1431
+ testCase := resource.TestCase {
1432
+ Steps : []resource.TestStep {
1433
+ {
1434
+ Config : resourceConfigCreate (resourceType , resourceName , map [string ]interface {}{
1435
+ "name" : "template0" ,
1436
+ "repository" : "env0/repo" ,
1437
+ "type" : "terragrunt" ,
1438
+ "terragrunt_version" : "0.56.50" ,
1439
+ "is_terragrunt_run_all" : "true" ,
1440
+ "terragrunt_tf_binary" : "terraform" ,
1441
+ }),
1442
+ ExpectError : regexp .MustCompile ("must supply terraform version" ),
1391
1443
},
1392
1444
},
1393
1445
}
0 commit comments