psake / psake/PowerShellBuild

Design: precedence contract for a consumer-supplied PesterConfiguration (#83)

Ouverte
#156 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement wayfinder:grilling
Langage dominant
PowerShell
Étoiles
145
Forks
27
Merge moyen
10 h 16 min
PR mergées (30 j)
34

Description

Part of #120 (Phase 3 — API improvements). Blocks #83.

Question

When a consumer supplies their own [PesterConfiguration] object via $PSBPreference.Test.Configuration, what wins — their object, or the existing $PSBPreference.Test.* settings?

#83 raises this and leaves it open. It is the one genuinely undesigned item left in v1.0.0, and it defines public API surface that freezes at 1.0.0 — getting the precedence wrong is a breaking change to undo later.

Note: #120 previously pointed at "joshooaj's design in #80". That pointer is stale — #80 is a different, already-closed request about Output.Verbosity and Run.SkipRemainingOnFailure. There is no existing design to implement.

Open questions

  1. Precedence. Does the supplied object act as a base that $PSBPreference.Test.* overrides, or as a final say that PowerShellBuild only fills gaps in? A consumer who sets both and gets the opposite of what they expected is the failure mode to design against.
  2. Run.Path. PowerShellBuild computes the test path today. If the consumer sets Run.Path on their object, is it honored, ignored, or an error? The advanced surface permits multiple paths, which the current single-path model has no answer for.
  3. Opinionated defaults. Which settings does PowerShellBuild insist on regardless (code coverage output location, result file paths, CI-detection behavior) because the surrounding build tasks depend on them?
  4. Discoverability. If a supplied setting is silently overridden, how does the consumer find out? Silent override is the worst outcome — worse than an error.
  5. Pester 5 and 6. Test-PSBuildPester supports both majors and the #137 matrix verifies both. Does the configuration object surface differ between them in ways that affect the answer?

How to resolve

Conversation, not code — /grilling plus /domain-modeling. @joshooaj should be in it: they raised #83 and the design questions are theirs. A prototype of the merge logic is reasonable if the discussion stalls on something concrete.

Done when

The precedence contract is written down here in enough detail that #83 can be implemented without further design decisions.

Guide de contribution

Ouvrir le guide de contribution

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.

Piste de recherche

Commencez par lire #83 et les références à #120 et #137, puis utilisez /grilling et /domain-modeling comme demandé. Résolvez par la discussion les questions de précédence, de Run.Path, de valeurs par défaut, de découvrabilité et les différences entre Pester 5/6. C’est terminé lorsque le contrat de précédence est documenté ici avec suffisamment de détails pour que #83 puisse être implémenté sans autres décisions de conception.

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

Évaluation

Stack technique
powershell
Domaine
developer-experience, testing, tooling
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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