diff --git a/pkg/tsdb/testdatasource/scenarios.go b/pkg/tsdb/testdatasource/scenarios.go index 308132acc87..f02a218fe39 100644 --- a/pkg/tsdb/testdatasource/scenarios.go +++ b/pkg/tsdb/testdatasource/scenarios.go @@ -334,14 +334,15 @@ func csvToFieldValues(stringInput string) (*data.Field, error) { return nil, fmt.Errorf("csv must have at least one value") } - first := parts[0] - if first == "T" || first == "F" { + first := strings.ToUpper(parts[0]) + if first == "T" || first == "F" || first == "TRUE" || first == "FALSE" { field := data.NewFieldFromFieldType(data.FieldTypeNullableBool, len(parts)) for idx, strVal := range parts { - if strVal == "null" || strVal == "" { + strVal = strings.ToUpper(strVal) + if strVal == "NULL" || strVal == "" { continue } - field.SetConcrete(idx, strVal == "T") + field.SetConcrete(idx, strVal == "T" || strVal == "TRUE") } return field, nil } diff --git a/pkg/tsdb/testdatasource/scenarios_test.go b/pkg/tsdb/testdatasource/scenarios_test.go index 591a00128d8..5e32273fbd0 100644 --- a/pkg/tsdb/testdatasource/scenarios_test.go +++ b/pkg/tsdb/testdatasource/scenarios_test.go @@ -268,13 +268,16 @@ func TestReadCSV(t *testing.T) { fBool, err := csvToFieldValues("T, F,F,T ,") require.NoError(t, err) + fBool2, err := csvToFieldValues("true,false,T,F,F") + require.NoError(t, err) + fNum, err := csvToFieldValues("1,2,,4,5") require.NoError(t, err) fStr, err := csvToFieldValues("a,b,,,c") require.NoError(t, err) - frame := data.NewFrame("", fBool, fNum, fStr) + frame := data.NewFrame("", fBool, fBool2, fNum, fStr) out, err := data.FrameToJSON(frame, true, true) require.NoError(t, err) @@ -282,12 +285,14 @@ func TestReadCSV(t *testing.T) { require.JSONEq(t, `{"schema":{ "fields":[ + {"type":"boolean","typeInfo":{"frame":"bool","nullable":true}}, {"type":"boolean","typeInfo":{"frame":"bool","nullable":true}}, {"type":"number","typeInfo":{"frame":"float64","nullable":true}}, {"type":"string","typeInfo":{"frame":"string","nullable":true}} ]},"data":{ "values":[ [true,false,false,true,null], + [true,false,true,false,false], [1,2,null,4,5], ["a","b",null,null,"c"] ]}}`, string(out))