Skip to content

Commit 17a89a9

Browse files
mbrandonwmluisbrown
authored andcommitted
ReducerProtocol (#1283)
* Add previewValue to DependencyKey, and fixed build errors on Xcode 13. * wip * wip * wip * wip * wip * wip * wip * wip * wip * Add Xcode 14 to CI (#1266) * Add Xcode 14 to CI * Update ci.yml * wip * wip * Update Makefile * Update Makefile * wip * runtime warning when no live dependency available for live app * bring back live * wip * soft deprecate Reducer * fusion test * ternary clean up * wip * add some todos * typealias Reducer inside AnyReducer * Add `now` convenience property to date dependency (#1286) * Remove type alias * LiveDependencyKey: DependencyKey -> DependencyKey: TestDependencyKey (#1288) * LiveDependencyKey: DependencyKey -> DependencyKey: TestDependencyKey * wip * wip * wip * wip * wip * fix * wip * fix navigate case studies * wip * fixes and docs * more migration * wip * wip * thread deps through ifLet and forEach examples. * update * clean up * wip * wip * Update MigratingToReducerProtocols.md * wip * wip * docs * docs * fix some docs * Fix for CombineReducers compiler bug * wip * wip * wip * wip * todos for docs * Don't warn for overridden test dependencies (#1324) * Don't warn while setting test dependencies * wip * fix conflict * wip * Docs and deprecations * add binding info * wip * Add URL session * wip * wip * wip * wip * wip * wip * wip * wip * Don't run debug reducer in tests * wip * updated reducer debugging * Update UUID.swift (#1374) * wip * optional * added Self as default associatedtype value for TestDependencyKey.value (#1395) * added Self as default associatedtype value for TestDependencyKey.value * Update Tests/ComposableArchitectureTests/DependencyKeyTests.swift Co-authored-by: Brandon Williams <[email protected]> * Update example to set badge to the unread count (#1391) * Add store.finish(). * Fix warnings introduced in Xcode 14.1 (#1388) * Fix warnings introduced in Xcode 14.1 * wip * Conform dependency values to DependencyKey where convenient * fix * Fail if testValue is invoked without providing implementation (#1399) * Update example to set badge to the unread count (#1391) * Add store.finish(). * Fix the CaseStudies (UIKit) (#1392) * Fix warnings introduced in Xcode 14.1 (#1388) * Fix warnings introduced in Xcode 14.1 * wip * Fail when accessing testValue when one hasn't been provided. * wip * wip * wip * test Co-authored-by: Mark Adams <[email protected]> Co-authored-by: Maciek Czarnik <[email protected]> Co-authored-by: Stephen Celis <[email protected]> * Add DateGenerator.init(_ generate:) * Start running some tests in release config. (#1405) * Start running some tests in release config. * wip * wip * wip * wip * wip * Update Sources/ComposableArchitecture/Store.swift Co-authored-by: Thomas Grapperon <[email protected]> * wip * wip Co-authored-by: Thomas Grapperon <[email protected]> * added test that dependencies are transferred to effects * wip * self * clean up * simplify * fix * doc fixes * wip * fix * wip * wip * wip * fix * Run dependencies tests on CI. (#1408) * Run dependencies tests on CI. * wip * update makefile * wtf * more docs * more docs * wip * docs * wip * docs * wip * message tweaks * wip * docs and clean up * wip * wip * wip * wip * wip * wip * wip * wip * typo fix * docs clean up * doc fixes * cancel in progress * cancel in progress * no need to make recope release-only, and make more use of XCTAssert to get better release tests * fix test * Remove ActorIsolated from tests where it's not needed * fix test * wip * wip * Add a benchmark for dependency key writing. * fix test * make benchmark 5.7 compatible * iflet docs * more docs * dependency docs * rearrange * @dependency docs * docs * fix benchmark in 5.6 * doc fix * wip * wip * wip * wip * more docs * clean up * fix * wip * Fixes compilation on watchOS (#1423) Co-authored-by: Gunnar Herzog <[email protected]> * move deprecation * format * wip * Fix openURL * wip * wip * wip * wip * fix * Keep simple * Reducer.debug -> Reducer._printChanges We want to revisit some of these debugging APIs in the future, so let's keep them around, but underscore them to allow for more flexible evolution. * `ReducerProtocol.debug` -> `ReducerProtocol._printChanges` (#1426) * Reducer.debug -> Reducer._printChanges We want to revisit some of these debugging APIs in the future, so let's keep them around, but underscore them to allow for more flexible evolution. * Update DebugTests.swift * OpenURL fix for macCatalyst (#1429) * OpenURL fix for macCatalyst Fixes #1428. * Update Makefile * Correct typo in "Designing dependencies" chapter (#1430) protocol AudioPlayerClient should be a struct * fix * fix * protocol docc * docs * Typos (#1439) * remove unneeded internals * wip * Fix missing parameter in code sample (#1450) * typo fix * more docs for DependencyKeyWritingReducer * wip * wip * update readme * wip * update image * main actor * Added withValue, added docs and tests * public properties * cleaned up overload * changed reducer->feature in a bunch of spots of dependencies docs * add articles to readme * 6 * fix tests for swift 5.6 * tweak * tweak * Update ReducerProtocol.swift * wip * wip * docs update * docs for conforming dependency directly to DependencyKey * typo fix * performance article update * fixes * deprecate another effect timer API * link to migration doc in deprecation messages * make some tests that deal with line numbers less fragile * package.swift clean up * tweak to echos * remove docs at root, not in docs-out * remove todo * update WithViewStore.init deprecation message to explain and link to performance doc * Add back ReducerProtocolOf for 5.7.1 (#1444) * Add back ReducerProtocolOf for 5.7.1 * wip * Move scheme tests to matrix * streamline * try this * store.finish * wip * dependencies -> transformDependency * wip * wip * Compat * fix * preserve deps for combine publishers * Remove dump calls (#1460) * Fix compiler errors for library evolution. (#1443) * Fix compiler errors for library evolution. * wip * wip * work around ambiguous init * Revert "work around ambiguous init" This reverts commit 002a199d590f91d30af82c36c31dda15ea646c33. * fix ambiguity errors * remove _Observe for now * wip * wip * wip * longer timeout * more waiting * wip Co-authored-by: Stephen Celis <[email protected]> Co-authored-by: Ken Grigsby <[email protected]> Co-authored-by: Petr Sima <[email protected]> Co-authored-by: Mark Adams <[email protected]> Co-authored-by: Maciek Czarnik <[email protected]> Co-authored-by: Thomas Grapperon <[email protected]> Co-authored-by: Gunnar Herzog <[email protected]> Co-authored-by: Gunnar Herzog <[email protected]> Co-authored-by: Guttorm Aase <[email protected]> Co-authored-by: Julien Sagot <[email protected]> Co-authored-by: Jaanus Siim <[email protected]> (cherry picked from commit b8294b89d594fbd486c449b9f30203461e923145) # Conflicts: # .github/workflows/ci.yml # .github/workflows/documentation.yml # Examples/CaseStudies/SwiftUICaseStudies/00-Core.swift # Examples/CaseStudies/SwiftUICaseStudies/01-GettingStarted-Animations.swift # Examples/CaseStudies/SwiftUICaseStudies/02-Effects-Basics.swift # Examples/CaseStudies/SwiftUICaseStudies/02-Effects-Refreshable.swift # Examples/CaseStudies/SwiftUICaseStudies/02-Effects-Timers.swift # Examples/CaseStudies/SwiftUICaseStudies/02-Effects-WebSocket.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-Lists-LoadThenNavigate.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-Lists-NavigateAndLoad.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-LoadThenNavigate.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-NavigateAndLoad.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-Sheet-LoadThenPresent.swift # Examples/CaseStudies/SwiftUICaseStudies/03-Navigation-Sheet-PresentAndLoad.swift # Examples/CaseStudies/SwiftUICaseStudies/04-HigherOrderReducers-Lifecycle.swift # Examples/CaseStudies/SwiftUICaseStudies/04-HigherOrderReducers-ResuableOfflineDownloads/ReusableComponents-Download.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/01-GettingStarted-AnimationsTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/02-Effects-BasicsTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/02-Effects-RefreshableTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/02-Effects-TimersTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/02-Effects-WebSocketTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/04-HigherOrderReducers-LifecycleTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/04-HigherOrderReducers-ReusableFavoritingTests.swift # Examples/CaseStudies/SwiftUICaseStudiesTests/04-HigherOrderReducers-ReusableOfflineDownloadsTests.swift # Examples/CaseStudies/UIKitCaseStudies/CounterViewController.swift # Examples/CaseStudies/UIKitCaseStudies/ListsOfState.swift # Examples/CaseStudies/UIKitCaseStudies/LoadThenNavigate.swift # Examples/CaseStudies/UIKitCaseStudies/NavigateAndLoad.swift # Examples/CaseStudies/UIKitCaseStudies/RootViewController.swift # Examples/Search/SearchTests/SearchTests.swift # Examples/SpeechRecognition/SpeechRecognition/SpeechClient/Client.swift # Examples/SpeechRecognition/SpeechRecognition/SpeechClient/Unimplemented.swift # Examples/SpeechRecognition/SpeechRecognition/SpeechRecognition.swift # Examples/TicTacToe/tic-tac-toe/Package.swift # Examples/TicTacToe/tic-tac-toe/Sources/AppUIKit/AppViewController.swift # Examples/TicTacToe/tic-tac-toe/Sources/GameUIKit/GameViewController.swift # Examples/Todos/Todos/Todos.swift # Examples/Todos/Todos/TodosApp.swift # Examples/Todos/TodosTests/TodosTests.swift # Examples/VoiceMemos/VoiceMemos/RecordingMemo.swift # Examples/VoiceMemos/VoiceMemos/VoiceMemo.swift # Examples/VoiceMemos/VoiceMemos/VoiceMemos.swift # Examples/VoiceMemos/VoiceMemos/VoiceMemosApp.swift # Examples/VoiceMemos/VoiceMemosTests/VoiceMemosTests.swift # Package.swift # README.md # Sources/ComposableArchitecture/Debugging/ReducerDebugging.swift # Sources/ComposableArchitecture/Documentation.docc/Articles/GettingStarted.md # Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md # Sources/ComposableArchitecture/Effect.swift # Sources/ComposableArchitecture/Effects/Animation.swift # Sources/ComposableArchitecture/Effects/ConcurrencySupport.swift # Sources/ComposableArchitecture/Effects/Publisher/Timer.swift # Sources/ComposableArchitecture/Effects/SignalProducer.swift # Sources/ComposableArchitecture/Effects/TaskResult.swift # Sources/ComposableArchitecture/Internal/CurrentValueRelay.swift # Sources/ComposableArchitecture/Internal/Deprecations.swift # Sources/ComposableArchitecture/Internal/RuntimeWarnings.swift # Sources/ComposableArchitecture/Reducer/AnyReducer/AnyReducerSignpost.swift # Sources/ComposableArchitecture/Store.swift # Sources/ComposableArchitecture/SwiftUI/Alert.swift # Sources/ComposableArchitecture/SwiftUI/ConfirmationDialog.swift # Sources/ComposableArchitecture/SwiftUI/ForEachStore.swift # Sources/ComposableArchitecture/SwiftUI/SwitchStore.swift # Sources/ComposableArchitecture/SwiftUI/TextState.swift # Sources/ComposableArchitecture/SwiftUI/WithViewStore.swift # Sources/ComposableArchitecture/TestStore.swift # Sources/ComposableArchitecture/ViewStore.swift # Tests/ComposableArchitectureTests/BindingTests.swift # Tests/ComposableArchitectureTests/CompatibilityTests.swift # Tests/ComposableArchitectureTests/ComposableArchitectureTests.swift # Tests/ComposableArchitectureTests/DebugTests.swift # Tests/ComposableArchitectureTests/EffectCancellationTests.swift # Tests/ComposableArchitectureTests/EffectDebounceTests.swift # Tests/ComposableArchitectureTests/EffectDeferredTests.swift # Tests/ComposableArchitectureTests/EffectFailureTests.swift # Tests/ComposableArchitectureTests/EffectOperationTests.swift # Tests/ComposableArchitectureTests/EffectRunTests.swift # Tests/ComposableArchitectureTests/EffectTaskTests.swift # Tests/ComposableArchitectureTests/EffectTests.swift # Tests/ComposableArchitectureTests/EffectThrottleTests.swift # Tests/ComposableArchitectureTests/ReducerTests.swift # Tests/ComposableArchitectureTests/RuntimeWarningTests.swift # Tests/ComposableArchitectureTests/StoreTests.swift # Tests/ComposableArchitectureTests/TaskCancellationTests.swift # Tests/ComposableArchitectureTests/TaskResultTests.swift # Tests/ComposableArchitectureTests/TestStoreFailureTests.swift # Tests/ComposableArchitectureTests/TestStoreTests.swift # Tests/ComposableArchitectureTests/TimerTests.swift # Tests/ComposableArchitectureTests/ViewStoreTests.swift # Tests/ComposableArchitectureTests/WithViewStoreAppTest.swift
1 parent 8382f18 commit 17a89a9

File tree

266 files changed

+15158
-8087
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

266 files changed

+15158
-8087
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ on:
1010
- '*'
1111
workflow_dispatch:
1212

13+
concurrency:
14+
group: ci-${{ github.ref }}
15+
cancel-in-progress: true
16+
1317
jobs:
1418
library:
1519
runs-on: macos-12

.github/workflows/documentation.yml

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
- published
66
workflow_dispatch:
77

8+
concurrency:
9+
group: docs-${{ github.ref }}
10+
cancel-in-progress: true
11+
812
jobs:
913
build:
1014
runs-on: macos-12
@@ -58,42 +62,45 @@ jobs:
5862
rm -rf docs-out/.git;
5963
rm -rf docs-out/main;
6064
rm -rf docs-out/protocol-beta;
61-
git tag -l --sort=-v:refname | grep -e "\d\+\.\d\+.0" | tail -n +6 | xargs -I {} rm -rf docs-out/{};
65+
git tag -l --sort=-v:refname | grep -e "\d\+\.\d\+.0" | tail -n +6 | xargs -I {} rm -rf {};
6266
6367
for tag in $(echo "main"; echo "protocol-beta"; git tag -l --sort=-v:refname | grep -e "\d\+\.\d\+.0" | head -6);
6468
do
65-
echo "⏳ Generating documentation for "$tag" release.";
66-
6769
if [ -d "docs-out/$tag" ]
6870
then
6971
echo "✅ Documentation for "$tag" already exists.";
7072
else
73+
echo "⏳ Generating documentation for "$target" @ "$tag" release.";
74+
75+
for target in ComposableArchitecture Dependencies;
76+
do
7177
git checkout .;
7278
git checkout "$tag";
73-
mkdir -p Sources/ComposableArchitecture/Documentation.docc;
79+
mkdir -p Sources/"$target"/Documentation.docc;
7480
export DOCC_HTML_DIR="$(pwd)/swift-docc-render/dist";
7581
7682
rm -rf .build/symbol-graphs;
7783
mkdir -p .build/symbol-graphs;
7884
swift build \
79-
--target ComposableArchitecture \
85+
--target "$target" \
8086
-Xswiftc \
8187
-emit-symbol-graph \
8288
-Xswiftc \
8389
-emit-symbol-graph-dir \
8490
-Xswiftc \
8591
.build/symbol-graphs \
86-
&& swift-docc/.build/release/docc convert Sources/ComposableArchitecture/Documentation.docc \
87-
--fallback-display-name ComposableArchitecture \
92+
&& swift-docc/.build/release/docc convert Sources/"$target"/Documentation.docc \
93+
--fallback-display-name "$target" \
8894
--fallback-bundle-identifier co.pointfree.ComposableArchitecture \
8995
--fallback-bundle-version 0.0.0 \
9096
--additional-symbol-graph-dir \
9197
.build/symbol-graphs \
9298
--transform-for-static-hosting \
9399
--hosting-base-path /reactiveswift-composable-architecture/"$tag" \
94100
--output-path docs-out/"$tag" \
95-
&& echo "✅ Documentation generated for "$tag" release." \
96-
|| echo "⚠️ Documentation skipped for "$tag".";
101+
&& echo "✅ Documentation generated for "$target" @ "$tag" release." \
102+
|| echo "⚠️ Documentation skipped for "$target" @ "$tag".";
103+
done;
97104
fi;
98105
done
99106

.github/workflows/format.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
branches:
66
- master
77

8+
concurrency:
9+
group: format-${{ github.ref }}
10+
cancel-in-progress: true
11+
812
jobs:
913
swift_format:
1014
name: swift-format

ComposableArchitecture.xcworkspace/xcshareddata/xcschemes/ComposableArchitecture.xcscheme

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@
3939
ReferencedContainer = "container:">
4040
</BuildableReference>
4141
</TestableReference>
42+
<TestableReference
43+
skipped = "NO">
44+
<BuildableReference
45+
BuildableIdentifier = "primary"
46+
BlueprintIdentifier = "DependenciesTests"
47+
BuildableName = "DependenciesTests"
48+
BlueprintName = "DependenciesTests"
49+
ReferencedContainer = "container:">
50+
</BuildableReference>
51+
</TestableReference>
4252
</Testables>
4353
</TestAction>
4454
<LaunchAction
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1340"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "Dependencies"
18+
BuildableName = "Dependencies"
19+
BlueprintName = "Dependencies"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
<TestableReference
32+
skipped = "NO">
33+
<BuildableReference
34+
BuildableIdentifier = "primary"
35+
BlueprintIdentifier = "DependenciesTests"
36+
BuildableName = "DependenciesTests"
37+
BlueprintName = "DependenciesTests"
38+
ReferencedContainer = "container:">
39+
</BuildableReference>
40+
</TestableReference>
41+
</Testables>
42+
</TestAction>
43+
<LaunchAction
44+
buildConfiguration = "Debug"
45+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
46+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
47+
launchStyle = "0"
48+
useCustomWorkingDirectory = "NO"
49+
ignoresPersistentStateOnLaunch = "NO"
50+
debugDocumentVersioning = "YES"
51+
debugServiceExtension = "internal"
52+
allowLocationSimulation = "YES">
53+
</LaunchAction>
54+
<ProfileAction
55+
buildConfiguration = "Release"
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
debugDocumentVersioning = "YES">
60+
<MacroExpansion>
61+
<BuildableReference
62+
BuildableIdentifier = "primary"
63+
BlueprintIdentifier = "Dependencies"
64+
BuildableName = "Dependencies"
65+
BlueprintName = "Dependencies"
66+
ReferencedContainer = "container:">
67+
</BuildableReference>
68+
</MacroExpansion>
69+
</ProfileAction>
70+
<AnalyzeAction
71+
buildConfiguration = "Debug">
72+
</AnalyzeAction>
73+
<ArchiveAction
74+
buildConfiguration = "Release"
75+
revealArchiveInOrganizer = "YES">
76+
</ArchiveAction>
77+
</Scheme>

Examples/CaseStudies/CaseStudies.xcodeproj/project.pbxproj

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
CA0C0C4724B89BEC00CBDD8A /* 04-HigherOrderReducers-LifecycleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0C0C4624B89BEC00CBDD8A /* 04-HigherOrderReducers-LifecycleTests.swift */; };
1212
CA0C51FB245389CC00A04EAB /* 04-HigherOrderReducers-ReusableOfflineDownloadsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0C51FA245389CC00A04EAB /* 04-HigherOrderReducers-ReusableOfflineDownloadsTests.swift */; };
1313
CA25E5D224463AD700DA666A /* 01-GettingStarted-Bindings-Basics.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA25E5D124463AD700DA666A /* 01-GettingStarted-Bindings-Basics.swift */; };
14-
CA27C0B7245780CE00CB1E59 /* 02-Effects-SystemEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA27C0B6245780CE00CB1E59 /* 02-Effects-SystemEnvironment.swift */; };
1514
CA34170824A4E89500FAF950 /* 01-GettingStarted-AnimationsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA34170724A4E89500FAF950 /* 01-GettingStarted-AnimationsTests.swift */; };
1615
CA3E421F26B8337500581ABC /* 01-GettingStarted-FocusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA3E421E26B8337500581ABC /* 01-GettingStarted-FocusState.swift */; };
1716
CA3E4C5B24B4FA0E00447C0B /* 04-HigherOrderReducers-Lifecycle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA3E4C5A24B4FA0E00447C0B /* 04-HigherOrderReducers-Lifecycle.swift */; };
@@ -38,7 +37,7 @@
3837
CAF88E7324B8E26D00539345 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E7224B8E26D00539345 /* AppDelegate.swift */; };
3938
CAF88E7524B8E26D00539345 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E7424B8E26D00539345 /* RootView.swift */; };
4039
CAF88E7724B8E26E00539345 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CAF88E7624B8E26E00539345 /* Assets.xcassets */; };
41-
CAF88E8824B8E26E00539345 /* tvOSCaseStudiesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E8724B8E26E00539345 /* tvOSCaseStudiesTests.swift */; };
40+
CAF88E8824B8E26E00539345 /* FocusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E8724B8E26E00539345 /* FocusTests.swift */; };
4241
CAF88E9124B8E3AF00539345 /* ComposableArchitecture in Frameworks */ = {isa = PBXBuildFile; productRef = CAF88E9024B8E3AF00539345 /* ComposableArchitecture */; };
4342
CAF88E9324B8E3D000539345 /* Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E9224B8E3D000539345 /* Core.swift */; };
4443
CAF88E9524B8E4D500539345 /* FocusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF88E9424B8E4D500539345 /* FocusView.swift */; };
@@ -156,7 +155,6 @@
156155
CA0C0C4624B89BEC00CBDD8A /* 04-HigherOrderReducers-LifecycleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "04-HigherOrderReducers-LifecycleTests.swift"; sourceTree = "<group>"; };
157156
CA0C51FA245389CC00A04EAB /* 04-HigherOrderReducers-ReusableOfflineDownloadsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "04-HigherOrderReducers-ReusableOfflineDownloadsTests.swift"; sourceTree = "<group>"; };
158157
CA25E5D124463AD700DA666A /* 01-GettingStarted-Bindings-Basics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "01-GettingStarted-Bindings-Basics.swift"; sourceTree = "<group>"; };
159-
CA27C0B6245780CE00CB1E59 /* 02-Effects-SystemEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "02-Effects-SystemEnvironment.swift"; sourceTree = "<group>"; };
160158
CA34170724A4E89500FAF950 /* 01-GettingStarted-AnimationsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "01-GettingStarted-AnimationsTests.swift"; sourceTree = "<group>"; };
161159
CA3E421E26B8337500581ABC /* 01-GettingStarted-FocusState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "01-GettingStarted-FocusState.swift"; sourceTree = "<group>"; };
162160
CA3E4C5A24B4FA0E00447C0B /* 04-HigherOrderReducers-Lifecycle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "04-HigherOrderReducers-Lifecycle.swift"; sourceTree = "<group>"; };
@@ -186,7 +184,7 @@
186184
CAF88E7624B8E26E00539345 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
187185
CAF88E7E24B8E26E00539345 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
188186
CAF88E8324B8E26E00539345 /* tvOSCaseStudiesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = tvOSCaseStudiesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
189-
CAF88E8724B8E26E00539345 /* tvOSCaseStudiesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tvOSCaseStudiesTests.swift; sourceTree = "<group>"; };
187+
CAF88E8724B8E26E00539345 /* FocusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusTests.swift; sourceTree = "<group>"; };
190188
CAF88E9224B8E3D000539345 /* Core.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Core.swift; sourceTree = "<group>"; };
191189
CAF88E9424B8E4D500539345 /* FocusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusView.swift; sourceTree = "<group>"; };
192190
DC07231624465D1E003A8B65 /* 02-Effects-TimersTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "02-Effects-TimersTests.swift"; sourceTree = "<group>"; };
@@ -313,7 +311,7 @@
313311
CAF88E8624B8E26E00539345 /* tvOSCaseStudiesTests */ = {
314312
isa = PBXGroup;
315313
children = (
316-
CAF88E8724B8E26E00539345 /* tvOSCaseStudiesTests.swift */,
314+
CAF88E8724B8E26E00539345 /* FocusTests.swift */,
317315
);
318316
path = tvOSCaseStudiesTests;
319317
sourceTree = "<group>";
@@ -413,7 +411,6 @@
413411
CABC4F3826AEE00C00D5FA2C /* 02-Effects-Refreshable.swift */,
414412
DC89C45424465C44006900B9 /* 02-Effects-Timers.swift */,
415413
CA410EDF247A15FE00E41798 /* 02-Effects-WebSocket.swift */,
416-
CA27C0B6245780CE00CB1E59 /* 02-Effects-SystemEnvironment.swift */,
417414
DC89C45024462DE7006900B9 /* 03-Navigation-Lists-LoadThenNavigate.swift */,
418415
DC89C45224465451006900B9 /* 03-Navigation-Lists-NavigateAndLoad.swift */,
419416
DC89C448244618D5006900B9 /* 03-Navigation-LoadThenNavigate.swift */,
@@ -713,7 +710,7 @@
713710
isa = PBXSourcesBuildPhase;
714711
buildActionMask = 2147483647;
715712
files = (
716-
CAF88E8824B8E26E00539345 /* tvOSCaseStudiesTests.swift in Sources */,
713+
CAF88E8824B8E26E00539345 /* FocusTests.swift in Sources */,
717714
);
718715
runOnlyForDeploymentPostprocessing = 0;
719716
};
@@ -777,7 +774,6 @@
777774
DC89C44D244621A5006900B9 /* 03-Navigation-NavigateAndLoad.swift in Sources */,
778775
DC89C4442446111B006900B9 /* 01-GettingStarted-Counter.swift in Sources */,
779776
DCE63B71245CC0B90080A23D /* 04-HigherOrderReducers-Recursion.swift in Sources */,
780-
CA27C0B7245780CE00CB1E59 /* 02-Effects-SystemEnvironment.swift in Sources */,
781777
CAA9ADCA2446605B0003A984 /* 02-Effects-LongLiving.swift in Sources */,
782778
DC89C45124462DE7006900B9 /* 03-Navigation-Lists-LoadThenNavigate.swift in Sources */,
783779
DC89C45524465C44006900B9 /* 02-Effects-Timers.swift in Sources */,

0 commit comments

Comments
 (0)