func NewCoverageReportFromState()

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
}