CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
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)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user