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
+6 -2
View File
@@ -732,12 +732,16 @@ func (f *FileField) toSliceValue(raw any) []any {
case nil: case nil:
// nothing to cast // nothing to cast
case *filesystem.File: case *filesystem.File:
result = append(result, value) if value != nil {
result = append(result, value)
}
case filesystem.File: case filesystem.File:
result = append(result, &value) result = append(result, &value)
case []*filesystem.File: case []*filesystem.File:
for _, v := range value { for _, v := range value {
result = append(result, v) if v != nil {
result = append(result, v)
}
} }
case []filesystem.File: case []filesystem.File:
for _, v := range value { for _, v := range value {
+6 -2
View File
@@ -103,6 +103,8 @@ func TestFileFieldPrepareValue(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
var nilFile *filesystem.File
scenarios := []struct { scenarios := []struct {
raw any raw any
field *core.FileField field *core.FileField
@@ -114,8 +116,9 @@ func TestFileFieldPrepareValue(t *testing.T) {
{123, &core.FileField{MaxSelect: 1}, `"123"`}, {123, &core.FileField{MaxSelect: 1}, `"123"`},
{"a", &core.FileField{MaxSelect: 1}, `"a"`}, {"a", &core.FileField{MaxSelect: 1}, `"a"`},
{`["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)},
{*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
{nilFile, &core.FileField{MaxSelect: 1}, `""`},
{[]string{}, &core.FileField{MaxSelect: 1}, `""`}, {[]string{}, &core.FileField{MaxSelect: 1}, `""`},
{[]string{"a", "b"}, &core.FileField{MaxSelect: 1}, `"b"`}, {[]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"]`},
{`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`}, {`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`},
{[]any{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`}, {[]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) + `]`},
{[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]any{nilFile, f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
{[]string{}, &core.FileField{MaxSelect: 2}, `[]`}, {[]string{}, &core.FileField{MaxSelect: 2}, `[]`},
{[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`}, {[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`},
} }