mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2026-10-10 13:03:09 +08:00
61e535c965
* fix(189pc): preserve family transfer extension - Preserve the source extension in family-transfer temporary upload names. - Fall back to .transfer for extensionless source files. - Add unit coverage for extension handling. Co-authored-by: Codex <267193182+codex@users.noreply.github.com> * fix(189pc): include extension in upload progress key - Separate resumable upload state for identical content with different extensions. - Preserve resume behavior when only the temporary file name changes. - Add unit coverage for both cases. Co-authored-by: Codex <267193182+codex@users.noreply.github.com> --------- Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package _189pc
|
|
|
|
import (
|
|
"path"
|
|
"slices"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestFamilyTransferTempNamePreservesExtension(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
want string
|
|
}{
|
|
{name: "photo.jpg", want: ".jpg"},
|
|
{name: "PHOTO.PNG", want: ".PNG"},
|
|
{name: "archive.tar.gz", want: ".gz"},
|
|
{name: "no-extension", want: ".transfer"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := familyTransferTempName(tt.name)
|
|
if !strings.HasPrefix(got, "0") {
|
|
t.Fatalf("temporary name %q must start with 0", got)
|
|
}
|
|
if ext := path.Ext(got); ext != tt.want {
|
|
t.Fatalf("temporary name extension = %q, want %q", ext, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestUploadProgressKeysIncludeExtension(t *testing.T) {
|
|
jpgKeys := uploadProgressKeys("session", "same-md5", "photo.jpg")
|
|
txtKeys := uploadProgressKeys("session", "same-md5", "photo.txt")
|
|
retryKeys := uploadProgressKeys("session", "same-md5", "different-name.jpg")
|
|
|
|
if slices.Equal(jpgKeys, txtKeys) {
|
|
t.Fatal("files with different extensions must not share upload progress")
|
|
}
|
|
if !slices.Equal(jpgKeys, retryKeys) {
|
|
t.Fatal("files with the same session, MD5, and extension should share upload progress")
|
|
}
|
|
}
|