Files
newt/updates/replace_test.go
2026-10-28 09:42:56 -04:00

46 lines
980 B
Go

package updates
import (
"os"
"path/filepath"
"testing"
)
func TestReplaceBinary(t *testing.T) {
dir := t.TempDir()
exePath := filepath.Join(dir, "newt")
newPath := filepath.Join(dir, ".newt-update-test")
if err := os.WriteFile(exePath, []byte("old"), 0755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(newPath, []byte("new"), 0755); err != nil {
t.Fatal(err)
}
if err := replaceBinary(newPath, exePath); err != nil {
t.Fatalf("replaceBinary: %v", err)
}
got, err := os.ReadFile(exePath)
if err != nil {
t.Fatal(err)
}
if string(got) != "new" {
t.Fatalf("expected new binary contents, got %q", got)
}
if _, err := os.Stat(newPath); !os.IsNotExist(err) {
t.Fatalf("expected temp file to be consumed, stat err: %v", err)
}
removeStaleBinary(exePath)
entries, err := os.ReadDir(dir)
if err != nil {
t.Fatal(err)
}
if len(entries) != 1 {
t.Fatalf("expected only the installed binary to remain, got %d entries", len(entries))
}
}