Skip to content

Commit 7ee00c7

Browse files
committed
test(file): cover download directory-target destination
1 parent 6b644f4 commit 7ee00c7

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

internal/cmd/file/download_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,49 @@ func TestDownloadByteExactToAutoName(t *testing.T) {
6060
}
6161
}
6262

63+
func TestDownloadToDirectoryTarget(t *testing.T) {
64+
body := []byte{0x89, 'P', 'N', 'G', 0xff} // no trailing newline
65+
srv := downloadServer(t, body, 0)
66+
defer srv.Close()
67+
68+
dir := t.TempDir()
69+
errOut := &strings.Builder{}
70+
o := baseDownloadOpts(srv.URL, &strings.Builder{}, errOut)
71+
o.output = dir
72+
if err := runDownload(context.Background(), o); err != nil {
73+
t.Fatalf("runDownload: %v", err)
74+
}
75+
got, err := os.ReadFile(filepath.Join(dir, "pic.png"))
76+
if err != nil {
77+
t.Fatalf("read saved file: %v", err)
78+
}
79+
if string(got) != string(body) {
80+
t.Fatalf("saved bytes = %v, want %v", got, body)
81+
}
82+
if !strings.Contains(errOut.String(), "Saved") {
83+
t.Errorf("missing Saved note: %q", errOut.String())
84+
}
85+
86+
// A trailing path separator resolves the same way, even for a path that
87+
// does not yet exist.
88+
dir2 := filepath.Join(t.TempDir(), "sub") + string(os.PathSeparator)
89+
o2 := baseDownloadOpts(srv.URL, &strings.Builder{}, &strings.Builder{})
90+
o2.output = dir2
91+
if err := os.MkdirAll(dir2, 0o755); err != nil {
92+
t.Fatal(err)
93+
}
94+
if err := runDownload(context.Background(), o2); err != nil {
95+
t.Fatalf("runDownload (trailing separator): %v", err)
96+
}
97+
got2, err := os.ReadFile(filepath.Join(dir2, "pic.png"))
98+
if err != nil {
99+
t.Fatalf("read saved file (trailing separator): %v", err)
100+
}
101+
if string(got2) != string(body) {
102+
t.Fatalf("saved bytes (trailing separator) = %v, want %v", got2, body)
103+
}
104+
}
105+
63106
func TestDownloadToStdout(t *testing.T) {
64107
body := []byte("RAWBYTES")
65108
srv := downloadServer(t, body, 0)

0 commit comments

Comments
 (0)