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>
65 lines
2.5 KiB
Bash
Executable File
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"
|