in coverage/report.go [155:287]
func getReport(displayName string, model *Model) []string {
out := make([]string, 0)
style := getStyle(model.IsFullyCovered)
if hasNoDetail(model) {
// leaf property
out = append(out,
fmt.Sprintf(`<!-- %[1]v -->
<details>
<summary><span%[2]v>%[3]v</span></summary>
</details>`, model.Identifier, style, displayName),
)
return out
}
if isBoolEnumDisplayed {
if model.Enum != nil {
for k, isCovered := range *model.Enum {
out = append(out, getEnumBoolReport(k, isCovered))
}
return out
}
if model.Bool != nil {
for k, isCovered := range *model.Bool {
out = append(out, getEnumBoolReport(fmt.Sprintf("%v", k), isCovered))
}
return out
}
}
if model.Item != nil {
return getReport(displayName, model.Item)
}
if model.Properties != nil {
for k, v := range *model.Properties {
if v.IsReadOnly {
continue
}
if v.Item != nil && v.Item.IsReadOnly {
continue
}
if v.Variants != nil {
variantType := v.ModelName
if v.VariantType != nil {
variantType = *v.VariantType
}
variantKey := getDiscriminatorKey(k, variantType)
out = append(out, getReport(variantKey, v)...)
for variantType, variant := range *v.Variants {
variantType := variantType
if variant.VariantType != nil {
variantType = *variant.VariantType
}
variantKey := getDiscriminatorKey(k, variantType)
out = append(out, getReport(variantKey, variant)...)
}
continue
}
if v.Item != nil && v.Item.Variants != nil {
variantType := v.Item.ModelName
if v.Item.VariantType != nil {
variantType = *v.Item.VariantType
}
variantKey := getDiscriminatorKey(k, variantType)
out = append(out, getReport(variantKey, v)...)
for variantType, variant := range *v.Item.Variants {
variantType := variantType
if variant.VariantType != nil {
variantType = *variant.VariantType
}
variantKey := getDiscriminatorKey(k, variantType)
out = append(out, getReport(variantKey, variant)...)
}
continue
}
out = append(out, getReport(k, v)...)
}
}
sort.Strings(out)
outWithoutVariant := []string{
fmt.Sprintf(`<!-- %[1]v -->
<details>
<summary><span%[2]v>%[3]v %[4]v</span></summary>
<blockquote>
%[5]v
</blockquote>
</details>`, model.Identifier, style, displayName, getCoverageCount(model), strings.Join(out, "\n\n")),
}
if model.IsRoot {
var variants *map[string]*Model
if model.Variants != nil {
variants = model.Variants
}
if model.Item != nil && model.Item.Variants != nil {
variants = model.Item.Variants
}
if variants != nil {
outWithVariant := make([]string, 0)
outWithVariant = append(outWithVariant, outWithoutVariant...)
for variantType, variant := range *variants {
variantType := variantType
if variant.VariantType != nil {
variantType = *variant.VariantType
}
variantKey := getDiscriminatorKey(displayName, variantType)
outWithVariant = append(outWithVariant, getReport(variantKey, variant)...)
}
sort.Strings(outWithVariant)
return outWithVariant
}
}
return outWithoutVariant
}