Commit Graph

437 Commits

Author SHA1 Message Date
Brandon Williams
f8386ccaa6 tests and possible fix 2025-10-14 14:56:47 -05:00
Brandon Williams
552e757b2c Remove mainActorNow tool where not needed. (#3788)
* Remove mainActorNow tool where not needed.

* wip
2025-10-08 20:18:34 -05:00
Stephen Celis
149fdf9c20 Use SPI docs instead of self-hosted (#3791)
* Use SPI docs instead of self-hosted

Fixes #3785.

* wip
2025-10-08 09:28:11 -07:00
Arsatius Regler
a851f820f3 Add support for naming tasks in .run effects (#3784)
* Add support for naming tasks in .run effects

* Cleanup

* fix

* typo

* wip

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2025-09-26 18:21:37 -07:00
Brandon Williams
acd9bb8a7c Allow store publisher to be used as async sequence. (#3763)
* Allow store publisher to be used as async sequence.

* Update StoreTests.swift

* Update publisher to use withState for currentState

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2025-08-29 12:01:32 -07:00
Brandon Williams
56389302ca Better way to detect cancellation. (#3755) 2025-08-22 13:42:53 -07:00
stephencelis
d2c1bfb585 Run swift-format 2025-08-22 20:28:21 +00:00
Stephen Celis
1da96de161 Fix retain cycle regression from 1.21 (#3756) 2025-08-22 13:27:15 -07:00
Ryan Carver
af60ed2d51 Add shouldNotifyObservers to ObservableState (#3751)
* add shouldNotifyObservers support to ObservableState

* update tests

* move shouldNotifyObservers logic into ObservationState

* fix test for macro change

* Fix test

* wip

* update xcode on ci

* wip

* wip

* wip

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2025-08-18 17:47:27 -07:00
Stephen Celis
af0a2c7408 Perception 2.0 (#3736)
* Perception 2.0

* wip

* wip

* wip

* wip

* wip

* Revert "wip"

This reverts commit c5d0a06017.

* wip
2025-07-30 11:16:38 -07:00
Stephen Celis
5cd90c330d Propagate current navigation path to cancellable publisher effects (#3728)
* Propagate navigation ID to escaping closure in cancellation.

* Add test

* wip

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2025-07-17 13:49:06 -07:00
Brandon Williams
6574de2396 Make our use of SwiftSyntax APIs more resilient to precompiled SwiftSyntax (#3694)
* Make our use of SwiftSyntax APIs more resilient to precompiled SwiftSyntax

* support 600 and 601"

* wip

* Make store isolation tests more resillient.
2025-05-27 11:52:20 -07:00
Brandon Williams
6d6f2b46f6 Isolate cancellation in root stores. (#3660)
* Isolate cancellation in root stores.

* clean up

* wip

* fix cancellation id prefix.

* wip
2025-05-07 11:12:23 -05:00
Stephen Celis
cf4177a222 Invalidate child store subscriptions (#3646)
* Cut off firehose when core is invalid.

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2025-04-07 14:57:25 -07:00
Stephen Celis
23eb5ac23a Remove outdated warning text (#3643)
Fixes #3545.
2025-04-02 14:19:31 -07:00
stephencelis
a36e28e345 Run swift-format 2025-04-01 23:53:03 +00:00
Stephen Celis
3927f26ed2 Store: ObservableObject (#3625)
* Add ObservableObject conformance and related tools.

* wip

* clean up

* wip

* Address flakiness?

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2025-04-01 16:52:34 -07:00
Luke Redpath
a6371b6552 Enable binding workaround in release builds (#3640)
* fix: Enable binding workaround in release builds

* Address flaky test

* Make flakey tests easier to troubleshoot

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2025-04-01 16:25:07 -07:00
Stephen Celis
471211842b Improve CI (#3641)
* Don't use xcbeautify

It doesn't output test failure info in Swift Testing.

* Force update

* wip

* wip

* try less quiet xcbeautify

* wip

* wip

* wip

* Update Examples/VoiceMemos/VoiceMemosTests/VoiceMemosTests.swift

* always skip release tests on Xcode <16

* wip

* wip
2025-04-01 14:34:11 -07:00
stephencelis
28f3c919a7 Run swift-format 2025-03-27 20:35:00 +00:00
Arnaud Dorgans
073610217a RootCore crash (#3638)
* fix crash deinit outside MainActor

* Alternative: Mark AnyCancellable closures as sendable.

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2025-03-27 13:34:28 -07:00
Stephen Celis
d4d1df8102 Store internals: Refactor RootStore/ToState to "Core" protocol composition (#3460)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* get rid of originating action

* wip

* wip

* Deprecate non-writable scopes

* Revert "Deprecate non-writable scopes"

This reverts commit 95570eb602.

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2025-03-26 17:24:11 -07:00
Brandon Williams
001d0e9b9e Cancel effects when root store deallocates (#3613)
* Cancel effects when root store deinits.

* Add test for uncached stores.

* wip

* wip

* wip

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2025-02-27 14:18:41 -08:00
Stephen Celis
cc52e99ecd Add gotcha for @Shared testing (#3607) 2025-02-21 22:47:22 -08:00
stephencelis
8d727d6193 Run swift-format 2025-01-07 04:58:33 +00:00
Pyry Jahkola
a7da60e621 Fix unit tests for Xcode 16 and older iOS destinations (#3537)
* Limit test case availability when using TestClock

* Use withLock with shared state

* Fix unit tests on iOS 16 and earlier

* Fix DEBUG-mode perception check test to cover iOS 17+

* Run iOS & macOS unit tests on Xcode 16.0
2025-01-06 20:57:40 -08:00
Stephen Celis
547d19c9dc Add Sharing dependency (#3517)
* wip

* wip

* remove old case study for shared notifications

* wip

* wip

* wip

* wip

* wip

* 1.17 migration guide

* basics migration guide

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-12-03 13:08:02 -06:00
Brandon Williams
333bc82e18 Add a test to document how 'task tree' cancellation happens. (#3499)
* Add a test to document how 'task tree' cancellation  happens.

* fix
2024-11-19 11:04:35 -05:00
Pyry Jahkola
69247baf7b Fix crash when cancelling subscription for custom PersistenceKey (#3494)
* Add crashing unit test for AppStorageKey subscription cancellation

* Fix double cancellation of Shared.Subscription
2024-11-14 11:14:20 -08:00
Brandon Williams
2170719d07 Fix race condition in FileStorageKey (#3479)
* Failing test for multiple mutations to file storage.

* wip

* wip

* fixes

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-11-12 18:38:35 -05:00
Dave Carrigan
a952dde0bf AppStorage: add support for Date values (#3470)
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-11-11 21:23:07 -08:00
Ryan Carver
59fdf28496 Shared state shows test change in the wrong action (#3455)
* test case showing shared action received in the wrong action

* mark testSharingWithDelegateAction with XCTTODO

* Add the version of testSharingWithDelegateAction that works today

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-10-22 13:50:26 -07:00
Kabir Oberai
56149436a3 Fix race conditions in CurrentValueRelay (#3447)
* Test

tweak test

tweaks

* Slow fix

* Fix test compilation

* nonrecursive lock

* back to os_lock

* undo renaming

* visibility

* Feedback

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-10-22 09:56:43 -07:00
Stephen Celis
fc5cbeec88 Infrastructure: Address concurrency warnings in tests (#3438)
* Infrastructure: Address concurrency warnings in tests

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-15 10:03:23 -07:00
mbrandonw
1aca801ee2 Run swift-format 2024-10-14 17:09:44 +00:00
Brandon Williams
2d0590bedd Clean up key path bitcasting. (#3411)
* Clean up key path bitcasting.

* wip

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-10-14 13:08:23 -04:00
Christopher Rex
4699a1e613 Add explicit @mainactor to NavigationLink initializer (#3430)
* Add explicit @MainActor to NavigationLink initializer

* Access Notification from within an explicit Task

Fixes the "Conformance of 'Notification' to 'Sendable' is unavailable" error

* Revert "Add explicit @MainActor to NavigationLink initializer"

This reverts commit d8cb0706c1.

* Add explicit @MainActor to NavigationLink initializer

* Update Examples/CaseStudies/SwiftUICaseStudies/03-Effects-LongLiving.swift

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

* Update swift-navigation dependency version to 2.2.2

* Discard changes to Examples/CaseStudies/CaseStudies.xcodeproj/project.pbxproj

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update ComposableArchitecture.xcworkspace/xcshareddata/swiftpm/Package.resolved

* Update Package@swift-6

* Fix tests

---------

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-09 16:57:34 -07:00
Stephen Celis
f9f3e3a4cb Use AnyHashableSendable from Concurrency Extras (#3428)
* Use `AnyHashableSendable` from Concurrency Extras

Rather than use an ad hoc implementation with an `AnyHashable` under the
hood that may not be concurrency safe, let's adopt the helper we added
to the Concurrency Extras packages.

* fix

* wip

* wip
2024-10-08 13:08:38 -07:00
Stephen Celis
61e3809a97 CI: Don't xcbeautify Swift Testing suites (#3425)
* wip

* benchmark update

* wip

* Add CI for benchmarks

* wip

* Update benchmark.yml

* Update benchmark.yml

* Delete Benchmarks/Benchmarks/swift-composable-architecture-benchmark/ Benchmarks.swift

* Update benchmark.yml

* Update benchmark.yml

* Update Benchmarks.swift

* wip

* Delete .github/workflows/benchmark.yml

* Update Benchmarks.swift

* Add slight delay for expected failure

Test expected failure is flakey, so hopefully will pass more
consistently now.

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-07 16:52:39 -07:00
stephencelis
e98d09b400 Run swift-format 2024-10-03 18:54:43 +00:00
Stephen Celis
4cd62511ab Update benchmarks target (#3424)
* wip

* benchmark update

* wip

* Rename  Benchmarks.swift to Benchmarks.swift

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2024-10-03 11:53:20 -07:00
Stephen Celis
85417e000e Update documentation and examples to use Swift Testing (#3413)
* Testing: Case Studies

* Testing: Search

* Testing: Speech Recognition

* Testing: SyncUps

* Project Settings

* Testing: TicTacToe

* Testing: Todos

* Testing: Voice Memos

* Update tutorials/docs

* fix

* Fixes

* wip

* Update ci.yml

* Update ci.yml

* Update ci.yml

* wip

* wip

* Quiet

* fix

* wip

* wip

* flaky

* wip

* wip

* fix
2024-10-02 16:28:33 -07:00
stephencelis
4c0866420f Run swift-format 2024-09-18 21:39:29 +00:00
mbrandonw
8013f1a72a Run swift-format 2024-09-12 17:49:35 +00:00
Brandon Williams
03ad0cce2d Bucket effect cancel IDs. (#3374)
* Bucket effect cancel IDs.

* wip

* wip

* remove cache reset

* wip

* wip

* wip
2024-09-12 13:48:39 -04:00
mbrandonw
5e9943d8cc Run swift-format 2024-09-10 18:13:25 +00:00
Brandon Williams
02292e70cf Improve CI jobs (#3357)
* Improve CI jobs.

* wip

* wip

* exclude

* more exclude

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* try out caching

* fix yml

* fix makefile syntax

* cache key

* wip

* fix

* wip

* wip

* boop

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* boop

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix visionos tests

* wip

* wip

* wip

* wip

* wip

* wip

* boop

* wip

* boop

* Update ci.yml

* Update Makefile

* Update Makefile

* clean up

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-09-10 14:11:47 -04:00
Mason Kim
71cfb1ef2d Existential any to protocol for Swift 6 (#3370)
* Apply existential any to protocol for Swift 6

* Update Package@swift-6.0.swift

* Update Package.swift

* Apply any to Macro.Type

* Apply any for the rest

* Applying the any keyword internally for typealias in a _KeyPath

* Undoing accidental syntax

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2024-09-10 08:01:24 -07:00
Brandon Williams
7c6fb26700 Address @Shared sendability. (#3329)
* Address @Shared sendability.

* Undo UncheckedSendable<UserDefaults>.

* clean up

* wip

* drop AnySendable.

* wip

* Address `Effect.throttle` sendability (#3325)

* Address effect cancellation sendability (#3326)

* Address effect cancellation sendability

* fix

* wip

* wip

* Separate SendableDefaultSubscript from DefaultSubscript.

* fix test

* drop escaping

* switch on swift 6 language mode

* xcode 16

* update test

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2024-09-06 16:28:23 -04:00
Brandon Williams
2c8b1c0cad Fix potential deadlock in Shared (#3356)
* Fixed shared deadlock.

* Fix deadlock>

* wip

* wip

* Improve test.
2024-09-06 12:11:40 -04:00