version_test.go
Rama main · réplica de lectura del repositorio original.
package portico
import (
"os"
"regexp"
"strings"
"testing"
)
func TestVersionMatchesCanonicalManifest(t *testing.T) {
raw, err := os.ReadFile("VERSION")
if err != nil {
t.Fatal(err)
}
want := "v" + strings.TrimSpace(string(raw))
if got := Version(); got != want {
t.Fatalf("Gateway version %q differs from canonical VERSION %q", got, want)
}
if !regexp.MustCompile(`^v[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z.-]+)?$`).MatchString(want) {
t.Fatalf("not a SemVer product version: %q", want)
}
}
func TestVersionFromManifestFailsClosed(t *testing.T) {
for _, tt := range []struct {
manifest string
want string
}{
{"0.1.0-rc.7\n", "v0.1.0-rc.7"},
{"2.4.1", "v2.4.1"},
{"1.2.3-beta.2+build.5", "v1.2.3-beta.2+build.5"},
{"", "dev"},
{"\n \t", "dev"},
{"v0.1.0", "dev"},
{"0.1", "dev"},
{"01.2.3", "dev"},
{"0.1.0-rc.07", "dev"},
{"0.1.0-", "dev"},
{"0.1.0+bad..metadata", "dev"},
{"0.1.0\nUNTRUSTED", "dev"},
} {
t.Run(strings.ReplaceAll(tt.manifest, "\n", "_newline_"), func(t *testing.T) {
if got := versionFromManifest(tt.manifest); got != tt.want {
t.Fatalf("versionFromManifest(%q)=%q; want %q", tt.manifest, got, tt.want)
}
})
}
}