From 67b5837379ec1483fa7af06c8792790c07086bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=B1=E7=89=B9=E6=AF=8F=E7=BE=8A=E9=98=9F?= Date: Sat, 6 Jun 2026 23:43:30 +0800 Subject: [PATCH] =?UTF-8?q?test:=20test262=20=E6=B5=8B=E8=AF=95=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AF=E5=B9=B6=E5=BF=BD?= =?UTF-8?q?=E7=95=A5=E6=9C=AA=E5=AE=9E=E7=8E=B0=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_test262/src/main.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/crates/oxide_test262/src/main.rs b/crates/oxide_test262/src/main.rs index 1526dbd..b67667a 100644 --- a/crates/oxide_test262/src/main.rs +++ b/crates/oxide_test262/src/main.rs @@ -162,6 +162,7 @@ fn is_skipped(meta: &TestMeta) -> Option { "new.target", "well-formed-json-stringify", "optional-chaining", + "symbols-as-weakmap-keys", ]; for feat in &meta.features { @@ -288,6 +289,7 @@ fn run_test_inner( } else if e.contains("not yet implemented") || e.contains("not supported") || e.contains("unsupported") + || e.contains("step limit") { TestResult::skip(path.to_path_buf(), format!("vm: {e}")) } 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) { results.push(TestResult::skip(path.clone(), reason)); stats.skip += 1; @@ -416,13 +425,14 @@ fn main() { println!(" test262 results"); println!("═══════════════════════════════════════"); println!(" total : {}", results.len()); - println!(" pass : {}", stats.pass); - println!(" fail : {}", stats.fail); - println!(" skip : {}", stats.skip); + let total = results.len() as f64; + println!(" pass : {} ({:.1}%)", stats.pass, stats.pass as f64 / total * 100.0); + 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!( " 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 { stats.pass as f64 / ran as f64 * 100.0 } else {