feat: initial goget release — modern IPv6-first download utility
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,61 @@
|
||||
//go:build linux || freebsd
|
||||
// +build linux freebsd
|
||||
|
||||
package webdav
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"codeberg.org/petrbalvin/goget/internal/core"
|
||||
"codeberg.org/petrbalvin/goget/internal/output"
|
||||
)
|
||||
|
||||
// TestSaveWebDAVResume verifies the partial-progress sidecar written
|
||||
// by streamWebDAVBody on context cancellation. The ETag and
|
||||
// Last-Modified headers are preserved so the next --resume attempt
|
||||
// can send a matching If-Range and either continue or restart
|
||||
// cleanly depending on the server's view of the file.
|
||||
func TestSaveWebDAVResume(t *testing.T) {
|
||||
tmp := t.TempDir()
|
||||
out := filepath.Join(tmp, "file.bin")
|
||||
|
||||
u, _ := url.Parse("webdav://host/file.bin")
|
||||
req := &core.DownloadRequest{
|
||||
URL: u,
|
||||
Output: out,
|
||||
Resume: true,
|
||||
}
|
||||
resumed := true
|
||||
|
||||
saveWebDAVResume(req, 8192, 1<<20, `"etag-abc"`, "Mon, 01 Jan 2026 00:00:00 GMT", resumed)
|
||||
|
||||
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 != 8192 {
|
||||
t.Errorf("Downloaded = %d, want 8192", meta.Downloaded)
|
||||
}
|
||||
if meta.Total != 1<<20 {
|
||||
t.Errorf("Total = %d, want %d", meta.Total, 1<<20)
|
||||
}
|
||||
if meta.ETag != `"etag-abc"` {
|
||||
t.Errorf("ETag = %q", meta.ETag)
|
||||
}
|
||||
if meta.LastModified != "Mon, 01 Jan 2026 00:00:00 GMT" {
|
||||
t.Errorf("LastModified = %q", meta.LastModified)
|
||||
}
|
||||
|
||||
// Resume=false must short-circuit the save.
|
||||
out2 := filepath.Join(tmp, "noresume.bin")
|
||||
req.Resume = false
|
||||
saveWebDAVResume(req, 4096, 1000, "", "", false)
|
||||
if _, err := output.LoadResumeMetadata(out2); err != nil {
|
||||
t.Fatalf("LoadResumeMetadata (noresume): %v", err)
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user