surtur
4b6e655ebf
All checks were successful
continuous-integration/drone/push Build is passing
* add 'version' command - "go-xkcdreader version" returns a formatted version of the app * test (among other things) that the version in flake.nix matches the version hardcoded in app's go code (cmd/version.go)
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|