The netstandard2.0 public surface and dependencies are checked by nothing

Ouverte
#1,182 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
55/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
csharp

Piste de recherche

Commencez par Sources/AngouriMath/AngouriMath.csproj et la configuration du framework cible de UnitTests, puis lisez PublicApi.txt et KernelDependenciesTest pour comprendre les vérifications actuelles pour un seul TFM. Comparez les legs netstandard2.0 et net actuels, en utilisant EverythingBuild.yml comme contexte. Le travail est terminé lorsque l’API publique et les dépendances du kernel de chaque TFM sélectionné sont vérifiées, avec une couverture distincte de PublicApi.txt.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

UnitTests targets net10.0 only, so everything asserted about the public surface and about the
kernel's dependencies is asserted about one of the three target frameworks.

Sources/AngouriMath/AngouriMath.csproj builds netstandard2.0;net8.0;net10.0, and the legs differ
by construction:

  • Core/Serialization is #if NET8_0_OR_GREATER
  • GenericMath is Compile Removed below net7
  • netstandard2.0 carries System.Memory as a package rather than a framework reference

So PublicApi.txt records the net10.0 surface, and the netstandard2.0 public surface is checked by
nothing.
A member could be added to, or removed from, that leg without any test noticing.

This is #783's own objection — "unbuilt configurations rot silently" — arriving through the one
construct that issue permits. It closed as adopted; this is the piece it did not cover.

KernelDependenciesTest (#1181) has the same bound and says so in its own remarks: it asserts the
referenced assemblies of whichever framework UnitTests builds, which is why System.Memory appears
there as a framework reference and the netstandard2.0 package reference is invisible to it.

What would close this

A per-TFM check, and the cheap version is probably enough: multi-target UnitTests (or a small
second test project) at least across netstandard2.0 and the current net, and record one
PublicApi.txt per leg. That also gives KernelDependenciesTest its second column for free.

What is not being claimed

No defect has been observed on the netstandard2.0 leg. The point is that one could not be observed —
EverythingBuild.yml compiles it, which catches a build break, and nothing checks its surface or
its dependencies. Filed because two separate checks have now hit the same bound and both had to
record it as a limitation rather than test it.

Langage dominant
C#
Étoiles
831
Forks
79
Merge moyen
1 h 12 min
PR mergées (30 j)
518

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ASC-Community/AngouriMath

Toutes les issues de ASC-Community/AngouriMath

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.