diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/version/version.go | 30 | ||||
| -rw-r--r-- | internal/version/version_test.go | 32 |
2 files changed, 62 insertions, 0 deletions
diff --git a/internal/version/version.go b/internal/version/version.go new file mode 100644 index 0000000..030bd4e --- /dev/null +++ b/internal/version/version.go @@ -0,0 +1,30 @@ +// Package version holds build-time version information for both +// binaries, set via -ldflags "-X mitmux/internal/version.Version=..." +// (see the Makefile's release target). Defaults to "dev" for a plain +// `go build` with no ldflags, so `-version` is never blank or +// misleading about whether a given binary is a tagged release or a +// local build. +package version + +var ( + Version = "dev" + Commit = "" + Date = "" +) + +// String returns a one-line version summary for component ("mitmux" or +// "mitmuxd"): "mitmux dev" for an untagged build, or +// "mitmux 1.2.3 (abc1234, 2026-01-02)" once Commit/Date are set. +func String(component string) string { + s := component + " " + Version + if Commit != "" || Date != "" { + s += " (" + s += Commit + if Commit != "" && Date != "" { + s += ", " + } + s += Date + s += ")" + } + return s +} diff --git a/internal/version/version_test.go b/internal/version/version_test.go new file mode 100644 index 0000000..d2d501b --- /dev/null +++ b/internal/version/version_test.go @@ -0,0 +1,32 @@ +package version + +import "testing" + +func TestStringDefault(t *testing.T) { + orig := Version + Version, Commit, Date = "dev", "", "" + defer func() { Version = orig }() + if got := String("mitmux"); got != "mitmux dev" { + t.Errorf("String(%q) = %q, want %q", "mitmux", got, "mitmux dev") + } +} + +func TestStringWithCommitAndDate(t *testing.T) { + origV, origC, origD := Version, Commit, Date + Version, Commit, Date = "1.2.3", "abc1234", "2026-01-02" + defer func() { Version, Commit, Date = origV, origC, origD }() + want := "mitmuxd 1.2.3 (abc1234, 2026-01-02)" + if got := String("mitmuxd"); got != want { + t.Errorf("String(%q) = %q, want %q", "mitmuxd", got, want) + } +} + +func TestStringCommitOnly(t *testing.T) { + origV, origC, origD := Version, Commit, Date + Version, Commit, Date = "1.2.3", "abc1234", "" + defer func() { Version, Commit, Date = origV, origC, origD }() + want := "mitmux 1.2.3 (abc1234)" + if got := String("mitmux"); got != want { + t.Errorf("String(%q) = %q, want %q", "mitmux", got, want) + } +} |