feat: initial goget release — modern IPv6-first download utility

This commit is contained in:
2026-06-26 21:21:58 +02:00
commit 53db81e1f7
147 changed files with 45931 additions and 0 deletions
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