Skip to content

Commit

Permalink
Add GenerateAssetSymbolsCaptureGroup
Browse files Browse the repository at this point in the history
  • Loading branch information
cpisciotta committed Feb 22, 2025
1 parent 19302b2 commit aa7c1c9
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 4 deletions.
20 changes: 20 additions & 0 deletions Sources/XcbeautifyLib/CaptureGroups.swift
Original file line number Diff line number Diff line change
Expand Up @@ -725,6 +725,26 @@ struct RestartingTestCaptureGroup: CaptureGroup {
}
}

struct GenerateAssetSymbolsCaptureGroup: CaptureGroup {
static var outputType: OutputType = .task

static let regex = XCRegex(pattern: #"^GenerateAssetSymbols (.+) \(in target '(.+)' from project '(.+)'\)$"#)

let filePath: String
let filename: String
let target: String
let project: String

init?(groups: [String]) {
assert(groups.count == 3)
guard let filePath = groups[safe: 0], let target = groups[safe: 1], let project = groups[safe: 2] else { return nil }
self.filePath = filePath
filename = filePath.lastPathComponent
self.target = target
self.project = project
}
}

struct GenerateCoverageDataCaptureGroup: CaptureGroup {
static let outputType: OutputType = .task

Expand Down
2 changes: 2 additions & 0 deletions Sources/XcbeautifyLib/Formatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ package struct Formatter {
return renderer.formatError(group: group)
case let group as FileMissingErrorCaptureGroup:
return renderer.formatFileMissingError(group: group)
case let group as GenerateAssetSymbolsCaptureGroup:
return renderer.formatGenerateAssetSymbols(group: group)
case let group as GenerateCoverageDataCaptureGroup:
return renderer.formatGenerateCoverageData(group: group)
case let group as GeneratedCoverageReportCaptureGroup:
Expand Down
1 change: 1 addition & 0 deletions Sources/XcbeautifyLib/Parser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ package final class Parser {
FailingTestCaptureGroup.self,
UIFailingTestCaptureGroup.self,
RestartingTestCaptureGroup.self,
GenerateAssetSymbolsCaptureGroup.self,
GenerateCoverageDataCaptureGroup.self,
GeneratedCoverageReportCaptureGroup.self,
GenerateDSYMCaptureGroup.self,
Expand Down
7 changes: 7 additions & 0 deletions Sources/XcbeautifyLib/Renderers/OutputRendering.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ protocol OutputRendering {
func formatExplicitDependencyCaptureGroup(group: ExplicitDependencyCaptureGroup) -> String?
func formatFailingTest(group: FailingTestCaptureGroup) -> String
func formatFileMissingError(group: FileMissingErrorCaptureGroup) -> String
func formatGenerateAssetSymbols(group: GenerateAssetSymbolsCaptureGroup) -> String
func formatGenerateCoverageData(group: GenerateCoverageDataCaptureGroup) -> String
func formatGenerateDsym(group: GenerateDSYMCaptureGroup) -> String
func formatLdWarning(group: LDWarningCaptureGroup) -> String
Expand Down Expand Up @@ -227,6 +228,12 @@ extension OutputRendering {
nil
}

func formatGenerateAssetSymbols(group: GenerateAssetSymbolsCaptureGroup) -> String {
let filename = group.filename
let target = group.target
return colored ? "[\(target.f.Cyan)] \("Generate Asset Symbols".s.Bold) \(filename)" : "[\(target)] Generate Asset Symbols \(filename)"
}

func formatGenerateDsym(group: GenerateDSYMCaptureGroup) -> String {
let dsym = group.dsym
let target = group.target
Expand Down
9 changes: 9 additions & 0 deletions Tests/XcbeautifyLibTests/CaptureGroupTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,15 @@ final class CaptureGroupTests: XCTestCase {
XCTAssertEqual(groups[5], "BackyardBirdsUI")
}

func testMatchGenerateAssetSymbols() throws {
let input = #"GenerateAssetSymbols /Backyard-Birds/Widgets/Assets.xcassets (in target 'Widgets' from project 'Backyard Birds')"#
let groups = try XCTUnwrap(GenerateAssetSymbolsCaptureGroup.regex.captureGroups(for: input))
XCTAssertEqual(groups.count, 3)
XCTAssertEqual(groups[0], "/Backyard-Birds/Widgets/Assets.xcassets")
XCTAssertEqual(groups[1], "Widgets")
XCTAssertEqual(groups[2], "Backyard Birds")
}

#if os(macOS)
func testMatchLdCaptureGroup() throws {
let input = #"Ld /path/to/output/DerivedData/Build/Products/Debug-iphonesimulator/output.o normal (in target 'Target' from project 'Project')"#
Expand Down
9 changes: 9 additions & 0 deletions Tests/XcbeautifyLibTests/ParserTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,15 @@ final class ParserTests: XCTestCase {
XCTAssertEqual(captureGroup.project, "BackyardBirdsUI")
}

func testGenerateAssetSymbols() throws {
let input = #"GenerateAssetSymbols /Backyard-Birds/Widgets/An-Asset_Catalog.xcassets (in target 'Some Target' from project 'A_Project')"#
let captureGroup = try XCTUnwrap(parser.parse(line: input) as? GenerateAssetSymbolsCaptureGroup)
XCTAssertEqual(captureGroup.filePath, "/Backyard-Birds/Widgets/An-Asset_Catalog.xcassets")
XCTAssertEqual(captureGroup.filename, "An-Asset_Catalog.xcassets")
XCTAssertEqual(captureGroup.target, "Some Target")
XCTAssertEqual(captureGroup.project, "A_Project")
}

#if os(macOS)
func testMatchLdCommandObjectWithoutArch() throws {
let input = #"Ld /Backyard-Birds/Build/Intermediates.noindex/BackyardBirdsData.build/Debug/BackyardBirdsData.build/Objects-normal/x86_64/Binary/BackyardBirdsData.o normal (in target 'BackyardBirdsDataTarget' from project 'BackyardBirdsDataProject')"#
Expand Down
8 changes: 4 additions & 4 deletions Tests/XcbeautifyLibTests/ParsingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ final class ParsingTests: XCTestCase {
// Update this magic number whenever `uncapturedOutput` is less than the current magic number.
// There's a regression whenever `uncapturedOutput` is greater than the current magic number.
#if os(macOS)
XCTAssertEqual(uncapturedOutput, 63)
XCTAssertEqual(uncapturedOutput, 58)
#else
XCTAssertEqual(uncapturedOutput, 79)
XCTAssertEqual(uncapturedOutput, 74)
#endif
}

Expand Down Expand Up @@ -56,9 +56,9 @@ final class ParsingTests: XCTestCase {
// Update this magic number whenever `uncapturedOutput` is less than the current magic number.
// There's a regression whenever `uncapturedOutput` is greater than the current magic number.
#if os(macOS)
XCTAssertEqual(uncapturedOutput, 2100)
XCTAssertEqual(uncapturedOutput, 1924)
#else
XCTAssertEqual(uncapturedOutput, 2668)
XCTAssertEqual(uncapturedOutput, 2492)
#endif
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,11 @@ final class AzureDevOpsPipelinesRendererTests: XCTestCase {
XCTAssertEqual(logFormatted(input), output)
}

func testGenerateAssetSymbols() {
let formatted = logFormatted("GenerateAssetSymbols /Backyard-Birds/Multiplatform/An_Asset_Catalog.xcassets (in target 'Backyard Birds' from project 'Backyard Birds')")
XCTAssertEqual(formatted, "[Backyard Birds] Generate Asset Symbols An_Asset_Catalog.xcassets")
}

func testGenerateCoverageData() {
let formatted = logFormatted("Generating coverage data...")
XCTAssertEqual(formatted, "Generating code coverage data...")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,11 @@ final class GitHubActionsRendererTests: XCTestCase {
XCTAssertEqual(logFormatted(input), output)
}

func testGenerateAssetSymbols() {
let formatted = logFormatted("GenerateAssetSymbols /Backyard-Birds/LayeredArtworkLibrary/Assets-Catalog.xcassets (in target 'LayeredArtworkLibrary' from project 'LayeredArtworkLibrary')")
XCTAssertEqual(formatted, "[LayeredArtworkLibrary] Generate Asset Symbols Assets-Catalog.xcassets")
}

func testGenerateCoverageData() {
let formatted = logFormatted("Generating coverage data...")
XCTAssertEqual(formatted, "Generating code coverage data...")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,11 @@ final class TeamCityRendererTests: XCTestCase {
XCTAssertEqual(noColoredFormatted(input), output)
}

func testGenerateAssetSymbols() {
let formatted = noColoredFormatted("GenerateAssetSymbols /Backyard-Birds/BackyardBirdsUI/SomeAssets.xcassets (in target 'BackyardBirdsUI' from project 'BackyardBirdsUI')")
XCTAssertEqual(formatted, "[BackyardBirdsUI] Generate Asset Symbols SomeAssets.xcassets")
}

func testGenerateCoverageData() {
let formatted = noColoredFormatted("Generating coverage data...")
XCTAssertEqual(formatted, "Generating code coverage data...")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,11 @@ final class TerminalRendererTests: XCTestCase {
XCTAssertEqual(noColoredFormatted(input), output)
}

func testGenerateAssetSymbols() {
let formatted = noColoredFormatted("GenerateAssetSymbols /Backyard-Birds/BackyardBirdsData/Assets.xcassets (in target 'BackyardBirdsData' from project 'BackyardBirdsData')")
XCTAssertEqual(formatted, "[BackyardBirdsData] Generate Asset Symbols Assets.xcassets")
}

func testGenerateCoverageData() {
let formatted = noColoredFormatted("Generating coverage data...")
XCTAssertEqual(formatted, "Generating code coverage data...")
Expand Down

0 comments on commit aa7c1c9

Please sign in to comment.