From 1761c81bb375fb33c1bcaa5dc3862b60f4e8c6f4 Mon Sep 17 00:00:00 2001 From: Kevin Vu Date: Thu, 6 Nov 2025 06:52:33 -0800 Subject: [PATCH] fix: include providers from test files in lock command Fixes #37841 --- .changes/v1.15/BUG FIXES-20251106-065000.yaml | 5 +++++ internal/command/providers_lock.go | 2 +- internal/command/providers_lock_test.go | 17 +++++++++++++++++ .../test/1.0.0/os_arch/terraform-provider-test | 0 .../testdata/providers-lock/with-tests/main.tf | 7 +++++++ .../providers-lock/with-tests/main.tftest.hcl | 9 +++++++++ 6 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .changes/v1.15/BUG FIXES-20251106-065000.yaml create mode 100644 internal/command/testdata/providers-lock/with-tests/fs-mirror/registry.terraform.io/hashicorp/test/1.0.0/os_arch/terraform-provider-test create mode 100644 internal/command/testdata/providers-lock/with-tests/main.tf create mode 100644 internal/command/testdata/providers-lock/with-tests/main.tftest.hcl diff --git a/.changes/v1.15/BUG FIXES-20251106-065000.yaml b/.changes/v1.15/BUG FIXES-20251106-065000.yaml new file mode 100644 index 000000000000..5e178fd4150a --- /dev/null +++ b/.changes/v1.15/BUG FIXES-20251106-065000.yaml @@ -0,0 +1,5 @@ +kind: BUG FIXES +body: 'command: terraform providers lock now includes providers required by test files' +time: 2025-11-06T06:50:00.000000Z +custom: + Issue: "37841" diff --git a/internal/command/providers_lock.go b/internal/command/providers_lock.go index 970a92881b38..4062ecd8f871 100644 --- a/internal/command/providers_lock.go +++ b/internal/command/providers_lock.go @@ -123,7 +123,7 @@ func (c *ProvidersLockCommand) Run(args []string) int { source = getproviders.NewRegistrySource(c.Services) } - config, confDiags := c.loadConfig(".") + config, confDiags := c.loadConfigWithTests(".", "tests") diags = diags.Append(confDiags) reqs, hclDiags := config.ProviderRequirements() diags = diags.Append(hclDiags) diff --git a/internal/command/providers_lock_test.go b/internal/command/providers_lock_test.go index 6e2ace31db74..2ba5ecee415e 100644 --- a/internal/command/providers_lock_test.go +++ b/internal/command/providers_lock_test.go @@ -66,6 +66,23 @@ provider "registry.terraform.io/hashicorp/test" { "h1:invalid", ] } +` + runProviderLockGenericTest(t, testDirectory, expected) + }) + + // This test ensures that providers required by test modules are included + // in the lock file. This is a regression test for issue #37841. + t.Run("with-tests", func(t *testing.T) { + testDirectory := "providers-lock/with-tests" + expected := `# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/test" { + version = "1.0.0" + hashes = [ + "h1:7MjN4eFisdTv4tlhXH5hL4QQd39Jy4baPhFxwAd/EFE=", + ] +} ` runProviderLockGenericTest(t, testDirectory, expected) }) diff --git a/internal/command/testdata/providers-lock/with-tests/fs-mirror/registry.terraform.io/hashicorp/test/1.0.0/os_arch/terraform-provider-test b/internal/command/testdata/providers-lock/with-tests/fs-mirror/registry.terraform.io/hashicorp/test/1.0.0/os_arch/terraform-provider-test new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/internal/command/testdata/providers-lock/with-tests/main.tf b/internal/command/testdata/providers-lock/with-tests/main.tf new file mode 100644 index 000000000000..d3de379059f4 --- /dev/null +++ b/internal/command/testdata/providers-lock/with-tests/main.tf @@ -0,0 +1,7 @@ +terraform { + required_providers { + test = { + source = "hashicorp/test" + } + } +} diff --git a/internal/command/testdata/providers-lock/with-tests/main.tftest.hcl b/internal/command/testdata/providers-lock/with-tests/main.tftest.hcl new file mode 100644 index 000000000000..ed600b2bba4c --- /dev/null +++ b/internal/command/testdata/providers-lock/with-tests/main.tftest.hcl @@ -0,0 +1,9 @@ +provider "test" { + alias = "runner" +} + +run "test_run" { + providers = { + test = test.runner + } +}