Skip to content

feat: proving-grounds pipeline for real-world OSS repos#50

Open
markovejnovic wants to merge 5 commits into
mainfrom
test/big-oss-repos
Open

feat: proving-grounds pipeline for real-world OSS repos#50
markovejnovic wants to merge 5 commits into
mainfrom
test/big-oss-repos

Conversation

@markovejnovic

Copy link
Copy Markdown
Contributor

Summary

  • Single harmont pipeline (proving-grounds/.harmont/pipeline.py) that clones and builds 15 real-world OSS repos
  • Exercises harmont's toolchain abstractions against: Rust (5), Python (3), npm (3), Go (2), Ruby (1), plus a Go+npm monorepo (grafana)
  • Each repo runs as a parallel chain: apt base → git clone → toolchain install → build/test/lint
  • Run: hm run ci -d proving-grounds/

Repos covered

Language Repos
Rust ripgrep, clap, tokio, starship, ruff
Python flask, django, fastapi
npm express, vite, svelte
Go gin, terraform
Ruby jekyll
Multi grafana (Go + npm)

Test plan

  • hm run ci -d proving-grounds/ completes with all chains green
  • Each repo's build/test/lint steps pass
  • Parallel execution works (chains don't interfere)

…SS repos

Single harmont pipeline that clones 15 real-world OSS repos and
runs build/test/lint against each using harmont's toolchain
abstractions. Covers Rust (ripgrep, clap, tokio, starship, ruff),
Python (flask, django, fastapi), npm (express, vite, svelte),
Go (gin, terraform), Ruby (jekyll), and a Go+npm monorepo (grafana).

Run: hm run ci -d proving-grounds/
…ands

- Drop 4 repos with wrong package managers (django=pip, vite/svelte=pnpm,
  grafana=yarn4). Down to 11 repos that match harmont's toolchains.
- Pin every clone to a specific commit SHA (no more HEAD drift).
- Per-repo audited commands from actual CI configs:
  - ripgrep: skip clippy (not in their CI), workspace build/test/fmt
  - clap: feature flags, -A deprecated for clippy
  - tokio: --features full,test-util, rustfmt directly (not cargo fmt)
  - starship: --locked, libdbus-1-dev in apt base
  - ruff: pinned to Rust 1.96, --all-features --locked
  - flask: standard hm.python() works
  - fastapi: custom pytest flags + PYTHONPATH, ty check on package dir
  - express: no build script, just test + lint
  - gin: standard hm.go() works
  - terraform: multi-module test loop over go list -m
  - jekyll: TZ=UTC for tests, rubocop for lint
- Delete stale plan doc (described architecture that doesn't exist)
- kitchen-sink fixture now has 10 nodes (c + ruby), not 12+ (had
  haskell + cmake + c). Update node count assertions and replace
  haskell label check with ruby.
- Remove stale elm reference in _toolchain.py comment.
# Conflicts:
#	crates/hm-pipeline-ir/tests/e2e_fixtures.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant