Skip to content

Commit 31f8d04

Browse files
authored
Introduce 'Record Snapshots' scheme (CreateAPI#129)
1 parent 74da956 commit 31f8d04

File tree

4 files changed

+341
-7
lines changed

4 files changed

+341
-7
lines changed

.gitignore

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
# Default ignores (run `swift package init` to compare)
12
.DS_Store
2-
/.build
3+
.build
34
/Packages
4-
/Tests/CreateAPITests/Expected/*/Package.resolved
55
/*.xcodeproj
66
xcuserdata/
77
DerivedData/
8-
.swiftpm/
8+
.swiftpm/config/registries.json
99
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
10-
.build/
10+
.netrc
11+
12+
# Custom ignores
13+
/Tests/Support/Snapshots/**/Package.resolved
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1320"
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 = "CreateAPI_create-api-tests"
18+
BuildableName = "CreateAPI_create-api-tests"
19+
BlueprintName = "CreateAPI_create-api-tests"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "YES"
27+
buildForArchiving = "YES"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "create-api"
32+
BuildableName = "create-api"
33+
BlueprintName = "create-api"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
<BuildActionEntry
38+
buildForTesting = "YES"
39+
buildForRunning = "YES"
40+
buildForProfiling = "NO"
41+
buildForArchiving = "NO"
42+
buildForAnalyzing = "YES">
43+
<BuildableReference
44+
BuildableIdentifier = "primary"
45+
BlueprintIdentifier = "create-api-tests"
46+
BuildableName = "create-api-tests"
47+
BlueprintName = "create-api-tests"
48+
ReferencedContainer = "container:">
49+
</BuildableReference>
50+
</BuildActionEntry>
51+
<BuildActionEntry
52+
buildForTesting = "YES"
53+
buildForRunning = "YES"
54+
buildForProfiling = "YES"
55+
buildForArchiving = "YES"
56+
buildForAnalyzing = "YES">
57+
<BuildableReference
58+
BuildableIdentifier = "primary"
59+
BlueprintIdentifier = "OptionsGenerator"
60+
BuildableName = "OptionsGenerator"
61+
BlueprintName = "OptionsGenerator"
62+
ReferencedContainer = "container:">
63+
</BuildableReference>
64+
</BuildActionEntry>
65+
<BuildActionEntry
66+
buildForTesting = "YES"
67+
buildForRunning = "YES"
68+
buildForProfiling = "YES"
69+
buildForArchiving = "YES"
70+
buildForAnalyzing = "YES">
71+
<BuildableReference
72+
BuildableIdentifier = "primary"
73+
BlueprintIdentifier = "CreateAPIPlugin"
74+
BuildableName = "CreateAPIPlugin"
75+
BlueprintName = "CreateAPIPlugin"
76+
ReferencedContainer = "container:">
77+
</BuildableReference>
78+
</BuildActionEntry>
79+
<BuildActionEntry
80+
buildForTesting = "YES"
81+
buildForRunning = "YES"
82+
buildForProfiling = "YES"
83+
buildForArchiving = "YES"
84+
buildForAnalyzing = "YES">
85+
<BuildableReference
86+
BuildableIdentifier = "primary"
87+
BlueprintIdentifier = "CreateOptions"
88+
BuildableName = "CreateOptions"
89+
BlueprintName = "CreateOptions"
90+
ReferencedContainer = "container:">
91+
</BuildableReference>
92+
</BuildActionEntry>
93+
<BuildActionEntry
94+
buildForTesting = "YES"
95+
buildForRunning = "YES"
96+
buildForProfiling = "YES"
97+
buildForArchiving = "YES"
98+
buildForAnalyzing = "YES">
99+
<BuildableReference
100+
BuildableIdentifier = "primary"
101+
BlueprintIdentifier = "CreateAPI_CreateAPITests"
102+
BuildableName = "CreateAPI_CreateAPITests"
103+
BlueprintName = "CreateAPI_CreateAPITests"
104+
ReferencedContainer = "container:">
105+
</BuildableReference>
106+
</BuildActionEntry>
107+
<BuildActionEntry
108+
buildForTesting = "YES"
109+
buildForRunning = "YES"
110+
buildForProfiling = "YES"
111+
buildForArchiving = "YES"
112+
buildForAnalyzing = "YES">
113+
<BuildableReference
114+
BuildableIdentifier = "primary"
115+
BlueprintIdentifier = "CreateAPI"
116+
BuildableName = "CreateAPI"
117+
BlueprintName = "CreateAPI"
118+
ReferencedContainer = "container:">
119+
</BuildableReference>
120+
</BuildActionEntry>
121+
</BuildActionEntries>
122+
</BuildAction>
123+
<TestAction
124+
buildConfiguration = "Debug"
125+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
126+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
127+
shouldUseLaunchSchemeArgsEnv = "YES">
128+
<Testables>
129+
<TestableReference
130+
skipped = "NO">
131+
<BuildableReference
132+
BuildableIdentifier = "primary"
133+
BlueprintIdentifier = "create-api-tests"
134+
BuildableName = "create-api-tests"
135+
BlueprintName = "create-api-tests"
136+
ReferencedContainer = "container:">
137+
</BuildableReference>
138+
</TestableReference>
139+
<TestableReference
140+
skipped = "NO">
141+
<BuildableReference
142+
BuildableIdentifier = "primary"
143+
BlueprintIdentifier = "CreateOptionsTests"
144+
BuildableName = "CreateOptionsTests"
145+
BlueprintName = "CreateOptionsTests"
146+
ReferencedContainer = "container:">
147+
</BuildableReference>
148+
</TestableReference>
149+
<TestableReference
150+
skipped = "NO">
151+
<BuildableReference
152+
BuildableIdentifier = "primary"
153+
BlueprintIdentifier = "CreateAPITests"
154+
BuildableName = "CreateAPITests"
155+
BlueprintName = "CreateAPITests"
156+
ReferencedContainer = "container:">
157+
</BuildableReference>
158+
</TestableReference>
159+
</Testables>
160+
</TestAction>
161+
<LaunchAction
162+
buildConfiguration = "Debug"
163+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
164+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
165+
launchStyle = "0"
166+
useCustomWorkingDirectory = "YES"
167+
customWorkingDirectory = "/Users/liamnichols/Desktop/TestSchema"
168+
ignoresPersistentStateOnLaunch = "NO"
169+
debugDocumentVersioning = "YES"
170+
debugServiceExtension = "internal"
171+
allowLocationSimulation = "YES">
172+
<BuildableProductRunnable
173+
runnableDebuggingMode = "0">
174+
<BuildableReference
175+
BuildableIdentifier = "primary"
176+
BlueprintIdentifier = "create-api"
177+
BuildableName = "create-api"
178+
BlueprintName = "create-api"
179+
ReferencedContainer = "container:">
180+
</BuildableReference>
181+
</BuildableProductRunnable>
182+
<CommandLineArguments>
183+
<CommandLineArgument
184+
argument = "generate"
185+
isEnabled = "YES">
186+
</CommandLineArgument>
187+
<CommandLineArgument
188+
argument = "schema.json"
189+
isEnabled = "YES">
190+
</CommandLineArgument>
191+
<CommandLineArgument
192+
argument = "--output"
193+
isEnabled = "YES">
194+
</CommandLineArgument>
195+
<CommandLineArgument
196+
argument = "."
197+
isEnabled = "YES">
198+
</CommandLineArgument>
199+
<CommandLineArgument
200+
argument = "--config"
201+
isEnabled = "YES">
202+
</CommandLineArgument>
203+
<CommandLineArgument
204+
argument = "create-api.yml"
205+
isEnabled = "YES">
206+
</CommandLineArgument>
207+
<CommandLineArgument
208+
argument = "--package"
209+
isEnabled = "YES">
210+
</CommandLineArgument>
211+
<CommandLineArgument
212+
argument = "APIKit"
213+
isEnabled = "YES">
214+
</CommandLineArgument>
215+
<CommandLineArgument
216+
argument = "--verbose"
217+
isEnabled = "YES">
218+
</CommandLineArgument>
219+
</CommandLineArguments>
220+
</LaunchAction>
221+
<ProfileAction
222+
buildConfiguration = "Release"
223+
shouldUseLaunchSchemeArgsEnv = "YES"
224+
savedToolIdentifier = ""
225+
useCustomWorkingDirectory = "NO"
226+
debugDocumentVersioning = "YES">
227+
<BuildableProductRunnable
228+
runnableDebuggingMode = "0">
229+
<BuildableReference
230+
BuildableIdentifier = "primary"
231+
BlueprintIdentifier = "create-api"
232+
BuildableName = "create-api"
233+
BlueprintName = "create-api"
234+
ReferencedContainer = "container:">
235+
</BuildableReference>
236+
</BuildableProductRunnable>
237+
</ProfileAction>
238+
<AnalyzeAction
239+
buildConfiguration = "Debug">
240+
</AnalyzeAction>
241+
<ArchiveAction
242+
buildConfiguration = "Release"
243+
revealArchiveInOrganizer = "YES">
244+
</ArchiveAction>
245+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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 = "NO"
12+
buildForProfiling = "NO"
13+
buildForArchiving = "NO"
14+
buildForAnalyzing = "NO">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "create-api"
18+
BuildableName = "create-api"
19+
BlueprintName = "create-api"
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 = "create-api-tests"
36+
BuildableName = "create-api-tests"
37+
BlueprintName = "create-api-tests"
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+
<MacroExpansion>
54+
<BuildableReference
55+
BuildableIdentifier = "primary"
56+
BlueprintIdentifier = "create-api"
57+
BuildableName = "create-api"
58+
BlueprintName = "create-api"
59+
ReferencedContainer = "container:">
60+
</BuildableReference>
61+
</MacroExpansion>
62+
<EnvironmentVariables>
63+
<EnvironmentVariable
64+
key = "RECORD_SNAPSHOTS"
65+
value = "1"
66+
isEnabled = "YES">
67+
</EnvironmentVariable>
68+
</EnvironmentVariables>
69+
</LaunchAction>
70+
<ProfileAction
71+
buildConfiguration = "Release"
72+
shouldUseLaunchSchemeArgsEnv = "YES"
73+
savedToolIdentifier = ""
74+
useCustomWorkingDirectory = "NO"
75+
debugDocumentVersioning = "YES">
76+
</ProfileAction>
77+
<AnalyzeAction
78+
buildConfiguration = "Debug">
79+
</AnalyzeAction>
80+
<ArchiveAction
81+
buildConfiguration = "Release"
82+
revealArchiveInOrganizer = "YES">
83+
</ArchiveAction>
84+
</Scheme>

Tests/CreateAPITests/Snapshotting/Snapshotter.swift

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import Foundation
22

3-
private let generateSnapshots = false
4-
53
class Snapshotter {
64
enum Behavior {
75
case assert, record
86
}
97

10-
static let shared = Snapshotter(behavior: generateSnapshots ? .record : .assert)
8+
// When working with Xcode, use the "Record Snapshot" scheme to
9+
// automatically enable the `.record` behavior
10+
static let shared = Snapshotter(
11+
behavior: ProcessInfo.processInfo.environment.keys.contains("RECORD_SNAPSHOTS") ? .record : .assert
12+
)
1113

1214
let behavior: Behavior
1315
private(set) var recordedSnapshots: [URL]

0 commit comments

Comments
 (0)