allow passing noninitialized *filesystem.File values

This commit is contained in:
Gani Georgiev
2026-07-22 23:11:29 +03:00
parent 0cbfc046c7
commit 9f32dfa7ba
2 changed files with 12 additions and 4 deletions

View File

@@ -732,12 +732,16 @@ func (f *FileField) toSliceValue(raw any) []any {
case nil:
// nothing to cast
case *filesystem.File:
result = append(result, value)
if value != nil {
result = append(result, value)
}
case filesystem.File:
result = append(result, &value)
case []*filesystem.File:
for _, v := range value {
result = append(result, v)
if v != nil {
result = append(result, v)
}
}
case []filesystem.File:
for _, v := range value {

View File

@@ -103,6 +103,8 @@ func TestFileFieldPrepareValue(t *testing.T) {
t.Fatal(err)
}
var nilFile *filesystem.File
scenarios := []struct {
raw any
field *core.FileField
@@ -114,8 +116,9 @@ func TestFileFieldPrepareValue(t *testing.T) {
{123, &core.FileField{MaxSelect: 1}, `"123"`},
{"a", &core.FileField{MaxSelect: 1}, `"a"`},
{`["a"]`, &core.FileField{MaxSelect: 1}, `"a"`},
{*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
{f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
{*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
{nilFile, &core.FileField{MaxSelect: 1}, `""`},
{[]string{}, &core.FileField{MaxSelect: 1}, `""`},
{[]string{"a", "b"}, &core.FileField{MaxSelect: 1}, `"b"`},
@@ -126,8 +129,9 @@ func TestFileFieldPrepareValue(t *testing.T) {
{"a", &core.FileField{MaxSelect: 2}, `["a"]`},
{`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`},
{[]any{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]filesystem.File{*f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]any{nilFile, f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]string{}, &core.FileField{MaxSelect: 2}, `[]`},
{[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`},
}