{"id":48083511,"url":"https://github.com/ferrflow-org/fixtures","last_synced_at":"2026-04-04T15:00:57.063Z","repository":{"id":348996732,"uuid":"1200652932","full_name":"FerrFlow-Org/Fixtures","owner":"FerrFlow-Org","description":"Declarative git fixture generator for FerrFlow integration tests and benchmarks","archived":false,"fork":false,"pushed_at":"2026-04-03T17:27:25.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T20:20:55.001Z","etag":null,"topics":["ci","fixture-generator","fixtures","github-actions","integration-tests","rust","test-fixtures"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FerrFlow-Org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-03T17:07:16.000Z","updated_at":"2026-04-03T17:27:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FerrFlow-Org/Fixtures","commit_stats":null,"previous_names":["ferrflow-org/fixtures"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/FerrFlow-Org/Fixtures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FerrFlow-Org%2FFixtures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FerrFlow-Org%2FFixtures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FerrFlow-Org%2FFixtures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FerrFlow-Org%2FFixtures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FerrFlow-Org","download_url":"https://codeload.github.com/FerrFlow-Org/Fixtures/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FerrFlow-Org%2FFixtures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31403952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci","fixture-generator","fixtures","github-actions","integration-tests","rust","test-fixtures"],"created_at":"2026-04-04T15:00:29.885Z","updated_at":"2026-04-04T15:00:57.011Z","avatar_url":"https://github.com/FerrFlow-Org.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FerrFlow Fixtures\n\nReusable GitHub Action and CLI tool for generating git fixture repos from declarative TOML definitions. Used by [FerrFlow](https://github.com/FerrFlow-Org/FerrFlow) for integration tests and [Benchmarks](https://github.com/FerrFlow-Org/Benchmarks) for performance testing.\n\nFixtures is a pure generator — it builds repos from TOML definitions but does not run any tests. Each consumer repo (FerrFlow, Benchmarks, etc.) owns its own definitions and test runner.\n\n## Usage as GitHub Action\n\n```yaml\n- name: Generate fixture repos\n  id: fixtures\n  uses: FerrFlow-Org/Fixtures@v0\n  with:\n    definitions: tests/fixtures/definitions\n\n- name: Run tests against fixtures\n  run: ./scripts/run-fixture-tests.sh ${{ steps.fixtures.outputs.generated-path }}\n```\n\n### Inputs\n\n| Input | Required | Default | Description |\n|-------|----------|---------|-------------|\n| `definitions` | **yes** | | Path to TOML definitions directory (provided by the consumer repo) |\n| `generated-dir` | no | temp dir | Output directory for generated repos |\n\n### Outputs\n\n| Output | Description |\n|--------|-------------|\n| `generated-path` | Path to the generated fixture repos |\n\n## Usage as CLI\n\n```bash\n# Build the generator\ncd generator \u0026\u0026 cargo build --release\n\n# Generate from custom paths\n./generator/target/release/generate-fixtures \\\n  --definitions /path/to/definitions \\\n  --output /path/to/output\n```\n\n## Fixture definition format\n\nEach `.toml` file describes a git repo scenario:\n\n```toml\n[meta]\nname = \"monorepo-two-packages\"\ndescription = \"Two packages with independent version bumps\"\n\n[config]\ncontent = '''\n{\n  \"package\": [\n    { \"name\": \"core\", \"path\": \"core\", \"versioned_files\": [{\"path\": \"core/version.toml\", \"format\": \"toml\"}] },\n    { \"name\": \"cli\", \"path\": \"cli\", \"versioned_files\": [{\"path\": \"cli/version.toml\", \"format\": \"toml\"}] }\n  ]\n}\n'''\n\n[[packages]]\nname = \"core\"\npath = \"core\"\ninitial_version = \"0.1.0\"\n\n[[packages]]\nname = \"cli\"\npath = \"cli\"\ninitial_version = \"0.1.0\"\n\n[[commits]]\nmessage = \"feat(core): add parser\"\nfiles = [\"core/src/parser.rs\"]\n\n[[commits]]\nmessage = \"fix(cli): handle empty input\"\nfiles = [\"cli/src/main.rs\"]\n\n[expect]\ncheck_contains = [\"core\", \"0.2.0\", \"cli\", \"0.1.1\"]\ncheck_not_contains = [\"Nothing to release\"]\npackages_released = 2\n```\n\nThe `[expect]` section is ignored by the generator — it's metadata for the consumer's test runner.\n\n### Bulk generation\n\nFor benchmarks or stress tests, use `[generate]` to create repos with many packages and commits without listing them individually:\n\n```toml\n[meta]\nname = \"mono-large\"\ndescription = \"200 packages, 10000 commits\"\n\n[config]\ncontent = '{}'\n\n[generate]\npackages = 200    # number of packages (1 = single-package repo)\ncommits = 10000   # number of synthetic commits\nseed = 42         # optional RNG seed for deterministic output\n```\n\nUses an incremental tree builder for fast generation (10k commits in under a minute).\n\n### Advanced features\n\n#### Tags at arbitrary commits\n\n```toml\n[[tags]]\nname = \"v1.0.0\"\nat_commit = -1  # -1 = initial setup commit, 0+ = index into [[commits]]\n\n[[tags]]\nname = \"v1.1.0\"\nat_commit = 2  # after the third commit\n```\n\nThe old-style `tag` field on `[[packages]]` still works for tags on the initial commit.\n\n#### Config format selection\n\n```toml\n[config]\nformat = \"toml\"             # \"json\" (default), \"toml\", \"json5\"\nfilename = \"ferrflow.toml\"   # optional, auto-derived from format if omitted\ncontent = '''\n...\n'''\n```\n\n#### Hook scripts\n\n```toml\n[[hooks]]\npath = \"hooks/pre-bump.sh\"\ncontent = '''#!/usr/bin/env bash\necho \"running pre-bump\"\n'''\n```\n\n#### Merge commits\n\n```toml\n[[commits]]\nmessage = \"feat: merged feature\"\nfiles = [\"src/feature.rs\"]\nmerge = true\n```\n\n## Directory structure\n\n```\n.\n├── action.yml                 # GitHub Action definition\n├── generator/                 # Rust binary that builds fixture repos\n│   ├── Cargo.toml\n│   └── src/main.rs\n├── fixtures/\n│   └── examples/              # Example definitions for reference\n└── .github/\n    └── workflows/\n        └── test.yml           # CI for the generator itself\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferrflow-org%2Ffixtures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferrflow-org%2Ffixtures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferrflow-org%2Ffixtures/lists"}