Tool tests fail under the Swift Build build system because `generate-manual` & `generate-docc-reference` are not built

Aperta Adatta ai principianti
#995 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

@rgoldberg ci sta già lavorando.

Dal 23/10/2026.

  • #996 di @rgoldberg — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
swift

Direzione di ricerca

Inizia leggendo il manifest del pacchetto, in cui sono dichiarati i due target di test e i prodotti eseguibili. Riproduci il problema con swift test --filter 'GenerateManualTests|GenerateDoccReferenceTests' con Swift 6.4, quindi conferma che ogni target di test dipenda dall’eseguibile che esegue. Il lavoro è completato quando i test mirati passano sia con il sistema di build Swift sia con il sistema di build nativo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

With Swift 6.4, whose swift build & swift test use the Swift Build build system by default, swift test fails every test in ArgumentParserGenerateManualTests & ArgumentParserGenerateDoccReferenceTests:

Caught error: Error Domain=NSCocoaErrorDomain Code=260 "The file “generate-manual” couldn’t be opened because there is no such file." UserInfo={NSFilePath=…/.build/out/Products/Debug/generate-manual, …}

The tests run the generate-manual & generate-docc-reference executables from the products directory, but no test target depends on them. The native build system happened to build every executable product anyway, but Swift Build builds only what the requested targets depend on, so the executables are never built.

Steps to reproduce (on a clean checkout, with Swift 6.4):

swift test --filter 'GenerateManualTests|GenerateDoccReferenceTests'

Workaround: build the tools before testing:

swift build --product generate-manual
swift build --product generate-docc-reference

Proposed fix: make each test target depend on the tool that it runs:

.testTarget(
  name: "ArgumentParserGenerateDoccReferenceTests",
  dependencies: ["ArgumentParserTestHelpers", "generate-docc-reference"],
  exclude: ["Snapshots"]),
.testTarget(
  name: "ArgumentParserGenerateManualTests",
  dependencies: ["ArgumentParserTestHelpers", "generate-manual"],
  exclude: ["Snapshots"]),

With this change, all 22 tests pass under both the Swift Build & native build systems.

Swift version: Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1), on macOS 27.0

Lingua principale
Swift
Stelle
3.8k
Fork
436
Merge medio
4g 11h
PR unite (30g)
2

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apple/swift-argument-parser

Tutte le issue di apple/swift-argument-parser

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.