Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .mdsf.json

This file was deleted.

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ Feedback, contributions and proposals are welcome.

> **Recent news**
>
> ✅ Preparing v2.5.0: new features, a few fixes (`EventuallyWithT`)
> ✅ Preparing v2.5.0: new features: support for synctest, NoFileDescriptorLeak for macos,
> plus a few fixes (`EventuallyWithT`, `Subset`).
>
> See also our [ROADMAP][doc-roadmap].

Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This policy outlines the commitment and practices of the go-openapi maintainers

| Version | Supported |
| ------- | ------------------ |
| 2.2.x | :white_check_mark: |
| 2.4.x | :white_check_mark: |

## Vulnerability checks in place

Expand Down
27 changes: 24 additions & 3 deletions codegen/internal/generator/doc_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func (d *DocGenerator) buildIndexDocument(docsByDomain iter.Seq2[string, model.D
}

doc.RefCount = len(doc.Index)
doc.Metrics = buildMetrics(docsByDomain)
doc.Metrics = d.buildMetrics(docsByDomain)
doc.QuickIndex = buildQuickIndex(docsByDomain)

return doc
Expand All @@ -209,7 +209,7 @@ func buildIndexEntries(docsByDomain iter.Seq2[string, model.Document]) []model.I
return entries
}

func buildMetrics(docsByDomain iter.Seq2[string, model.Document]) (metrics model.Metrics) {
func (d *DocGenerator) buildMetrics(docsByDomain iter.Seq2[string, model.Document]) (metrics model.Metrics) {
metrics.ByDomain = make(map[string]model.DomainMetrics)

for domain, doc := range docsByDomain {
Expand Down Expand Up @@ -240,7 +240,28 @@ func buildMetrics(docsByDomain iter.Seq2[string, model.Document]) (metrics model
metrics.ByDomain[domain] = domainMetrics
}

metrics.NonGenerics = metrics.Functions - metrics.Generics
metrics.NonGenerics = metrics.Assertions - metrics.Generics
variantsMultiplier := 1
genericsVariantsMultiplier := 1

if d.ctx.enableForward {
variantsMultiplier++
if d.ctx.enableFormat {
variantsMultiplier++
}
}

if d.ctx.enableFormat {
variantsMultiplier++
genericsVariantsMultiplier++
}

metrics.PackageVariants = metrics.NonGenerics*variantsMultiplier + metrics.Generics*genericsVariantsMultiplier

// caveat: assume 2 target packages (not really available from options atm).
const generatedPackages = 2
metrics.TotalVariants = generatedPackages * metrics.PackageVariants
metrics.TotalFunctions = generatedPackages * (metrics.PackageVariants + metrics.Helpers + 1) // add the Assertion constructor.

return metrics
}
Expand Down
21 changes: 12 additions & 9 deletions codegen/internal/generator/templates/doc_metrics.md.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,18 @@ All assertions are classified into **{{ .Domains }}** domains to help navigate t

## API metrics

Counts for core functionality, excluding variants (formatted, forward, forward-formatted).

| Kind | Count |
| ------------------------ | ----------------- |
| All functions | {{ .Functions }} |
| All core assertions | {{ .Assertions }} |
| Generic assertions | {{ .Generics }} |
| Helpers (not assertions) | {{ .Helpers }} |
| Others | {{ .Others }} |
Counts for core functionality, and generated variants (formatted, forward, forward-formatted).

| Kind | Count | Note |
| ------------------------- | ----------------- | ---- |
| All core functions | {{ .Functions }} | Maintained core |
| All core assertions | {{ .Assertions }} | Usage with `*testing.T` |
| Generic assertions | {{ .Generics }} | Type-safe assertions ("T" suffix) |
| Helpers (not assertions) | {{ .Helpers }} | General-purpose utilities, not assertions |
| Others | {{ .Others }} | |
| assert/require variants | {{ .PackageVariants }} | Generated variants |
| Total assertions variants | {{ .TotalVariants }} | Available assertions API |
| Total API surface | {{ .TotalFunctions }} | |

{{- end }}

Expand Down
19 changes: 11 additions & 8 deletions codegen/internal/model/documentation.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,17 @@ type IndexEntry struct {

//nolint:tagliatelle // not using camelcase
type Metrics struct {
Domains int `yaml:"domains"`
Functions int `yaml:"functions"`
Assertions int `yaml:"assertions"`
Generics int `yaml:"generics"`
NonGenerics int `yaml:"nongeneric_assertions"`
Helpers int `yaml:"helpers"`
Others int `yaml:"others"`
ByDomain map[string]DomainMetrics `yaml:"by_domain"`
Domains int `yaml:"domains"`
Functions int `yaml:"functions"`
Assertions int `yaml:"assertions"`
Generics int `yaml:"generics"`
NonGenerics int `yaml:"nongeneric_assertions"`
Helpers int `yaml:"helpers"`
Others int `yaml:"others"`
ByDomain map[string]DomainMetrics `yaml:"by_domain"`
PackageVariants int `yaml:"package_variants"`
TotalVariants int `yaml:"total_variants"`
TotalFunctions int `yaml:"total_functions"`
}

type DomainMetrics struct {
Expand Down
19 changes: 11 additions & 8 deletions docs/doc-site/api/metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,18 @@ All assertions are classified into **19** domains to help navigate the API, depe

## API metrics

Counts for core functionality, excluding variants (formatted, forward, forward-formatted).
Counts for core functionality, and generated variants (formatted, forward, forward-formatted).

| Kind | Count |
| ------------------------ | ----------------- |
| All functions | 135 |
| All core assertions | 131 |
| Generic assertions | 50 |
| Helpers (not assertions) | 4 |
| Others | 0 |
| Kind | Count | Note |
| ------------------------- | ----------------- | ---- |
| All core functions | 135 | Maintained core |
| All core assertions | 131 | Usage with `*testing.T` |
| Generic assertions | 50 | Type-safe assertions ("T" suffix) |
| Helpers (not assertions) | 4 | General-purpose utilities, not assertions |
| Others | 0 | |
| assert/require variants | 424 | Generated variants |
| Total assertions variants | 848 | Available assertions API |
| Total API surface | 858 | |

## Quick index

Expand Down
11 changes: 5 additions & 6 deletions docs/doc-site/project/maintainers/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ All these variants make up several hundreds functions, which poses a challenge f

We have adopted code and documentation generation as a mean to mitigate this issue.

#### Current (v2.3.0-unreleased)
#### Current (v2.5.0-unreleased)

1. Generic assertions (with type parameters): {{% siteparam "metrics.generics" %}} functions
2. Non-generic assertions (with t T parameter, no type parameters): {{% siteparam "metrics.nongeneric_assertions" %}} functions
Expand All @@ -65,12 +65,11 @@ We have adopted code and documentation generation as a mean to mitigate this iss

**Generated Functions**

1. Generic assertions: {{% siteparam "metrics.generated_generic" %}}
2. Non-generic assertions: {{% siteparam "metrics.generated_nongeneric" %}}
3. Helper functions: {{% siteparam "metrics.generated_helpers" %}}
4. Constructors: 2
1. Generated variants in each package (assert/require): {{% siteparam "metrics.package_variants" %}}
2. Helpers: {{% siteparam "metrics.helpers" %}}
3. Constructors: 2 (1 in assert, 1 in require)

Total: {{% siteparam "metrics.generated_total" %}} functions
Overall: {{% siteparam "metrics.total_functions" %}} generated functions

## Architecture Overview

Expand Down
5 changes: 4 additions & 1 deletion hack/doc-site/hugo/metrics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ params:
functions: 135
assertions: 131
generics: 50
nongeneric_assertions: 85
nongeneric_assertions: 81
helpers: 4
others: 0
by_domain:
Expand Down Expand Up @@ -65,3 +65,6 @@ params:
yaml:
name: Yaml
count: 5
package_variants: 424
total_variants: 848
total_functions: 858
Loading