swiftlang / swift-package-manager

The Package Manager for the Swift Programming Language
Apache License 2.0
9.72k stars 1.34k forks source link

Using Testing makes whole package rebuild after each change from run to debug mode inside tests #7710

Closed machineko closed 2 months ago

machineko commented 3 months ago
Executing task: swift: Building and Running Tests 

> swift test  --enable-experimental-swift-testing --experimental-event-stream-version 0 --experimental-event-stream-output /tmp/vscodemkfifo-1718907655582 --disable-xctest --filter RebuildTest\.DeviceTest\/ -Xswiftc -diagnostic-style=swift -Xswiftc -cxx-interoperability-mode=default

Building for debugging...
[8/8]
Build complete! (0.11s)
....
✔ Test run with 3 tests passed after 0.149 seconds.
true
 *  Terminal will be reused by tasks, press any key to close it. 

 *  Executing task: swift: Build All 

> swift build --build-tests -Xswiftc -diagnostic-style=swift -Xswiftc -cxx-interoperability-mode=default
Building for debugging...
[14/369]

To Reproduce Use any Testing project run test, after it finish run debug on the same test.

Expected behavior No rebuilding with every run (debugging tests shouldn't use .xctest?)

Environment

plemarquand commented 3 months ago

After digging in to this a bit it looks like swift build --build-tests is not passing the -DSWIFT_PM_SUPPORTS_SWIFT_TESTING flag like swift test is. This difference in build arguments is causing a rebuild.

I'm going to move this issue under https://github.com/apple/swift-package-manager/ once it is migrated to the swiftlang organization (hopefully soon).

plemarquand commented 3 months ago

So the SWIFT_PM_SUPPORTS_SWIFT_TESTING flag can soon be removed from SwiftPM since swift-testing no longer requires it. This became the case with the removal of 5.10 support in swift-testing: https://github.com/apple/swift-testing/pull/467. Once a swift-testing 0.11.0 is tagged the flag can be removed from SwiftPM and this usecase should speed up.

grynspan commented 2 months ago

Resolved with #7766.