config_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package config
  2. import (
  3. "os"
  4. "testing"
  5. )
  6. func TestGetReportedVersion(t *testing.T) {
  7. orig := buildCommit
  8. t.Cleanup(func() { buildCommit = orig })
  9. buildCommit = ""
  10. if got := GetReportedVersion(); got != GetVersion() {
  11. t.Fatalf("stable build: GetReportedVersion = %q, want %q", got, GetVersion())
  12. }
  13. buildCommit = "1d1128cf"
  14. if got := GetReportedVersion(); got != "dev+1d1128cf" {
  15. t.Fatalf("dev build: GetReportedVersion = %q, want %q", got, "dev+1d1128cf")
  16. }
  17. buildCommit = "1d1128cf945c4615efa05cf41ba7fa766e2ee428"
  18. if got := GetReportedVersion(); got != "dev+1d1128cf" {
  19. t.Fatalf("dev build (full sha): GetReportedVersion = %q, want %q", got, "dev+1d1128cf")
  20. }
  21. }
  22. func TestGetPortOverride(t *testing.T) {
  23. tests := []struct {
  24. name string
  25. value string
  26. set bool
  27. wantPort int
  28. configured bool
  29. wantErr bool
  30. }{
  31. {name: "unset"},
  32. {name: "empty", value: "", set: true},
  33. {name: "whitespace", value: " ", set: true},
  34. {name: "minimum", value: "1", set: true, wantPort: 1, configured: true},
  35. {name: "default panel port", value: "2053", set: true, wantPort: 2053, configured: true},
  36. {name: "surrounding whitespace", value: " 8080 ", set: true, wantPort: 8080, configured: true},
  37. {name: "maximum", value: "65535", set: true, wantPort: 65535, configured: true},
  38. {name: "zero", value: "0", set: true, configured: true, wantErr: true},
  39. {name: "above maximum", value: "65536", set: true, configured: true, wantErr: true},
  40. {name: "negative", value: "-1", set: true, configured: true, wantErr: true},
  41. {name: "non-numeric", value: "abc", set: true, configured: true, wantErr: true},
  42. {name: "decimal", value: "8080.0", set: true, configured: true, wantErr: true},
  43. }
  44. for _, tt := range tests {
  45. t.Run(tt.name, func(t *testing.T) {
  46. if tt.set {
  47. t.Setenv("XUI_PORT", tt.value)
  48. } else {
  49. original, existed := os.LookupEnv("XUI_PORT")
  50. if err := os.Unsetenv("XUI_PORT"); err != nil {
  51. t.Fatalf("unset XUI_PORT: %v", err)
  52. }
  53. t.Cleanup(func() {
  54. if existed {
  55. _ = os.Setenv("XUI_PORT", original)
  56. } else {
  57. _ = os.Unsetenv("XUI_PORT")
  58. }
  59. })
  60. }
  61. port, configured, err := GetPortOverride()
  62. if port != tt.wantPort {
  63. t.Errorf("port = %d, want %d", port, tt.wantPort)
  64. }
  65. if configured != tt.configured {
  66. t.Errorf("configured = %t, want %t", configured, tt.configured)
  67. }
  68. if (err != nil) != tt.wantErr {
  69. t.Errorf("error = %v, wantErr %t", err, tt.wantErr)
  70. }
  71. })
  72. }
  73. }