diff --git a/scripts/move_packages.go b/scripts/move_packages.go index 6c50ca4d..64bb04e0 100644 --- a/scripts/move_packages.go +++ b/scripts/move_packages.go @@ -388,33 +388,10 @@ func main() { for scanner.Scan() { var ( name = scanner.Text() - ext = filepath.Ext(name) ) - - // sha256 extensions should be handled the same way what precedes the extension - if ext == sha256Ext { - ext = filepath.Ext(strings.ReplaceAll(name, sha256Ext, "")) - } - - // tar.gz extensions can also have docker.tar.gz so we need to make sure we don't skip that - if ext == ".gz" { - ext = ".tar.gz" - if filepath.Ext(strings.ReplaceAll(name, ".tar.gz", "")) == ".docker" || - filepath.Ext(strings.ReplaceAll(name, ".tar.gz.sha256", "")) == ".docker" { - ext = ".docker.tar.gz" - } - } - log.Printf("[%s] Using handler for %s", name, ext) - - handler := Handlers[ext] + handler, ext := getHandler(name, Handlers) + destinations := handler(name) if ext == "" { - destinations := make([]string, 0) - if filepath.Base(name) == "public" { - destinations = CDNHandler(name) - } - if filepath.Base(name) == "storybook" { - destinations = StorybookHandler(name) - } for _, v := range destinations { dir := filepath.Join(prefix, filepath.Dir(v)) v := filepath.Join(prefix, v) @@ -435,7 +412,6 @@ func main() { continue } - destinations := handler(name) log.Println("File:", name, "to be copied as", destinations) for _, v := range destinations { dir := filepath.Join(prefix, filepath.Dir(v)) @@ -475,3 +451,34 @@ func main() { fmt.Fprint(os.Stdout, stdout) fmt.Fprint(os.Stderr, stderr) } + +func getHandler(name string, handlers map[string]HandlerFunc) (HandlerFunc, string) { + ext := filepath.Ext(name) + // sha256 extensions should be handled the same way what precedes the extension + if ext == sha256Ext { + ext = filepath.Ext(strings.ReplaceAll(name, sha256Ext, "")) + } + + // tar.gz extensions can also have docker.tar.gz so we need to make sure we don't skip that + if ext == ".gz" { + ext = ".tar.gz" + if filepath.Ext(strings.ReplaceAll(name, ".tar.gz", "")) == ".docker" || + filepath.Ext(strings.ReplaceAll(name, ".tar.gz.sha256", "")) == ".docker" { + ext = ".docker.tar.gz" + } + } + + handler := handlers[ext] + // If there is no extension, then we are either dealing with public assets + // or the storybook, which both require some extra handling: + if ext == "" { + if filepath.Base(name) == "public" { + handler = CDNHandler + } + if filepath.Base(name) == "storybook" { + handler = StorybookHandler + } + } + log.Printf("[%s] Using handler for %s", name, ext) + return handler, ext +} diff --git a/scripts/move_packages_cdn_test.go b/scripts/move_packages_cdn_test.go index 703b3336..4971762d 100644 --- a/scripts/move_packages_cdn_test.go +++ b/scripts/move_packages_cdn_test.go @@ -1,50 +1,23 @@ package main -import ( - "sort" - "testing" -) - -var cdnMapping = []m{ - { +var cdnMapping = map[string]m{ + "OSS: Linux AMD64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64/public", output: []string{ "artifacts/static-assets/grafana-oss/1.2.3/public", "artifacts/static-assets/grafana/1.2.3/public", }, }, - { + "ENT: Linux AMD64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64/public", output: []string{ "artifacts/static-assets/grafana-enterprise/1.2.3/public", }, }, - { + "PRO: Linux AMD64": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_amd64/public", output: []string{ "artifacts/static-assets/grafana-pro/1.2.3/public", }, }, } - -func TestMoveCDN(t *testing.T) { - for _, v := range cdnMapping { - out := CDNHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_deb_test.go b/scripts/move_packages_deb_test.go index 5ab4f5e6..bdbbae65 100644 --- a/scripts/move_packages_deb_test.go +++ b/scripts/move_packages_deb_test.go @@ -1,145 +1,112 @@ package main -import ( - "sort" - "testing" -) - -var debMapping = []m{ - { +var debMapping = map[string]m{ + "OSS: Linux AMD64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.deb", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_amd64.deb", }, }, - { + "OSS: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_amd64.deb.sha256", }, }, - { - input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.deb", - output: []string{ - "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_armhf.deb", - }, - }, - { + "OSS: Linux ARM7": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.deb", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_armhf.deb", }, }, - { + "OSS: RPI ARM7": { input: "gs://bucket/tag/grafana-rpi_v1.2.3_102_linux_arm-7.deb", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-rpi_1.2.3_armhf.deb", }, }, - { + "OSS: RPI ARM6": { input: "gs://bucket/tag/grafana-rpi_v1.2.3_102_linux_arm-6.deb", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-rpi_1.2.3_armhf.deb", }, }, - { + "OSS: Linux ARM7 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_armhf.deb.sha256", }, }, - { + "OSS: Linux ARM64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.deb", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_arm64.deb", }, }, - { + "OSS: Linux ARM64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana_1.2.3_arm64.deb.sha256", }, }, - { + "ENT: Linux AMD64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.deb", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_amd64.deb", }, }, - { + "ENT: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_amd64.deb.sha256", }, }, - { + "ENT: Linux ARM64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.deb", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_arm64.deb", }, }, - { + "ENT: Linux ARM64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_arm64.deb.sha256", }, }, - { + "ENT: Linux ARM7": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.deb", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_armhf.deb", }, }, - { + "ENT: RPI ARM7": { input: "gs://bucket/tag/grafana-enterprise-rpi_v1.2.3_102_linux_arm-7.deb", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-rpi_1.2.3_armhf.deb", }, }, - { + "ENT: ARM7 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.deb.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise_1.2.3_armhf.deb.sha256", }, }, - { + "ENT2: RPI ARM7": { input: "gs://bucket/tag/grafana-pro-rpi_v1.2.3_102_linux_arm-7.deb", output: []string{ "artifacts/downloads-enterprise2/v1.2.3/enterprise2/release/grafana-enterprise2-rpi_1.2.3_armhf.deb", }, }, - { + "ENT2: Pre-release AMD64": { input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.deb", output: []string{ "artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2_1.2.3~pre.4_amd64.deb", }, }, - { + "ENT2: Pre-release AMD64 SHA256": { input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.deb.sha256", output: []string{ "artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2_1.2.3~pre.4_amd64.deb.sha256", }, }, } - -func TestMoveDeb(t *testing.T) { - for _, v := range debMapping { - out := DebHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_docker_test.go b/scripts/move_packages_docker_test.go index f5e34309..70660c8e 100644 --- a/scripts/move_packages_docker_test.go +++ b/scripts/move_packages_docker_test.go @@ -1,211 +1,184 @@ package main -import ( - "sort" - "testing" -) - -var dockerMapping = []m{ - { +var dockerMapping = map[string]m{ + "ENT: Linux AMD64 Ubuntu": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-amd64.img", }, }, - { + "ENT: Linux AMD64 Ubuntu SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-amd64.img.sha256", }, }, - { + "ENT: Linux ARM64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-arm64.img", }, }, - { + "ENT: Linux ARM64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-arm64.img.sha256", }, }, - { + "ENT: Linux ARM7": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-armv7.img", }, }, - { + "ENT: Linux ARM7 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-armv7.img.sha256", }, }, - { + "ENT: Linux ARM7 Ubuntu": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-armv7.img", }, }, - { + "ENT: Linux AR7 Ubuntu SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-armv7.img.sha256", }, }, - { + "ENT: Linux AMD64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-amd64.img", }, }, - { + "ENT: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-amd64.img.sha256", }, }, - { + "ENT: Linux ARM64 Ubuntu": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-arm64.img", }, }, - { + "ENT: Linux ARM64 Ubuntu SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise-1.2.3-ubuntu-arm64.img.sha256", }, }, - { + "OSS: Linux ARM7": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-armv7.img", }, }, - { + "OSS: Linux ARM7 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-armv7.img.sha256", }, }, - { + "OSS: Linux ARM7 Ubuntu": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-armv7.img", }, }, - { + "OSS: Linux AR7 Ubuntu SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-armv7.img.sha256", }, }, - { + "OSS: Linux AMD64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-amd64.img", }, }, - { + "OSS: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-amd64.img.sha256", }, }, - { + "OSS: Linux AMD64 Ubuntu": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-amd64.img", }, }, - { + "OSS: Linux AMD64 Ubuntu SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-amd64.img.sha256", }, }, - { + "OSS: Linux ARM64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-arm64.img", }, }, - { + "OSS: Linux ARM64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-arm64.img.sha256", }, }, - { + "OSS: Linux ARM64 Ubuntu": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-arm64.img", }, }, - { + "OSS: Linux ARM64 Ubuntu SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.ubuntu.docker.tar.gz.sha256", output: []string{ "artifacts/docker/1.2.3/grafana-oss-1.2.3-ubuntu-arm64.img.sha256", }, }, - { + "PRO: Linux AMD64": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_amd64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-amd64.img", }, }, - { + "PRO: Linux ARM64": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_arm64.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-arm64.img", }, }, - { + "PRO: Linux ARM7": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_arm-7.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-armv7.img", }, }, - { + "PRO: Linux AMD64 Ubuntu": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_amd64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-ubuntu-amd64.img", }, }, - { + "PRO: Linux ARM64 Ubuntu": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_arm64.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-ubuntu-arm64.img", }, }, - { + "PRO: Linux ARM7 Ubuntu": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_arm-7.ubuntu.docker.tar.gz", output: []string{ "artifacts/docker/1.2.3/grafana-enterprise2-1.2.3-ubuntu-armv7.img", }, }, } - -func TestMoveDocker(t *testing.T) { - for _, v := range dockerMapping { - out := DockerHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_exe_test.go b/scripts/move_packages_exe_test.go index 7c1f88e0..32499c80 100644 --- a/scripts/move_packages_exe_test.go +++ b/scripts/move_packages_exe_test.go @@ -1,55 +1,28 @@ package main -import ( - "sort" - "testing" -) - -var exeMapping = []m{ - { +var exeMapping = map[string]m{ + "ENT": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_windows_amd64.exe", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.windows-amd64.exe", }, }, - { + "ENT SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_windows_amd64.exe.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3.windows-amd64.exe.sha256", }, }, - { + "OSS": { input: "gs://bucket/tag/grafana_v1.2.3_102_windows_amd64.exe", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.windows-amd64.exe", }, }, - { + "OSS SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_windows_amd64.exe.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3.windows-amd64.exe.sha256", }, }, } - -func TestMoveEXEs(t *testing.T) { - for _, v := range exeMapping { - out := EXEHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_npm_test.go b/scripts/move_packages_npm_test.go index 9dd2d4ce..5679a997 100644 --- a/scripts/move_packages_npm_test.go +++ b/scripts/move_packages_npm_test.go @@ -1,38 +1,11 @@ package main -import ( - "sort" - "testing" -) - -var npmMapping = []m{ - { +var npmMapping = map[string]m{ + "Grafana data": { input: "file://dist/tag/grafana_10.2.0-pre_WxeEXjDuHTPB_linux_arm64/npm-artifacts/@grafana-data-10.2.0-pre.tgz", output: []string{ "artifacts/npm/v10.2.0-pre/npm-artifacts/@grafana-data-v10.2.0-pre.tgz", }, + env: map[string]string{"DRONE_TAG": "10.2.0-pre"}, }, } - -func TestMoveNPM(t *testing.T) { - t.Setenv("DRONE_TAG", "10.2.0-pre") - for _, v := range npmMapping { - out := NPMHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_rpm_test.go b/scripts/move_packages_rpm_test.go index 81f17b23..22b1d8ac 100644 --- a/scripts/move_packages_rpm_test.go +++ b/scripts/move_packages_rpm_test.go @@ -1,115 +1,88 @@ package main -import ( - "sort" - "testing" -) - -var rpmMapping = []m{ - { +var rpmMapping = map[string]m{ + "OSS: Linux AMD64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.rpm", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.x86_64.rpm", }, }, - { + "OSS: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.x86_64.rpm.sha256", }, }, - { + "OSS: Linux ARM7": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.rpm", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.armhfp.rpm", }, }, - { + "OSS: Linux ARM7 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm-7.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.armhfp.rpm.sha256", }, }, - { + "OSS: Linux aarch64": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_aarch64.rpm", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.aarch64.rpm", }, }, - { + "OSS: Linux aarch64 SHA256": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_arm64.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/oss/release/grafana-1.2.3-1.aarch64.rpm.sha256", }, }, - { + "ENT: Linux AMD64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.rpm", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.x86_64.rpm", }, }, - { + "ENT: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.x86_64.rpm.sha256", }, }, - { + "ENT: Linux ARM64": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.rpm", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.aarch64.rpm", }, }, - { + "ENT: Linux ARM64 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm64.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.aarch64.rpm.sha256", }, }, - { + "ENT: Linux ARM7": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.rpm", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.armhfp.rpm", }, }, - { + "ENT: Linux ARM7 SHA256": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_arm-7.rpm.sha256", output: []string{ "artifacts/downloads/v1.2.3/enterprise/release/grafana-enterprise-1.2.3-1.armhfp.rpm.sha256", }, }, - { + "PRO: Linux AMD64": { input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.rpm", output: []string{ "artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3~pre.4-1.x86_64.rpm", }, }, - { + "PRO: Linux AMD64 SHA256": { input: "gs://bucket/tag/grafana-pro_v1.2.3-pre.4_102_linux_amd64.rpm.sha256", output: []string{ "artifacts/downloads-enterprise2/v1.2.3-pre.4/enterprise2/release/grafana-enterprise2-1.2.3~pre.4-1.x86_64.rpm.sha256", }, }, } - -func TestMoverpm(t *testing.T) { - for _, v := range rpmMapping { - out := RPMHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_storybook_test.go b/scripts/move_packages_storybook_test.go index be15c0bf..edaa9243 100644 --- a/scripts/move_packages_storybook_test.go +++ b/scripts/move_packages_storybook_test.go @@ -1,49 +1,22 @@ package main -import ( - "sort" - "testing" -) - -var storybookMapping = []m{ - { +var storybookMapping = map[string]m{ + "OSS": { input: "gs://bucket/tag/grafana_v1.2.3_102_linux_amd64/storybook", output: []string{ "artifacts/storybook/v1.2.3", }, }, - { + "ENT": { input: "gs://bucket/tag/grafana-enterprise_v1.2.3_102_linux_amd64/storybook", output: []string{ "artifacts/storybook/v1.2.3", }, }, - { + "PRO": { input: "gs://bucket/tag/grafana-pro_v1.2.3_102_linux_amd64/storybook", output: []string{ "artifacts/storybook/v1.2.3", }, }, } - -func TestMoveStorybook(t *testing.T) { - for _, v := range storybookMapping { - out := StorybookHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -} diff --git a/scripts/move_packages_test.go b/scripts/move_packages_test.go index 081e7f81..3d3fc6bc 100644 --- a/scripts/move_packages_test.go +++ b/scripts/move_packages_test.go @@ -3,203 +3,212 @@ package main import ( "sort" "testing" + + "github.com/stretchr/testify/require" ) type m struct { input string output []string + env map[string]string } -var targzMapping = []m{ - { +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.tar.gz", "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.tar.gz.sha256", "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.tar.gz", "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.tar.gz.sha256", "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.tar.gz", "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.tar.gz.sha256", "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.tar.gz", "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.tar.gz.sha256", "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 TestMoveTargz(t *testing.T) { - for _, v := range targzMapping { - out := TarGZHandler(v.input) - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) +func TestGetHandler(t *testing.T) { + runTests(t, "TARGZ: ", targzMapping) + runTests(t, "DOCKER: ", dockerMapping) + runTests(t, "CDN: ", cdnMapping) + runTests(t, "ZIP: ", zipMapping) + runTests(t, "NPM: ", npmMapping) + runTests(t, "DEB: ", debMapping) + runTests(t, "RPM: ", rpmMapping) + runTests(t, "EXE: ", exeMapping) + runTests(t, "STORYBOOK: ", storybookMapping) +} - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) +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) + }) } } diff --git a/scripts/move_packages_zip_test.go b/scripts/move_packages_zip_test.go index 8dfcf414..af121e1e 100644 --- a/scripts/move_packages_zip_test.go +++ b/scripts/move_packages_zip_test.go @@ -1,49 +1,22 @@ package main -import ( - "sort" - "testing" -) - -var zipMapping = []m{ - { +var zipMapping = map[string]m{ + "OSS: Windows AMD64": { input: "gs://bucket/tag/grafana_v1.2.3-test.1_102_windows_amd64.zip", output: []string{ "artifacts/downloads/v1.2.3-test.1/oss/release/grafana-1.2.3-test.1.windows-amd64.zip", }, }, - { + "OSS: Windows AMD64 from file://": { input: "file://bucket/tag/grafana_v1.2.3-test.1_102_windows_amd64.zip", output: []string{ "artifacts/downloads/v1.2.3-test.1/oss/release/grafana-1.2.3-test.1.windows-amd64.zip", }, }, - { + "OSS: Windows AMD64 main from file://": { input: "file://bucket/tag/grafana_main_102_windows_amd64.zip", output: []string{ "artifacts/downloads/main/oss/release/grafana-main.windows-amd64.zip", }, }, } - -func TestMoveZip(t *testing.T) { - for _, v := range zipMapping { - out := ZipHandler(v.input) - - if len(out) != len(v.output) { - t.Errorf("expected %d in output but received %d\nexpected: %v\nreceived: %v", len(v.output), len(out), v.output, out) - continue - } - sort.Strings(out) - exp := v.output - sort.Strings(exp) - - for i := range out { - got := out[i] - expect := exp[i] - if expect != got { - t.Errorf("\nExpected %s\nReceived %s", expect, got) - } - } - } -}