diff --git a/src/agentready/assessors/testing.py b/src/agentready/assessors/testing.py index 8a995e1a..f9a7c28c 100644 --- a/src/agentready/assessors/testing.py +++ b/src/agentready/assessors/testing.py @@ -1131,7 +1131,7 @@ def _assess_quality_gates(self, ci_configs: list) -> tuple: gate_score: 0-30 """ lint_patterns = [ - r"(?:eslint|ruff|pylint|flake8|rubocop|golangci-lint|black|isort|prettier|stylelint)\b", + r"(?:eslint|ruff|pylint|flake8|rubocop|golangci-lint|black|isort|prettier|stylelint|oxlint)\b", r"\blint\b", r"\bformatting?\b", r"\bcargo\s+clippy\b", @@ -1143,6 +1143,7 @@ def _assess_quality_gates(self, ci_configs: list) -> tuple: r"\bmocha\b", r"\bnpm\s+test\b", r"\byarn\s+test\b", + r"\bbun\s+run\s+test\b", r"(?:\bgo|\$\(GO\))\s+test\b", r"\bcargo\s+test\b", r"\brspec\b", diff --git a/tests/unit/test_assessors_testing.py b/tests/unit/test_assessors_testing.py index e0176dea..abf32c6f 100644 --- a/tests/unit/test_assessors_testing.py +++ b/tests/unit/test_assessors_testing.py @@ -563,6 +563,31 @@ def test_all_three_gates_passes(self, tmp_path): assert finding.status == "pass" assert finding.score >= 75 + def test_bun_workflow_passes(self, tmp_path): + """Test pass when a Bun-based workflow has all three gates on PRs.""" + workflows_dir = tmp_path / ".github" / "workflows" + workflows_dir.mkdir(parents=True) + (workflows_dir / "ci.yml").write_text( + "name: CI\n" + "on: [push, pull_request]\n" + "jobs:\n" + " quality:\n" + " runs-on: ubuntu-latest\n" + " steps:\n" + " - uses: oven-sh/setup-bun@v2\n" + " - run: bun install --frozen-lockfile\n" + " - run: bun run lint\n" + " - run: bun run test\n" + " - run: bunx tsc@7 --noEmit\n" + ) + + repo = _make_repo(tmp_path) + assessor = CIQualityGatesAssessor() + finding = assessor.assess(repo) + + assert finding.status == "pass" + assert finding.score >= 75 + def test_push_only_workflow_fails(self, tmp_path): """Test that push-only workflows fail even with all three gates.""" workflows_dir = tmp_path / ".github" / "workflows"