publisher_test.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package main
  2. import "testing"
  3. func TestPreparingReleaseFromRemote(t *testing.T) {
  4. var builder releaseBuilder
  5. versionIn := "v5.2.0-beta1"
  6. expectedVersion := "5.2.0-beta1"
  7. whatsNewUrl := "https://whatsnews.foo/"
  8. relNotesUrl := "https://relnotes.foo/"
  9. expectedArch := "amd64"
  10. expectedOs := "linux"
  11. buildArtifacts := []buildArtifact{{expectedOs, expectedArch, ".linux-amd64.tar.gz"}}
  12. builder = releaseFromExternalContent{
  13. getter: mockHttpGetter{},
  14. rawVersion: versionIn,
  15. artifactConfigurations: buildArtifactConfigurations,
  16. }
  17. rel, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana", whatsNewUrl, relNotesUrl, false)
  18. if !rel.Beta || rel.Stable {
  19. t.Errorf("%s should have been tagged as beta (not stable), but wasn't .", versionIn)
  20. }
  21. if rel.Version != expectedVersion {
  22. t.Errorf("Expected version to be %s, but it was %s.", expectedVersion, rel.Version)
  23. }
  24. expectedBuilds := len(buildArtifacts)
  25. if len(rel.Builds) != expectedBuilds {
  26. t.Errorf("Expected %v builds, but got %v.", expectedBuilds, len(rel.Builds))
  27. }
  28. build := rel.Builds[0]
  29. if build.Arch != expectedArch {
  30. t.Errorf("Expected arch to be %v, but it was %v", expectedArch, build.Arch)
  31. }
  32. if build.Os != expectedOs {
  33. t.Errorf("Expected arch to be %v, but it was %v", expectedOs, build.Os)
  34. }
  35. }
  36. type mockHttpGetter struct{}
  37. func (mockHttpGetter) getContents(url string) (string, error) {
  38. return url, nil
  39. }
  40. func TestPreparingReleaseFromLocal(t *testing.T) {
  41. whatsNewUrl := "https://whatsnews.foo/"
  42. relNotesUrl := "https://relnotes.foo/"
  43. expectedVersion := "5.4.0-123pre1"
  44. expectedBuilds := 4
  45. var builder releaseBuilder
  46. testDataPath := "testdata"
  47. builder = releaseLocalSources{
  48. path: testDataPath,
  49. artifactConfigurations: buildArtifactConfigurations,
  50. }
  51. relAll, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-enterprise-releases/master/grafana-enterprise", whatsNewUrl, relNotesUrl, true)
  52. if relAll.Stable || !relAll.Nightly {
  53. t.Error("Expected a nightly release but wasn't.")
  54. }
  55. if relAll.ReleaseNotesUrl != relNotesUrl {
  56. t.Errorf("expected releaseNotesUrl to be %s, but it was %s", relNotesUrl, relAll.ReleaseNotesUrl)
  57. }
  58. if relAll.WhatsNewUrl != whatsNewUrl {
  59. t.Errorf("expected whatsNewUrl to be %s, but it was %s", whatsNewUrl, relAll.WhatsNewUrl)
  60. }
  61. if relAll.Beta {
  62. t.Errorf("Expected release to be nightly, not beta.")
  63. }
  64. if relAll.Version != expectedVersion {
  65. t.Errorf("Expected version=%s, but got=%s", expectedVersion, relAll.Version)
  66. }
  67. if len(relAll.Builds) != expectedBuilds {
  68. t.Errorf("Expected %v builds, but was %v", expectedBuilds, len(relAll.Builds))
  69. }
  70. expectedArch := "amd64"
  71. expectedOs := "win"
  72. builder = releaseLocalSources{
  73. path: testDataPath,
  74. artifactConfigurations: []buildArtifact{{
  75. os: expectedOs,
  76. arch: expectedArch,
  77. urlPostfix: ".windows-amd64.zip",
  78. }},
  79. }
  80. relOne, _ := builder.prepareRelease("https://s3-us-west-2.amazonaws.com/grafana-enterprise-releases/master/grafana-enterprise", whatsNewUrl, relNotesUrl, true)
  81. if len(relOne.Builds) != 1 {
  82. t.Errorf("Expected 1 artifact, but was %v", len(relOne.Builds))
  83. }
  84. build := relOne.Builds[0]
  85. if build.Arch != expectedArch {
  86. t.Fatalf("Expected arch to be %s, but was %s", expectedArch, build.Arch)
  87. }
  88. if build.Os != expectedOs {
  89. t.Fatalf("Expected os to be %s, but was %s", expectedOs, build.Os)
  90. }
  91. }