https://github.com/Subito-it/CachiKit
A swift library to parse Xcode's .xcresult files
https://github.com/Subito-it/CachiKit
Last synced: 11 months ago
JSON representation
A swift library to parse Xcode's .xcresult files
- Host: GitHub
- URL: https://github.com/Subito-it/CachiKit
- Owner: Subito-it
- License: other
- Created: 2019-11-11T13:09:53.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-14T09:50:32.000Z (almost 2 years ago)
- Last Synced: 2024-08-14T10:26:06.730Z (almost 2 years ago)
- Language: Swift
- Size: 57.6 KB
- Stars: 15
- Watchers: 15
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌵 CachiKit
CachiKit is a swift library to parse Xcode's 11 .xcresult files. It's the core librart used by [Cachi](http://github.com/Subito-it/Cachi) a tool that parses and visualizes tests results in a web interface.
# Installation
## Swift Package Manager
Add CachiKit as a dependency to your project:
```swift
dependencies: [
.package(url: "https://github.com/Subito-it/CachiKit", .branch("master"))
]
```
# Usage
The library API is very simple and exposes a set of methods to extract parts of the result structure.
## Get actions invocation record
To get the root element of the xcresult
```swift
import CachiKit
let url = URL(fileURLWithPath: "path to the .xcresult")
let cachi = CachiKit(url: url)
let invocationRecord = try? cachi.actionsInvocationRecord()
```
## Get actions invocation metadata
From the action invocation record you can get the id to get the actions invocation metadata
```swift
import CachiKit
let url = URL(fileURLWithPath: "path to the .xcresult")
let cachi = CachiKit(url: url)
let invocationRecord = try? cachi.actionsInvocationRecord()
guard let metadataIdentifier = invocationRecord.metadataRef?.id else {
return
}
let metaData = try? cachi.actionsInvocationMetadata(identifier: metadataIdentifier)
```
## Get actions test plan run summaries
```swift
import CachiKit
let url = URL(fileURLWithPath: "path to the .xcresult")
let cachi = CachiKit(url: url)
let invocationRecord = try? cachi.actionsInvocationRecord()
for action in invocationRecord.actions {
guard let testRef = action.actionResult.testsRef else { continue }
let testPlanSummaries = (try? cachi.actionTestPlanRunSummaries(identifier: testRef.id))?.summaries
}
```
## Get action test summary
You will need the test summary identifier which can be extracted from the TestPlanRunSummaries `testableSummaries`.
```swift
import CachiKit
let url = URL(fileURLWithPath: "path to the .xcresult")
let cachi = CachiKit(url: url)
let testSummaryIdentifier = ...
let testSummary = try? cachi.actionTestSummary(identifier: testSummaryIdentifier)
```
## Exporting attachments
You can export attachments to filesystem
```swift
import CachiKit
let url = URL(fileURLWithPath: "path to the .xcresult")
let cachi = CachiKit(url: url)
let attachmentIdentifier = ...
let attachmentDestinationPath = ...
try? cachi.export(identifier: attachmentIdentifier, destinationPath: attachmentDestinationPath)
```
# Contributions
Contributions are welcome! If you have a bug to report, feel free to help out by opening a new issue or sending a pull request.
## Authors
[Tomas Camin](https://github.com/tcamin) ([@tomascamin](https://twitter.com/tomascamin))
## License
CachiKit is available under the Apache License, Version 2.0. See the LICENSE file for more info.