mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 19:35:29 +08:00
216 lines
8.2 KiB
Go
216 lines
8.2 KiB
Go
package main
|
|
|
|
import (
|
|
"sort"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type m struct {
|
|
input string
|
|
output []string
|
|
env map[string]string
|
|
}
|
|
|
|
var targzMapping = map[string]m{
|
|
"ENT: Darwin AMD64": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_darwin_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.darwin-amd64.tar.gz",
|
|
},
|
|
},
|
|
"ENT: Darwin AMD64 SHA256": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_darwin_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.darwin-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT: AMD64 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-amd64-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-amd64.tar.gz",
|
|
},
|
|
},
|
|
"ENT: AMD64 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-amd64-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT: ARM64 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-arm64-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-arm64.tar.gz",
|
|
},
|
|
},
|
|
"ENT: ARM64 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-arm64-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-arm64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT: ARM6": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-6.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv6.tar.gz",
|
|
},
|
|
},
|
|
"ENT: ARM6 SHA256": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-6.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv6.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT: ARM7 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv7-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv7.tar.gz",
|
|
},
|
|
},
|
|
"ENT: ARM7 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv7-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.linux-armv7.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT: Windows AMD64": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_windows_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.windows-amd64.tar.gz",
|
|
},
|
|
},
|
|
"ENT: Windows AMD64 SHA256": {
|
|
input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_windows_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.windows-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: ARM6": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-6.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv6.tar.gz",
|
|
},
|
|
},
|
|
"OSS: ARM6 SHA256": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-6.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv6.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: ARM7 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv7-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv7.tar.gz",
|
|
},
|
|
},
|
|
"OSS: ARM7 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv7-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-armv7.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: Windows AMD64": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_windows_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.windows-amd64.tar.gz",
|
|
},
|
|
},
|
|
"OSS: Windows AMD64 SHA256": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_windows_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.windows-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: Darwin AMD64": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_darwin_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.darwin-amd64.tar.gz",
|
|
},
|
|
},
|
|
"OSS: Darwin AMD64 SHA256": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_darwin_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.darwin-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: Linux AMD64 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-amd64-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-amd64.tar.gz",
|
|
},
|
|
},
|
|
"OSS: Linux AMD64 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-amd64-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"OSS: Linux ARM64 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-arm64-musl.tar.gz",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-arm64.tar.gz",
|
|
},
|
|
},
|
|
"OSS: Linux ARM64 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-arm64-musl.tar.gz.sha256",
|
|
"artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.linux-arm64.tar.gz.sha256",
|
|
},
|
|
},
|
|
"ENT2: Linux AMD64 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.tar.gz",
|
|
output: []string{
|
|
"artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3-pre.4.linux-amd64-musl.tar.gz",
|
|
"artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3-pre.4.linux-amd64.tar.gz",
|
|
},
|
|
},
|
|
"ENT2: Linux AMD64 SHA256 with MUSL copy": {
|
|
input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.tar.gz.sha256",
|
|
output: []string{
|
|
"artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3-pre.4.linux-amd64-musl.tar.gz.sha256",
|
|
"artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3-pre.4.linux-amd64.tar.gz.sha256",
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestGetHandler(t *testing.T) {
|
|
runTests(t, "TARGZ: ", targzMapping)
|
|
runTests(t, "DOCKER: ", dockerMapping)
|
|
runTests(t, "CDN: ", cdnMapping)
|
|
runTests(t, "ZIP: ", zipMapping)
|
|
runTests(t, "MSI: ", msiMapping)
|
|
runTests(t, "NPM: ", npmMapping)
|
|
runTests(t, "DEB: ", debMapping)
|
|
runTests(t, "RPM: ", rpmMapping)
|
|
runTests(t, "EXE: ", exeMapping)
|
|
runTests(t, "STORYBOOK: ", storybookMapping)
|
|
}
|
|
|
|
func runTests(t *testing.T, namePrefix string, tests map[string]m) {
|
|
t.Helper()
|
|
for testname, testcase := range tests {
|
|
t.Run(namePrefix+testname, func(t *testing.T) {
|
|
for envName, envValue := range testcase.env {
|
|
t.Setenv(envName, envValue)
|
|
}
|
|
handler, _ := getHandler(testcase.input, Handlers)
|
|
output := handler(testcase.input)
|
|
sort.Strings(output)
|
|
require.Equal(t, testcase.output, output)
|
|
})
|
|
}
|
|
}
|