package cmd import ( "bytes" "os" "regexp" "testing" ) func TestNixFlake_GosrcVersionStringEquivalence(t *testing.T) { want := GetShortVersion() fData, err := os.ReadFile("../flake.nix") if err != nil { t.Errorf("Failed to open flake.nix: %q", err) } got := bytes.Contains(fData, []byte(" version = \""+want+"\"")) if !got { t.Errorf("Version string '%q' not found in ../flake.nix", want) } } func TestVersionStringFormat(t *testing.T) { v := version // this expression matches the format of "vX.Y.Z" where {X,Y,Z} are digits // (such as 0 or 123) re := regexp.MustCompile(`^(v\d+\.\d+\.\d+)$`) match := re.MatchString(v) if !match { t.Errorf("Incorrect version string format, must match regex: '%q', provided version string: '%q'", re.String(), v) } } func TestGetVersion(t *testing.T) { want := appName + " - " + version got := getVersion() if want != got { t.Errorf("Incorrect version string, want: '%q', got: '%q'", want, got) } } // set shortVersion variable manually func TestGetVersionWithShortVersionVar(t *testing.T) { shortVersion = true want := version got := getVersion() if want != got { t.Errorf("Incorrect version string when 'shortVersion' is true, want: '%q', got: '%q'", want, got) } } // explicitly get short version func TestGetShortVersion(t *testing.T) { want := version got := GetShortVersion() if want != got { t.Errorf("Incorrect 'short' version string, want: '%q', got: '%q'", want, got) } }