in tf/utils.go [168:207]
func NewCoverageReportFromState(state *tfjson.State, swaggerPath string) (coverage.CoverageReport, error) {
defer func() {
if r := recover(); r != nil {
logrus.Errorf("panic when producing coverage report from state: %+v", r)
}
}()
out := coverage.CoverageReport{
Coverages: make(map[string]*coverage.CoverageItem, 0),
}
if state == nil || state.Values == nil || state.Values.RootModule == nil || state.Values.RootModule.Resources == nil {
logrus.Warnf("new coverage report from state: state is nil")
return out, nil
}
for _, res := range state.Values.RootModule.Resources {
if res.Type != "azapi_resource" || res.Mode != tfjson.ManagedResourceMode {
continue
}
id := ""
if v, ok := res.AttributeValues["id"]; ok {
id = v.(string)
}
resourceType := ""
if v, ok := res.AttributeValues["type"]; ok {
resourceType = v.(string)
}
body, err := getBody(res.AttributeValues)
if err != nil {
return out, err
}
err = out.AddCoverageFromState(id, resourceType, body, swaggerPath)
if err != nil {
return out, err
}
}
return out, nil
}