diff --git a/parser/metadecoders/decoder.go b/parser/metadecoders/decoder.go index a31bcd5cd..3f322ad92 100644 --- a/parser/metadecoders/decoder.go +++ b/parser/metadecoders/decoder.go @@ -112,7 +112,7 @@ func (d Decoder) UnmarshalStringTo(data string, typ any) (any, error) { // Unmarshal will unmarshall data in format f into an interface{}. // This is what's needed for Hugo's /data handling. func (d Decoder) Unmarshal(data []byte, f Format) (any, error) { - if data == nil || len(data) == 0 { + if len(data) == 0 { switch f { case CSV: return make([][]string, 0), nil diff --git a/parser/metadecoders/decoder_test.go b/parser/metadecoders/decoder_test.go index fbeab41a4..5e917beff 100644 --- a/parser/metadecoders/decoder_test.go +++ b/parser/metadecoders/decoder_test.go @@ -116,22 +116,23 @@ func TestUnmarshalToInterface(t *testing.T) { d := Default for i, test := range []struct { - data string + data []byte format Format expect any }{ - {`[ "Brecker", "Blake", "Redman" ]`, JSON, []any{"Brecker", "Blake", "Redman"}}, - {`{ "a": "b" }`, JSON, expect}, - {``, JSON, map[string]any{}}, - {`#+a: b`, ORG, expect}, - {`#+DATE: <2020-06-26 Fri>`, ORG, map[string]any{"date": "2020-06-26"}}, - {`a = "b"`, TOML, expect}, - {`a: "b"`, YAML, expect}, - {`b`, XML, expect}, - {`a,b,c`, CSV, [][]string{{"a", "b", "c"}}}, - {"a: Easy!\nb:\n c: 2\n d: [3, 4]", YAML, map[string]any{"a": "Easy!", "b": map[string]any{"c": 2, "d": []any{3, 4}}}}, + {[]byte(`[ "Brecker", "Blake", "Redman" ]`), JSON, []any{"Brecker", "Blake", "Redman"}}, + {[]byte(`{ "a": "b" }`), JSON, expect}, + {[]byte(``), JSON, map[string]any{}}, + {[]byte(nil), JSON, map[string]any{}}, + {[]byte(`#+a: b`), ORG, expect}, + {[]byte(`#+DATE: <2020-06-26 Fri>`), ORG, map[string]any{"date": "2020-06-26"}}, + {[]byte(`a = "b"`), TOML, expect}, + {[]byte(`a: "b"`), YAML, expect}, + {[]byte(`b`), XML, expect}, + {[]byte(`a,b,c`), CSV, [][]string{{"a", "b", "c"}}}, + {[]byte("a: Easy!\nb:\n c: 2\n d: [3, 4]"), YAML, map[string]any{"a": "Easy!", "b": map[string]any{"c": 2, "d": []any{3, 4}}}}, // errors - {`a = "`, TOML, false}, + {[]byte(`a = "`), TOML, false}, } { msg := qt.Commentf("%d: %s", i, test.format) m, err := d.Unmarshal([]byte(test.data), test.format)