You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
- Adds a `parts` field to the archive source config as a
mutually-exclusive alternative to `file`
- Each part (URL or local path) is downloaded and cached independently,
then all parts are concatenated into a single cached archive before
extraction
- Useful when the archive exceeds per-asset upload size limits (e.g.
GitHub Releases)
- Per-part and combined files both use sha256-derived cache keys so
re-runs skip redundant downloads
### Example config
```yaml
runner:
benchmark:
tests:
source:
archive:
parts:
- https://github.com/org/repo/releases/download/v1.0.0/tests.tar.gz.00.part
- https://github.com/org/repo/releases/download/v1.0.0/tests.tar.gz.01.part
steps:
test:
- "testing/*.txt"
```
## Test plan
- [x] New unit tests for parts download + caching
(`TestArchiveSource_PrepareWithParts`)
- [x] New unit tests for local-path parts
(`TestArchiveSource_PrepareWithLocalParts`)
- [x] New unit tests for source info
(`TestArchiveSource_GetSourceInfo_Parts`)
- [x] Validation tests for mutual exclusivity
- [x] All existing archive tests still pass
- [x] Run with a real parts-based archive URL and verify extraction +
test discovery
Copy file name to clipboardExpand all lines: docs/configuration.md
+16-1Lines changed: 16 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -325,12 +325,27 @@ tests:
325
325
326
326
| Option | Type | Required | Description |
327
327
|--------|------|----------|-------------|
328
-
| `file` | string | Yes | Local path or URL to a ZIP or tar.gz archive. GitHub Actions artifact URLs are auto-converted to API endpoints |
328
+
| `file` | string | One of `file`/`parts` | Local path or URL to a ZIP or tar.gz archive. GitHub Actions artifact URLs are auto-converted to API endpoints |
329
+
| `parts` | []string | One of `file`/`parts` | Ordered list of local paths or URLs to concatenate into the final archive. Useful when the archive is split because of per-asset size limits. Mutually exclusive with `file` |
329
330
| `pre_run_steps` | []string | No | Glob patterns for steps executed once before all tests |
330
331
| `steps.setup` | []string | No | Glob patterns for setup phase files |
331
332
| `steps.test` | []string | No | Glob patterns for test phase files |
332
333
| `steps.cleanup` | []string | No | Glob patterns for cleanup phase files |
333
334
335
+
**Multi-part archives:** when an archive is too large for a single asset upload, `parts` accepts an ordered list of URLs or local paths. All parts are downloaded (with caching) and concatenated into a single file before extraction:
0 commit comments