Files
rust_browser/scripts/metrics.sh
Zachary D. Rowitsch a65e4a921d Add full Test262 integration (Phase C)
Two-tier conformance system: Tier 1 (550 vendored tests, PR gate) stays
unchanged; Tier 2 clones tc39/test262 upstream and runs 4,745 qualifying
tests via auto-generated manifest. Dynamic harness include loading supports
30+ harness files beyond sta.js/assert.js. ES5.1 subset tracked via es5id
frontmatter tagging (969/2853 pass, 33%). Status overrides in checked-in
js262_full_status.toml default to known_fail.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:00:15 -05:00

65 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
echo "=== Repository Metrics ==="
echo
# Count crates (Cargo.toml files in crates/ directory)
crate_count=$(find crates -name "Cargo.toml" | wc -l | tr -d ' ')
echo "Crates: $crate_count"
# Count lines of Rust code (filter out deleted-but-unstaged files)
rust_lines=$(git ls-files '*.rs' | while read -r f; do [ -f "$f" ] && echo "$f" || true; done | xargs wc -l | tail -1 | awk '{print $1}')
echo "Lines of Rust code: $rust_lines"
echo
echo "Per-crate LOC:"
for crate_dir in crates/*/; do
crate_name=$(basename "$crate_dir")
crate_lines=$(git ls-files "$crate_dir*.rs" | while read -r f; do [ -f "$f" ] && echo "$f" || true; done | xargs wc -l 2>/dev/null | tail -1 | awk '{print $1}')
if [[ -n "$crate_lines" && "$crate_lines" -gt 0 ]]; then
printf "%s\t%s\n" "$crate_lines" "$crate_name"
fi
done | sort -rn | while IFS=$'\t' read -r lines name; do
printf " %-20s %s\n" "$name" "$lines"
done
echo
# Test262 pass rate (mode = "test262" entries only)
manifest="tests/external/js262/js262_manifest.toml"
if [[ -f "$manifest" ]]; then
t262_pass=$(grep -c 'status = "pass"' <(grep -A5 'mode = "test262"' "$manifest") 2>/dev/null || echo 0)
t262_known_fail=$(grep -c 'status = "known_fail"' <(grep -A5 'mode = "test262"' "$manifest") 2>/dev/null || echo 0)
t262_total=$((t262_pass + t262_known_fail))
if [[ "$t262_total" -gt 0 ]]; then
t262_pct=$((t262_pass * 100 / t262_total))
echo "Test262 pass rate: ${t262_pass}/${t262_total} (${t262_pct}%)"
fi
fi
# ES5.1 subset (from full manifest)
full_manifest="tests/external/js262/js262_full_manifest.toml"
if [[ -f "$full_manifest" ]]; then
# Count feature="es5.1-*" entries
es5_pass=$(grep -c 'status = "pass"' <(grep -B5 'feature = "es5.1-' "$full_manifest") 2>/dev/null || echo 0)
es5_known_fail=$(grep -c 'status = "known_fail"' <(grep -B5 'feature = "es5.1-' "$full_manifest") 2>/dev/null || echo 0)
es5_total=$((es5_pass + es5_known_fail))
if [[ "$es5_total" -gt 0 ]]; then
es5_pct=$((es5_pass * 100 / es5_total))
echo "ES5.1 full-suite pass rate: ${es5_pass}/${es5_total} (${es5_pct}%)"
fi
# Full suite overall
full_pass=$(grep -c 'status = "pass"' "$full_manifest" 2>/dev/null || echo 0)
full_known_fail=$(grep -c 'status = "known_fail"' "$full_manifest" 2>/dev/null || echo 0)
full_total=$((full_pass + full_known_fail))
if [[ "$full_total" -gt 0 ]]; then
full_pct=$((full_pass * 100 / full_total))
echo "Test262 full-suite pass rate: ${full_pass}/${full_total} (${full_pct}%)"
fi
fi
echo
echo "OK: metrics complete"