Merge pull request #14726 from spowelljr/fixSHAChecks

Check SHAs of new archs
pull/14782/head
Steven Powell 2022-08-10 16:19:48 -07:00 committed by GitHub
commit b2430b7256
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 59 additions and 21 deletions

View File

@ -21,7 +21,6 @@ import (
"encoding/hex"
"fmt"
"io"
"runtime"
"testing"
retryablehttp "github.com/hashicorp/go-retryablehttp"
@ -47,46 +46,85 @@ func getSHAFromURL(url string) (string, error) {
// TestReleasesJSON checks if all *GA* releases
//
// enlisted in https://storage.googleapis.com/minikube/releases.json
// enlisted in https://storage.googleapis.com/minikube/releases-v2.json
// are available to download and have correct hashsum
func TestReleasesJSON(t *testing.T) {
releases, err := notify.AllVersionsFromURL(notify.GithubMinikubeReleasesURL)
if err != nil {
t.Fatalf("Error getting releases.json: %v", err)
}
checkReleases(t, releases)
checkReleasesV2(t, releases)
}
// TestBetaReleasesJSON checks if all *BETA* releases
//
// enlisted in https://storage.googleapis.com/minikube/releases-beta.json
// enlisted in https://storage.googleapis.com/minikube/releases-beta-v2.json
// are available to download and have correct hashsum
func TestBetaReleasesJSON(t *testing.T) {
releases, err := notify.AllVersionsFromURL(notify.GithubMinikubeBetaReleasesURL)
if err != nil {
t.Fatalf("Error getting releases-bets.json: %v", err)
}
checkReleases(t, releases)
checkReleasesV2(t, releases)
}
func checkReleases(t *testing.T, rs notify.Releases) {
func checkReleasesV1(t *testing.T, r notify.Release) {
checksums := map[string]string{
"darwin": r.Checksums.Darwin,
"linux": r.Checksums.Linux,
"windows": r.Checksums.Windows,
}
for platform, sha := range checksums {
fmt.Printf("Checking SHA for %s.\n", platform)
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, "amd64"))
if err != nil {
t.Errorf("Error calculating SHA for %s-%s. Error: %v", r.Name, platform, err)
continue
}
if actualSha != sha {
t.Errorf("ERROR: SHA does not match for version %s, platform %s. Expected %s, got %s.", r.Name, platform, sha, actualSha)
continue
}
}
}
func getSHAMap(r notify.Release) map[string]map[string]string {
c := r.Checksums
return map[string]map[string]string{
"darwin": {
"amd64": c.AMD64.Darwin,
"arm64": c.ARM64.Darwin,
},
"linux": {
"amd64": c.AMD64.Linux,
"arm": c.ARM.Linux,
"arm64": c.ARM64.Linux,
"ppc64le": c.PPC64LE.Linux,
"s390x": c.S390X.Linux,
},
"windows": {
"amd64": c.AMD64.Windows,
},
}
}
func checkReleasesV2(t *testing.T, rs notify.Releases) {
for _, r := range rs.Releases {
fmt.Printf("Checking release: %s\n", r.Name)
checksums := map[string]string{
"darwin": r.Checksums.Darwin,
"linux": r.Checksums.Linux,
"windows": r.Checksums.Windows,
}
for platform, sha := range checksums {
fmt.Printf("Checking SHA for %s.\n", platform)
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, runtime.GOARCH))
if err != nil {
t.Errorf("Error calculating SHA for %s-%s. Error: %v", r.Name, platform, err)
continue
}
if actualSha != sha {
t.Errorf("ERROR: SHA does not match for version %s, platform %s. Expected %s, got %s.", r.Name, platform, sha, actualSha)
continue
checkReleasesV1(t, r)
release := getSHAMap(r)
for os, archs := range release {
for arch, sha := range archs {
fmt.Printf("Checking SHA for %s-%s.\n", os, arch)
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, os, arch))
if err != nil {
t.Errorf("Error calculating SHA for %s-%s-%s. Error: %v", r.Name, os, arch, err)
continue
}
if actualSha != sha {
t.Errorf("ERROR: SHA does not match for version %s, os %s, arch %s. Expected %s, got %s.", r.Name, os, arch, sha, actualSha)
continue
}
}
}
}