test: test262 测试提供详细信息并忽略未实现目录

This commit is contained in:
2026-06-06 23:43:30 +08:00
parent 74d5edf5b0
commit 5e78cb672f
+14 -4
View File
@@ -162,6 +162,7 @@ fn is_skipped(meta: &TestMeta) -> Option<String> {
"new.target", "new.target",
"well-formed-json-stringify", "well-formed-json-stringify",
"optional-chaining", "optional-chaining",
"symbols-as-weakmap-keys",
]; ];
for feat in &meta.features { for feat in &meta.features {
@@ -288,6 +289,7 @@ fn run_test_inner(
} else if e.contains("not yet implemented") } else if e.contains("not yet implemented")
|| e.contains("not supported") || e.contains("not supported")
|| e.contains("unsupported") || e.contains("unsupported")
|| e.contains("step limit")
{ {
TestResult::skip(path.to_path_buf(), format!("vm: {e}")) TestResult::skip(path.to_path_buf(), format!("vm: {e}"))
} else { } else {
@@ -391,6 +393,13 @@ fn main() {
} }
} }
let path_str = path.to_string_lossy();
if path_str.contains("staging") {
results.push(TestResult::skip(path.clone(), "staging tests excluded".into()));
stats.skip += 1;
continue;
}
if let Some(reason) = is_skipped(&meta) { if let Some(reason) = is_skipped(&meta) {
results.push(TestResult::skip(path.clone(), reason)); results.push(TestResult::skip(path.clone(), reason));
stats.skip += 1; stats.skip += 1;
@@ -416,13 +425,14 @@ fn main() {
println!(" test262 results"); println!(" test262 results");
println!("═══════════════════════════════════════"); println!("═══════════════════════════════════════");
println!(" total : {}", results.len()); println!(" total : {}", results.len());
println!(" pass : {}", stats.pass); let total = results.len() as f64;
println!(" fail : {}", stats.fail); println!(" pass : {} ({:.1}%)", stats.pass, stats.pass as f64 / total * 100.0);
println!(" skip : {}", stats.skip); println!(" fail : {} ({:.1}%)", stats.fail, stats.fail as f64 / total * 100.0);
println!(" skip : {} ({:.1}%)", stats.skip, stats.skip as f64 / total * 100.0);
println!(" time : {:?}", Duration::from_millis(stats.total_ms)); println!(" time : {:?}", Duration::from_millis(stats.total_ms));
println!( println!(
" pass% : {:.1}% (of ran: {:.1}%)", " pass% : {:.1}% (of ran: {:.1}%)",
stats.pass as f64 / results.len() as f64 * 100.0, stats.pass as f64 / total * 100.0,
if ran > 0 { if ran > 0 {
stats.pass as f64 / ran as f64 * 100.0 stats.pass as f64 / ran as f64 * 100.0
} else { } else {