func readStepsCompLit()

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
}