Design: precedence contract for a consumer-supplied PesterConfiguration (#83)
まだ誰も着手していません。
- 主要言語
- PowerShell
- スター
- 145
- フォーク
- 27
- 平均マージ
- 10時間 16分
- マージ済み PR(30日)
- 34
説明
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.VerbosityandRun.SkipRemainingOnFailure. There is no existing design to implement.
Open questions
- 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. Run.Path. PowerShellBuild computes the test path today. If the consumer setsRun.Pathon 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.- 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?
- Discoverability. If a supplied setting is silently overridden, how does the consumer find out? Silent override is the worst outcome — worse than an error.
- Pester 5 and 6.
Test-PSBuildPestersupports 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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず #83 と #120 および #137 への参照を読み、次に要求されているとおり /grilling と /domain-modeling を使用します。優先順位、Run.Path、デフォルト、見つけやすさ、Pester 5/6 の違いを、議論を通じて解決します。#83 を追加の設計判断なしで実装できる十分な詳細で、優先順位の契約がここに文書化されていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- powershell
- 領域
- developer-experience, testing, tooling
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 活発
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 35/100