mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 16:40:32 +00:00
58 lines
1.6 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|