Ctrl K
ComunidadGuías…

version_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
			}
		})
	}
}