go-xkcdreader/cmd/version_test.go
surtur 4b6e655ebf
All checks were successful
continuous-integration/drone/push Build is passing
use github.com/spf13/cobra for app cmds
* 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)
2022-05-12 15:54:16 +02:00

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)
}
}