feat: update button (download, verify, stage)
This commit is contained in:
1 parent
834493a4f5
commit
70460e4170
41 files changed
+5345
-97
No files matched your search
@@ -0,0 +1,86 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
infraUpdate "RenewCMS/internal/infrastructure/update"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func buildServerBinary(t *testing.T, ldflags string) string {
|
||||
t.Helper()
|
||||
if _, err := exec.LookPath("go"); err != nil {
|
||||
t.Skip("the go tool is not on PATH")
|
||||
}
|
||||
name := "server"
|
||||
if runtime.GOOS == "windows" {
|
||||
name += ".exe"
|
||||
}
|
||||
output := filepath.Join(t.TempDir(), name)
|
||||
arguments := []string{"build", "-tags", "nofrontend"}
|
||||
if ldflags != "" {
|
||||
arguments = append(arguments, "-ldflags", ldflags)
|
||||
}
|
||||
arguments = append(arguments, "-o", output, "RenewCMS/cmd/server")
|
||||
build := exec.Command("go", arguments...)
|
||||
build.Env = append(os.Environ(), "CGO_ENABLED=0")
|
||||
if combined, err := build.CombinedOutput(); err != nil {
|
||||
t.Fatalf("build failed: %v\n%s", err, combined)
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
func emptyEnvironment() []string {
|
||||
if runtime.GOOS == "windows" {
|
||||
return []string{"SystemRoot=" + os.Getenv("SystemRoot")}
|
||||
}
|
||||
return []string{}
|
||||
}
|
||||
|
||||
func TestServerVersionFlag(t *testing.T) {
|
||||
t.Run("it prints the build version and exits 0 without reading .env or the database", func(t *testing.T) {
|
||||
binary := buildServerBinary(t, "-X main.version=v9.9.9")
|
||||
workDir := t.TempDir()
|
||||
command := exec.Command(binary, "--version")
|
||||
command.Dir = workDir
|
||||
command.Env = emptyEnvironment()
|
||||
|
||||
output, err := command.Output()
|
||||
|
||||
if err != nil || strings.TrimSpace(string(output)) != "v9.9.9" {
|
||||
t.Fatalf("output = %q, err = %v", output, err)
|
||||
}
|
||||
if entries, _ := os.ReadDir(workDir); len(entries) != 0 {
|
||||
t.Errorf("the working directory must stay empty, got %d entries", len(entries))
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("with no ldflags version it prints dev", func(t *testing.T) {
|
||||
binary := buildServerBinary(t, "")
|
||||
command := exec.Command(binary, "--version")
|
||||
command.Dir = t.TempDir()
|
||||
command.Env = emptyEnvironment()
|
||||
|
||||
output, err := command.Output()
|
||||
|
||||
if err != nil || strings.TrimSpace(string(output)) != "dev" {
|
||||
t.Errorf("output = %q, err = %v", output, err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("the staged binary runner returns what the binary prints", func(t *testing.T) {
|
||||
binary := buildServerBinary(t, "-X main.version=v9.9.9")
|
||||
|
||||
version, err := infraUpdate.NewExecStagedBinaryRunner().Version(binary)
|
||||
|
||||
if err != nil || version != "v9.9.9" {
|
||||
t.Errorf("version = %q, err = %v", version, err)
|
||||
}
|
||||
if _, err := infraUpdate.NewExecStagedBinaryRunner().Version(filepath.Join(t.TempDir(), "missing")); err == nil {
|
||||
t.Error("a binary that cannot be run must be an error")
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user