From 502877dbf781f15a5dc6bc94834a85017b5e9f23 Mon Sep 17 00:00:00 2001 From: Emre Duzgun <100037959+eduzgun@users.noreply.github.com> Date: Tue, 18 Jun 2024 15:49:30 +0100 Subject: [PATCH] initwd Windows tests fixes (#1723) Signed-off-by: eduzgun Signed-off-by: Emre Duzgun <100037959+eduzgun@users.noreply.github.com> --- internal/configs/config_build.go | 7 +++---- internal/initwd/from_module_test.go | 6 ++++++ internal/initwd/module_install_test.go | 6 +++--- internal/modsdir/manifest.go | 2 ++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/internal/configs/config_build.go b/internal/configs/config_build.go index 27f7a8d6d9..37a0ac76f6 100644 --- a/internal/configs/config_build.go +++ b/internal/configs/config_build.go @@ -7,7 +7,7 @@ package configs import ( "fmt" - "path" + "path/filepath" "sort" "strings" @@ -64,8 +64,8 @@ func buildTestModules(root *Config, walker ModuleWalker) hcl.Diagnostics { // - file: main.tftest.hcl, run: setup - test.main.setup // - file: tests/main.tftest.hcl, run: setup - test.tests.main.setup - dir := path.Dir(name) - base := path.Base(name) + dir := filepath.Dir(name) + base := filepath.Base(name) path := addrs.Module{} path = append(path, "test") @@ -73,7 +73,6 @@ func buildTestModules(root *Config, walker ModuleWalker) hcl.Diagnostics { path = append(path, strings.Split(dir, "/")...) } path = append(path, strings.TrimSuffix(base, ".tftest.hcl"), run.Name) - req := ModuleRequest{ Name: run.Name, Path: path, diff --git a/internal/initwd/from_module_test.go b/internal/initwd/from_module_test.go index 388480590a..ec1121cfed 100644 --- a/internal/initwd/from_module_test.go +++ b/internal/initwd/from_module_test.go @@ -9,6 +9,7 @@ import ( "context" "os" "path/filepath" + "runtime" "strings" "testing" @@ -281,6 +282,11 @@ func TestDirFromModule_rel_submodules(t *testing.T) { } t.Cleanup(func() { os.Chdir(oldDir) + // Trigger garbage collection to ensure that all open file handles are closed. + // This prevents TempDir RemoveAll cleanup errors on Windows. + if runtime.GOOS == "windows" { + runtime.GC() + } }) hooks := &testInstallHooks{} diff --git a/internal/initwd/module_install_test.go b/internal/initwd/module_install_test.go index 2deecac4b6..5c2b6c5ee3 100644 --- a/internal/initwd/module_install_test.go +++ b/internal/initwd/module_install_test.go @@ -61,7 +61,7 @@ func TestModuleInstaller(t *testing.T) { Name: "Install", ModuleAddr: "child_a.child_b", PackageAddr: "", - LocalPath: "child_a/child_b", + LocalPath: filepath.Join("child_a", "child_b"), }, } @@ -393,7 +393,7 @@ func TestModuleInstaller_symlink(t *testing.T) { Name: "Install", ModuleAddr: "child_a.child_b", PackageAddr: "", - LocalPath: "child_a/child_b", + LocalPath: filepath.Join("child_a", "child_b"), }, } @@ -764,7 +764,7 @@ func TestModuleInstaller_fromTests(t *testing.T) { config, loadDiags := loader.LoadConfigWithTests(".", "tests") assertNoDiagnostics(t, tfdiags.Diagnostics{}.Append(loadDiags)) - if config.Module.Tests["tests/main.tftest.hcl"].Runs[0].ConfigUnderTest == nil { + if config.Module.Tests[filepath.Join("tests", "main.tftest.hcl")].Runs[0].ConfigUnderTest == nil { t.Fatalf("should have loaded config into the relevant run block but did not") } } diff --git a/internal/modsdir/manifest.go b/internal/modsdir/manifest.go index 3360e4acc3..28f319f8c2 100644 --- a/internal/modsdir/manifest.go +++ b/internal/modsdir/manifest.go @@ -180,5 +180,7 @@ func (m Manifest) WriteSnapshotToDir(dir string) error { if err != nil { return err } + defer w.Close() + return m.WriteSnapshot(w) }