Files
gopeed/pkg/download/temp_test.go
T

58 lines
1.6 KiB
Go

package download
import (
"os"
"path/filepath"
"testing"
)
func TestTempDirInitialization(t *testing.T) {
for _, configured := range []bool{false, true} {
t.Run(map[bool]string{false: "system-default", true: "explicit"}[configured], func(t *testing.T) {
root := t.TempDir()
// os.TempDir uses different environment variables across supported platforms.
t.Setenv("TMPDIR", root)
t.Setenv("TMP", root)
t.Setenv("TEMP", root)
cfg := &DownloaderConfig{Storage: NewMemStorage(), StorageDir: t.TempDir()}
if configured {
cfg.TempDir = root
}
existing := filepath.Join(root, "gopeed-media-existing")
if err := os.Mkdir(existing, 0700); err != nil {
t.Fatal(err)
}
marker := filepath.Join(existing, "keep")
if err := os.WriteFile(marker, []byte("other owner"), 0600); err != nil {
t.Fatal(err)
}
d := NewDownloader(cfg)
if err := d.Setup(); err != nil {
t.Fatal(err)
}
if d.cfg.TempDir != root {
t.Fatalf("TempDir=%q, want %q", d.cfg.TempDir, root)
}
if _, err := os.Stat(marker); err != nil {
t.Fatal("initialization removed existing data", err)
}
owned, err := os.MkdirTemp(d.cfg.TempDir, "gopeed-media-")
if err != nil {
t.Fatal(err)
}
if err := d.tempFiles.Track(owned); err != nil {
t.Fatal(err)
}
if err := d.Close(); err != nil {
t.Fatal(err)
}
if _, err := os.Stat(owned); !os.IsNotExist(err) {
t.Fatal("shutdown retained owned data", err)
}
if _, err := os.Stat(marker); err != nil {
t.Fatal("shutdown removed another owner's data", err)
}
})
}
}