Skip to content

Commit d406ef6

Browse files
committed
add a test for returning modules in provision_test.go, fix test in resources_test.go
1 parent 80a2f22 commit d406ef6

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy