Skip to content

Commit 5ff9344

Browse files
authored
Merge pull request #2171 from ahoppen/ahoppen/run-codegen-tests
Run CodeGeneration tests in CI
2 parents 636a911 + 9dfc532 commit 5ff9344

File tree

2 files changed

+38
-44
lines changed

2 files changed

+38
-44
lines changed

SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/commands/Test.swift

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,48 +24,47 @@ struct Test: ParsableCommand, BuildCommand {
2424
var arguments: BuildArguments
2525

2626
func run() throws {
27-
try buildExample(exampleName: "ExamplePlugin")
28-
2927
try runTests()
28+
try runCodeGenerationTests()
3029

3130
logSection("All tests passed")
3231
}
3332

3433
private func runTests() throws {
3534
logSection("Running SwiftSyntax Tests")
36-
var swiftpmCallArguments: [String] = []
35+
var swiftpmCallArguments = [
36+
"--test-product", "swift-syntaxPackageTests",
37+
]
3738

3839
if arguments.verbose {
3940
swiftpmCallArguments += ["--verbose"]
4041
}
4142

42-
swiftpmCallArguments += ["--test-product", "swift-syntaxPackageTests"]
43-
44-
var additionalEnvironment: [String: String] = [:]
45-
additionalEnvironment["SWIFT_BUILD_SCRIPT_ENVIRONMENT"] = "1"
43+
try invokeSwiftPM(
44+
action: "test",
45+
packageDir: Paths.packageDir,
46+
additionalArguments: swiftpmCallArguments,
47+
additionalEnvironment: swiftPMEnvironmentVariables,
48+
captureStdout: false,
49+
captureStderr: false
50+
)
51+
}
4652

47-
if arguments.enableRawSyntaxValidation {
48-
additionalEnvironment["SWIFTSYNTAX_ENABLE_RAWSYNTAX_VALIDATION"] = "1"
49-
}
53+
private func runCodeGenerationTests() throws {
54+
logSection("Running CodeGeneration Tests")
55+
var swiftpmCallArguments = [
56+
"--test-product", "CodeGenerationPackageTests",
57+
]
5058

51-
if arguments.enableTestFuzzing {
52-
additionalEnvironment["SWIFTPARSER_ENABLE_ALTERNATE_TOKEN_INTROSPECTION"] = "1"
59+
if arguments.verbose {
60+
swiftpmCallArguments += ["--verbose"]
5361
}
5462

55-
// Tell other projects in the unified build to use local dependencies
56-
additionalEnvironment["SWIFTCI_USE_LOCAL_DEPS"] = "1"
57-
additionalEnvironment["SWIFT_SYNTAX_PARSER_LIB_SEARCH_PATH"] =
58-
arguments.toolchain
59-
.appendingPathComponent("lib")
60-
.appendingPathComponent("swift")
61-
.appendingPathComponent("macosx")
62-
.path
63-
6463
try invokeSwiftPM(
6564
action: "test",
66-
packageDir: Paths.packageDir,
65+
packageDir: Paths.codeGenerationDir,
6766
additionalArguments: swiftpmCallArguments,
68-
additionalEnvironment: additionalEnvironment,
67+
additionalEnvironment: swiftPMEnvironmentVariables,
6968
captureStdout: false,
7069
captureStderr: false
7170
)

SwiftSyntaxDevUtils/Sources/swift-syntax-dev-utils/common/BuildCommand.swift

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ extension BuildCommand {
2727
try build(packageDir: packageDir, name: targetName, isProduct: false)
2828
}
2929

30-
func buildExample(exampleName: String) throws {
31-
logSection("Building example " + exampleName)
32-
try build(packageDir: Paths.examplesDir, name: exampleName, isProduct: true)
33-
}
34-
3530
@discardableResult
3631
func invokeSwiftPM(
3732
action: String,
@@ -119,15 +114,9 @@ extension BuildCommand {
119114
}
120115
}
121116

122-
private func build(packageDir: URL, name: String, isProduct: Bool) throws {
123-
let args: [String]
124-
125-
if isProduct {
126-
args = ["--product", name]
127-
} else {
128-
args = ["--target", name]
129-
}
130-
117+
/// Environment variables that should be set when invoking `swift build` or
118+
/// `swift test`.
119+
var swiftPMEnvironmentVariables: [String: String] {
131120
var additionalEnvironment: [String: String] = [:]
132121
additionalEnvironment["SWIFT_BUILD_SCRIPT_ENVIRONMENT"] = "1"
133122

@@ -141,18 +130,24 @@ extension BuildCommand {
141130

142131
// Tell other projects in the unified build to use local dependencies
143132
additionalEnvironment["SWIFTCI_USE_LOCAL_DEPS"] = "1"
144-
additionalEnvironment["SWIFT_SYNTAX_PARSER_LIB_SEARCH_PATH"] =
145-
arguments.toolchain
146-
.appendingPathComponent("lib")
147-
.appendingPathComponent("swift")
148-
.appendingPathComponent("macos")
149-
.path
133+
134+
return additionalEnvironment
135+
}
136+
137+
private func build(packageDir: URL, name: String, isProduct: Bool) throws {
138+
let args: [String]
139+
140+
if isProduct {
141+
args = ["--product", name]
142+
} else {
143+
args = ["--target", name]
144+
}
150145

151146
try invokeSwiftPM(
152147
action: "build",
153148
packageDir: packageDir,
154149
additionalArguments: args,
155-
additionalEnvironment: additionalEnvironment,
150+
additionalEnvironment: swiftPMEnvironmentVariables,
156151
captureStdout: false,
157152
captureStderr: false
158153
)

0 commit comments

Comments
 (0)