in tools/test-reader/reader/reader.go [211:245]
func readStepsCompLit(stepsCompLit *ast.CompositeLit, funcDecls map[string]*ast.FuncDecl, varDecls map[string]*ast.BasicLit) (*Test, error) {
test := &Test{}
errs := make([]error, 0)
for _, elt := range stepsCompLit.Elts {
if eltCompLit, ok := elt.(*ast.CompositeLit); ok {
for _, eltCompLitElt := range eltCompLit.Elts {
if keyValueExpr, ok := eltCompLitElt.(*ast.KeyValueExpr); ok {
if ident, ok := keyValueExpr.Key.(*ast.Ident); ok && ident.Name == "Config" {
var configStr string
var err error
if configCallExpr, ok := keyValueExpr.Value.(*ast.CallExpr); ok {
configStr, err = readConfigCallExpr(configCallExpr, funcDecls, varDecls)
} else if ident, ok := keyValueExpr.Value.(*ast.Ident); ok {
if configVar, ok := varDecls[ident.Name]; ok {
configStr, err = strconv.Unquote(configVar.Value)
}
}
if err != nil {
errs = append(errs, err)
}
step, err := readConfigStr(configStr)
if err != nil {
errs = append(errs, err)
}
test.Steps = append(test.Steps, step)
}
}
}
}
}
if len(errs) > 0 {
return test, fmt.Errorf("errors reading test steps: %v", errs)
}
return test, nil
}