Skip to content

Commit b0d9fb6

Browse files
committed
add a test for returning modules in provision_test.go, fix test in resources_test.go
1 parent 2128047 commit b0d9fb6

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

provisioner/terraform/provision_test.go

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,21 @@ func makeTar(t *testing.T, files map[string]string) []byte {
8282
t.Helper()
8383
var buffer bytes.Buffer
8484
writer := tar.NewWriter(&buffer)
85+
86+
addedDirs := make(map[string]bool)
8587
for name, content := range files {
88+
// Add parent directories if they don't exist
89+
dir := filepath.Dir(name)
90+
if dir != "." && !addedDirs[dir] {
91+
err := writer.WriteHeader(&tar.Header{
92+
Name: dir + "/", // Directory names must end with /
93+
Mode: 0o755,
94+
Typeflag: tar.TypeDir,
95+
})
96+
require.NoError(t, err)
97+
addedDirs[dir] = true
98+
}
99+
86100
err := writer.WriteHeader(&tar.Header{
87101
Name: name,
88102
Size: int64(len(content)),
@@ -745,6 +759,45 @@ func TestProvision(t *testing.T) {
745759
}},
746760
},
747761
},
762+
{
763+
Name: "returns-modules",
764+
Files: map[string]string{
765+
"main.tf": `module "hello" {
766+
source = "./module"
767+
}`,
768+
"module/module.tf": `
769+
resource "null_resource" "example" {}
770+
771+
module "there" {
772+
source = "./inner_module"
773+
}
774+
`,
775+
"module/inner_module/inner_module.tf": `
776+
resource "null_resource" "inner_example" {}
777+
`,
778+
},
779+
Request: &proto.PlanRequest{},
780+
Response: &proto.PlanComplete{
781+
Resources: []*proto.Resource{{
782+
Name: "example",
783+
Type: "null_resource",
784+
ModulePath: "module.hello",
785+
}, {
786+
Name: "inner_example",
787+
Type: "null_resource",
788+
ModulePath: "module.hello.module.there",
789+
}},
790+
Modules: []*proto.Module{{
791+
Key: "hello",
792+
Version: "",
793+
Source: "./module",
794+
}, {
795+
Key: "hello.there",
796+
Version: "",
797+
Source: "./inner_module",
798+
}},
799+
},
800+
},
748801
}
749802

750803
for _, testCase := range testCases {
@@ -799,7 +852,7 @@ func TestProvision(t *testing.T) {
799852
if testCase.Response != nil {
800853
require.Equal(t, testCase.Response.Error, planComplete.Error)
801854

802-
// Remove randomly generated data.
855+
// Remove randomly generated data and sort by name.
803856
normalizeResources(planComplete.Resources)
804857
resourcesGot, err := json.Marshal(planComplete.Resources)
805858
require.NoError(t, err)
@@ -812,6 +865,12 @@ func TestProvision(t *testing.T) {
812865
parametersWant, err := json.Marshal(testCase.Response.Parameters)
813866
require.NoError(t, err)
814867
require.Equal(t, string(parametersWant), string(parametersGot))
868+
869+
modulesGot, err := json.Marshal(planComplete.Modules)
870+
require.NoError(t, err)
871+
modulesWant, err := json.Marshal(testCase.Response.Modules)
872+
require.NoError(t, err)
873+
require.Equal(t, string(modulesWant), string(modulesGot))
815874
}
816875

817876
if testCase.Apply {
@@ -852,6 +911,9 @@ func normalizeResources(resources []*proto.Resource) {
852911
agent.Auth = &proto.Agent_Token{}
853912
}
854913
}
914+
sort.Slice(resources, func(i, j int) bool {
915+
return resources[i].Name < resources[j].Name
916+
})
855917
}
856918

857919
// nolint:paralleltest

provisioner/terraform/resources_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ func TestConvertResources(t *testing.T) {
109109
ConnectionTimeoutSeconds: 120,
110110
DisplayApps: &displayApps,
111111
}},
112+
ModulePath: "module.module",
112113
}},
113114
},
114115
// Ensures the attachment of multiple agents to a single

0 commit comments

Comments
 (0)