Skip to content

Commit 67795fc

Browse files
committed
add a test for returning modules in provision_test.go, fix test in resources_test.go
1 parent b178718 commit 67795fc

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)),
@@ -703,6 +717,45 @@ func TestProvision(t *testing.T) {
703717
}},
704718
},
705719
},
720+
{
721+
Name: "returns-modules",
722+
Files: map[string]string{
723+
"main.tf": `module "hello" {
724+
source = "./module"
725+
}`,
726+
"module/module.tf": `
727+
resource "null_resource" "example" {}
728+
729+
module "there" {
730+
source = "./inner_module"
731+
}
732+
`,
733+
"module/inner_module/inner_module.tf": `
734+
resource "null_resource" "inner_example" {}
735+
`,
736+
},
737+
Request: &proto.PlanRequest{},
738+
Response: &proto.PlanComplete{
739+
Resources: []*proto.Resource{{
740+
Name: "example",
741+
Type: "null_resource",
742+
ModulePath: "module.hello",
743+
}, {
744+
Name: "inner_example",
745+
Type: "null_resource",
746+
ModulePath: "module.hello.module.there",
747+
}},
748+
Modules: []*proto.Module{{
749+
Key: "hello",
750+
Version: "",
751+
Source: "./module",
752+
}, {
753+
Key: "hello.there",
754+
Version: "",
755+
Source: "./inner_module",
756+
}},
757+
},
758+
},
706759
}
707760

708761
for _, testCase := range testCases {
@@ -753,7 +806,7 @@ func TestProvision(t *testing.T) {
753806
if testCase.Response != nil {
754807
require.Equal(t, testCase.Response.Error, planComplete.Error)
755808

756-
// Remove randomly generated data.
809+
// Remove randomly generated data and sort by name.
757810
normalizeResources(planComplete.Resources)
758811
resourcesGot, err := json.Marshal(planComplete.Resources)
759812
require.NoError(t, err)
@@ -766,6 +819,12 @@ func TestProvision(t *testing.T) {
766819
parametersWant, err := json.Marshal(testCase.Response.Parameters)
767820
require.NoError(t, err)
768821
require.Equal(t, string(parametersWant), string(parametersGot))
822+
823+
modulesGot, err := json.Marshal(planComplete.Modules)
824+
require.NoError(t, err)
825+
modulesWant, err := json.Marshal(testCase.Response.Modules)
826+
require.NoError(t, err)
827+
require.Equal(t, string(modulesWant), string(modulesGot))
769828
}
770829

771830
if testCase.Apply {
@@ -806,6 +865,9 @@ func normalizeResources(resources []*proto.Resource) {
806865
agent.Auth = &proto.Agent_Token{}
807866
}
808867
}
868+
sort.Slice(resources, func(i, j int) bool {
869+
return resources[i].Name < resources[j].Name
870+
})
809871
}
810872

811873
// 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)