| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- package main
- import "testing"
- func TestPreparingReleaseFromRemote(t *testing.T) {
- cases := []struct {
- version string
- expectedVersion string
- whatsNewURL string
- relNotesURL string
- nightly bool
- expectedBeta bool
- expectedStable bool
- expectedArch string
- expectedOs string
- expectedURL string
- baseArchiveURL string
- buildArtifacts []buildArtifact
- }{
- {
- version: "v5.2.0-beta1",
- expectedVersion: "5.2.0-beta1",
- whatsNewURL: "https://whatsnews.foo/",
- relNotesURL: "https://relnotes.foo/",
- nightly: false,
- expectedBeta: true,
- expectedStable: false,
- expectedArch: "amd64",
- expectedOs: "linux",
- expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.0-beta1.linux-amd64.tar.gz",
- baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
- buildArtifacts: []buildArtifact{{"linux", "amd64", ".linux-amd64.tar.gz"}},
- },
- {
- version: "v5.2.3",
- expectedVersion: "5.2.3",
- whatsNewURL: "https://whatsnews.foo/",
- relNotesURL: "https://relnotes.foo/",
- nightly: false,
- expectedBeta: false,
- expectedStable: true,
- expectedArch: "amd64",
- expectedOs: "rhel",
- expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3-1.x86_64.rpm",
- baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
- buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm"}},
- },
- {
- version: "v5.4.0-pre1asdf",
- expectedVersion: "5.4.0-pre1asdf",
- whatsNewURL: "https://whatsnews.foo/",
- relNotesURL: "https://relnotes.foo/",
- nightly: true,
- expectedBeta: false,
- expectedStable: false,
- expectedArch: "amd64",
- expectedOs: "rhel",
- expectedURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.4.0-pre1asdf.x86_64.rpm",
- baseArchiveURL: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana",
- buildArtifacts: []buildArtifact{{"rhel", "amd64", ".x86_64.rpm"}},
- },
- }
- for _, test := range cases {
- builder := releaseFromExternalContent{
- getter: mockHTTPGetter{},
- rawVersion: test.version,
- artifactConfigurations: test.buildArtifacts,
- }
- rel, _ := builder.prepareRelease(test.baseArchiveURL, test.whatsNewURL, test.relNotesURL, test.nightly)
- if rel.Beta != test.expectedBeta || rel.Stable != test.expectedStable {
- t.Errorf("%s should have been tagged as beta=%v, stable=%v.", test.version, test.expectedBeta, test.expectedStable)
- }
- if rel.Version != test.expectedVersion {
- t.Errorf("Expected version to be %s, but it was %s.", test.expectedVersion, rel.Version)
- }
- expectedBuilds := len(test.buildArtifacts)
- if len(rel.Builds) != expectedBuilds {
- t.Errorf("Expected %v builds, but got %v.", expectedBuilds, len(rel.Builds))
- }
- build := rel.Builds[0]
- if build.Arch != test.expectedArch {
- t.Errorf("Expected arch to be %v, but it was %v", test.expectedArch, build.Arch)
- }
- if build.Os != test.expectedOs {
- t.Errorf("Expected os to be %v, but it was %v", test.expectedOs, build.Os)
- }
- if build.URL != test.expectedURL {
- t.Errorf("Expected url to be %v, but it was %v", test.expectedURL, build.URL)
- }
- }
- }
- type mockHTTPGetter struct{}
- func (mockHTTPGetter) getContents(url string) (string, error) {
- return url, nil
- }
- func TestPreparingReleaseFromLocal(t *testing.T) {
- whatsNewURL := "https://whatsnews.foo/"
- relNotesURL := "https://relnotes.foo/"
- expectedVersion := "5.4.0-123pre1"
- expectedBuilds := 4
- var builder releaseBuilder
- testDataPath := "testdata"
- builder = releaseLocalSources{
- path: testDataPath,
- artifactConfigurations: completeBuildArtifactConfigurations,
- }
- relAll, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-enterprise-releases/master/grafana-enterprise", whatsNewURL, relNotesURL, true)
- if relAll.Stable || !relAll.Nightly {
- t.Error("Expected a nightly release but wasn't.")
- }
- if relAll.ReleaseNotesURL != relNotesURL {
- t.Errorf("expected releaseNotesURL to be %s, but it was %s", relNotesURL, relAll.ReleaseNotesURL)
- }
- if relAll.WhatsNewURL != whatsNewURL {
- t.Errorf("expected whatsNewURL to be %s, but it was %s", whatsNewURL, relAll.WhatsNewURL)
- }
- if relAll.Beta {
- t.Errorf("Expected release to be nightly, not beta.")
- }
- if relAll.Version != expectedVersion {
- t.Errorf("Expected version=%s, but got=%s", expectedVersion, relAll.Version)
- }
- if len(relAll.Builds) != expectedBuilds {
- t.Errorf("Expected %v builds, but was %v", expectedBuilds, len(relAll.Builds))
- }
- expectedArch := "amd64"
- expectedOs := "win"
- builder = releaseLocalSources{
- path: testDataPath,
- artifactConfigurations: []buildArtifact{{
- os: expectedOs,
- arch: expectedArch,
- urlPostfix: ".windows-amd64.zip",
- }},
- }
- relOne, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-enterprise-releases/master/grafana-enterprise", whatsNewURL, relNotesURL, true)
- if len(relOne.Builds) != 1 {
- t.Errorf("Expected 1 artifact, but was %v", len(relOne.Builds))
- }
- build := relOne.Builds[0]
- if build.Arch != expectedArch {
- t.Fatalf("Expected arch to be %s, but was %s", expectedArch, build.Arch)
- }
- if build.Os != expectedOs {
- t.Fatalf("Expected os to be %s, but was %s", expectedOs, build.Os)
- }
- _, err := builder.prepareRelease("", "", "", false)
- if err == nil {
- t.Error("Error was nil, but expected an error as the local releaser only supports nightly builds.")
- }
- }
- func TestFilterBuildArtifacts(t *testing.T) {
- buildArtifacts, _ := filterBuildArtifacts([]artifactFilter{
- {os: "deb", arch: "amd64"},
- {os: "rhel", arch: "amd64"},
- {os: "linux", arch: "amd64"},
- {os: "win", arch: "amd64"},
- })
- if len(buildArtifacts) != 4 {
- t.Errorf("Expected 4 build artifacts after filtering, but was %v", len(buildArtifacts))
- }
- _, err := filterBuildArtifacts([]artifactFilter{
- {os: "foobar", arch: "amd64"},
- })
- if err == nil {
- t.Errorf("Expected an error as a we tried to filter on a nonexiststant os.")
- }
- }
|