mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-25 01:00:16 -05:00
Ignore existing package hashes for providers lock command (#31389)
* Ignore existing package hashes for command * missing new line * Fix incorrect logic when deciding change message * fix imports
This commit is contained in:
@@ -1364,6 +1364,120 @@ func TestEnsureProviderVersions(t *testing.T) {
|
||||
}
|
||||
},
|
||||
},
|
||||
"force mode ignores hashes": {
|
||||
Source: getproviders.NewMockSource(
|
||||
[]getproviders.PackageMeta{
|
||||
{
|
||||
Provider: beepProvider,
|
||||
Version: getproviders.MustParseVersion("1.0.0"),
|
||||
TargetPlatform: fakePlatform,
|
||||
Location: beepProviderDir,
|
||||
},
|
||||
},
|
||||
nil,
|
||||
),
|
||||
LockFile: `
|
||||
provider "example.com/foo/beep" {
|
||||
version = "1.0.0"
|
||||
constraints = ">= 1.0.0"
|
||||
hashes = [
|
||||
"h1:does-not-match",
|
||||
]
|
||||
}
|
||||
`,
|
||||
Mode: InstallNewProvidersForce,
|
||||
Reqs: getproviders.Requirements{
|
||||
beepProvider: getproviders.MustParseVersionConstraints(">= 1.0.0"),
|
||||
},
|
||||
Check: func(t *testing.T, dir *Dir, locks *depsfile.Locks) {
|
||||
if allCached := dir.AllAvailablePackages(); len(allCached) != 1 {
|
||||
t.Errorf("wrong number of cache directory entries; want only one\n%s", spew.Sdump(allCached))
|
||||
}
|
||||
if allLocked := locks.AllProviders(); len(allLocked) != 1 {
|
||||
t.Errorf("wrong number of provider lock entries; want only one\n%s", spew.Sdump(allLocked))
|
||||
}
|
||||
|
||||
gotLock := locks.Provider(beepProvider)
|
||||
wantLock := depsfile.NewProviderLock(
|
||||
beepProvider,
|
||||
getproviders.MustParseVersion("1.0.0"),
|
||||
getproviders.MustParseVersionConstraints(">= 1.0.0"),
|
||||
[]getproviders.Hash{beepProviderHash, "h1:does-not-match"},
|
||||
)
|
||||
if diff := cmp.Diff(wantLock, gotLock, depsfile.ProviderLockComparer); diff != "" {
|
||||
t.Errorf("wrong lock entry\n%s", diff)
|
||||
}
|
||||
|
||||
gotEntry := dir.ProviderLatestVersion(beepProvider)
|
||||
wantEntry := &CachedProvider{
|
||||
Provider: beepProvider,
|
||||
Version: getproviders.MustParseVersion("1.0.0"),
|
||||
PackageDir: filepath.Join(dir.BasePath(), "example.com/foo/beep/1.0.0/bleep_bloop"),
|
||||
}
|
||||
if diff := cmp.Diff(wantEntry, gotEntry); diff != "" {
|
||||
t.Errorf("wrong cache entry\n%s", diff)
|
||||
}
|
||||
},
|
||||
WantEvents: func(inst *Installer, dir *Dir) map[addrs.Provider][]*testInstallerEventLogItem {
|
||||
return map[addrs.Provider][]*testInstallerEventLogItem{
|
||||
noProvider: {
|
||||
{
|
||||
Event: "PendingProviders",
|
||||
Args: map[addrs.Provider]getproviders.VersionConstraints{
|
||||
beepProvider: getproviders.MustParseVersionConstraints(">= 1.0.0"),
|
||||
},
|
||||
},
|
||||
{
|
||||
Event: "ProvidersFetched",
|
||||
Args: map[addrs.Provider]*getproviders.PackageAuthenticationResult{
|
||||
beepProvider: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
beepProvider: {
|
||||
{
|
||||
Event: "QueryPackagesBegin",
|
||||
Provider: beepProvider,
|
||||
Args: struct {
|
||||
Constraints string
|
||||
Locked bool
|
||||
}{">= 1.0.0", true},
|
||||
},
|
||||
{
|
||||
Event: "QueryPackagesSuccess",
|
||||
Provider: beepProvider,
|
||||
Args: "1.0.0",
|
||||
},
|
||||
{
|
||||
Event: "FetchPackageMeta",
|
||||
Provider: beepProvider,
|
||||
Args: "1.0.0",
|
||||
},
|
||||
{
|
||||
Event: "FetchPackageBegin",
|
||||
Provider: beepProvider,
|
||||
Args: struct {
|
||||
Version string
|
||||
Location getproviders.PackageLocation
|
||||
}{"1.0.0", beepProviderDir},
|
||||
},
|
||||
{
|
||||
Event: "FetchPackageSuccess",
|
||||
Provider: beepProvider,
|
||||
Args: struct {
|
||||
Version string
|
||||
LocalDir string
|
||||
AuthResult string
|
||||
}{
|
||||
"1.0.0",
|
||||
filepath.Join(dir.BasePath(), "example.com/foo/beep/1.0.0/bleep_bloop"),
|
||||
"unauthenticated",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
Reference in New Issue
Block a user