diff --git a/command/init_test.go b/command/init_test.go index a44054665..86a5466f9 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -1710,7 +1710,7 @@ func newMockProviderSource(t *testing.T, availableProviderVersions map[string][] close() t.Fatalf("failed to parse %q as a version number for %q: %s", versionStr, addr.ForDisplay(), err) } - meta, close, err := getproviders.FakeInstallablePackageMeta(addr, version, getproviders.VersionList{getproviders.MustParseVersion("5.0")}, getproviders.CurrentPlatform) + meta, close, err := getproviders.FakeInstallablePackageMeta(addr, version, getproviders.VersionList{getproviders.MustParseVersion("5.0")}, getproviders.CurrentPlatform, "") if err != nil { close() t.Fatalf("failed to prepare fake package for %s %s: %s", addr.ForDisplay(), versionStr, err) @@ -1770,7 +1770,7 @@ func installFakeProviderPackagesElsewhere(t *testing.T, cacheDir *providercache. if err != nil { t.Fatalf("failed to parse %q as a version number for %q: %s", versionStr, name, err) } - meta, close, err := getproviders.FakeInstallablePackageMeta(addr, version, getproviders.VersionList{getproviders.MustParseVersion("5.0")}, getproviders.CurrentPlatform) + meta, close, err := getproviders.FakeInstallablePackageMeta(addr, version, getproviders.VersionList{getproviders.MustParseVersion("5.0")}, getproviders.CurrentPlatform, "") // We're going to install all these fake packages before we return, // so we don't need to preserve them afterwards. defer close() diff --git a/internal/getproviders/mock_source.go b/internal/getproviders/mock_source.go index f85abfd4a..9390ac95b 100644 --- a/internal/getproviders/mock_source.go +++ b/internal/getproviders/mock_source.go @@ -143,13 +143,15 @@ func FakePackageMeta(provider addrs.Provider, version Version, protocols Version // to a temporary archive file that could actually be installed in principle. // // Installing it will not produce a working provider though: just a fake file -// posing as an executable. +// posing as an executable. The filename for the executable defaults to the +// standard terraform-provider-NAME_X.Y.Z format, but can be overridden with +// the execFilename argument. // // It's the caller's responsibility to call the close callback returned // alongside the result in order to clean up the temporary file. The caller // should call the callback even if this function returns an error, because // some error conditions leave a partially-created file on disk. -func FakeInstallablePackageMeta(provider addrs.Provider, version Version, protocols VersionList, target Platform) (PackageMeta, func(), error) { +func FakeInstallablePackageMeta(provider addrs.Provider, version Version, protocols VersionList, target Platform, execFilename string) (PackageMeta, func(), error) { f, err := ioutil.TempFile("", "terraform-getproviders-fake-package-") if err != nil { return PackageMeta{}, func() {}, err @@ -162,10 +164,12 @@ func FakeInstallablePackageMeta(provider addrs.Provider, version Version, protoc os.Remove(f.Name()) } - execFilename := fmt.Sprintf("terraform-provider-%s_%s", provider.Type, version.String()) - if target.OS == "windows" { - // For a little more (technically unnecessary) realism... - execFilename += ".exe" + if execFilename == "" { + execFilename = fmt.Sprintf("terraform-provider-%s_%s", provider.Type, version.String()) + if target.OS == "windows" { + // For a little more (technically unnecessary) realism... + execFilename += ".exe" + } } zw := zip.NewWriter(f)