feat: initial goget release — modern IPv6-first download utility
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
//go:build linux || freebsd
|
||||
// +build linux freebsd
|
||||
|
||||
package sftp
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"codeberg.org/petrbalvin/goget/internal/core"
|
||||
"codeberg.org/petrbalvin/goget/internal/output"
|
||||
)
|
||||
|
||||
// TestSaveSFTPResume verifies the partial-progress sidecar for the
|
||||
// SFTP single-file path. The SFTP parallel workers don't read attr.Size
|
||||
// in the download loop, so Total is recorded as 0 (only Downloaded
|
||||
// is known reliably). A future enhancement could plumb totalSize
|
||||
// through sftpDownloadFile if more accurate accounting is needed.
|
||||
func TestSaveSFTPResume(t *testing.T) {
|
||||
tmp := t.TempDir()
|
||||
out := filepath.Join(tmp, "file.bin")
|
||||
|
||||
u, err := url.Parse("sftp://user@host:22/file.bin")
|
||||
if err != nil {
|
||||
t.Fatalf("parse URL: %v", err)
|
||||
}
|
||||
req := &core.DownloadRequest{
|
||||
URL: u,
|
||||
Output: out,
|
||||
}
|
||||
|
||||
saveSFTPResume(req, 12345)
|
||||
|
||||
meta, err := output.LoadResumeMetadata(out)
|
||||
if err != nil {
|
||||
t.Fatalf("LoadResumeMetadata: %v", err)
|
||||
}
|
||||
if meta == nil {
|
||||
t.Fatal("expected resume metadata, got nil")
|
||||
}
|
||||
if meta.Downloaded != 12345 {
|
||||
t.Errorf("Downloaded = %d, want 12345", meta.Downloaded)
|
||||
}
|
||||
if meta.URL != "sftp://user@host:22/file.bin" {
|
||||
t.Errorf("URL = %q", meta.URL)
|
||||
}
|
||||
// Total is 0 because the parallel worker doesn't read attr.Size;
|
||||
// the resume code path uses this as "size unknown" and works
|
||||
// regardless of Total.
|
||||
if meta.Total != 0 {
|
||||
t.Errorf("Total = %d, want 0 (size unknown for SFTP parallel workers)", meta.Total)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user