| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package debtik
- import (
- "os"
- "path/filepath"
- "testing"
- )
- func TestRefreshLegacyUpdater(t *testing.T) {
- dir := t.TempDir()
- if err := RefreshUpdateHelpers(dir); err != nil {
- t.Fatal(err)
- }
- if entries, _ := os.ReadDir(dir); len(entries) != 0 {
- t.Fatal("created helpers for an unmanaged server")
- }
- path := filepath.Join(dir, "debtik-update")
- if err := os.WriteFile(path, []byte("legacy"), 0700); err != nil {
- t.Fatal(err)
- }
- // An older update process may still hold the old inode open.
- old, err := os.Open(path)
- if err != nil {
- t.Fatal(err)
- }
- defer old.Close()
- if err = RefreshUpdateHelpers(dir); err != nil {
- t.Fatal(err)
- }
- for name, want := range map[string]string{"debtik-update": string(updateHelper), "debtik-release-version": string(versionHelper)} {
- got, err := os.ReadFile(filepath.Join(dir, name))
- if err != nil || string(got) != want {
- t.Fatalf("%s was not refreshed: %v", name, err)
- }
- info, _ := os.Stat(filepath.Join(dir, name))
- if info.Mode().Perm() != 0750 {
- t.Fatal("wrong helper permissions")
- }
- }
- buf := make([]byte, 6)
- if _, err = old.Read(buf); err != nil || string(buf) != "legacy" {
- t.Fatal("replacement modified the running updater inode")
- }
- }
|