diff --git a/.gitignore b/.gitignore index 3f0820ee..08231d98 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ AGENTS.md .claude/ # Build Artifacts -target/ \ No newline at end of file +target/ +test262-crash.log \ No newline at end of file diff --git a/crates/oxide_test262/src/main.rs b/crates/oxide_test262/src/main.rs index bc656d40..341caecd 100644 --- a/crates/oxide_test262/src/main.rs +++ b/crates/oxide_test262/src/main.rs @@ -2,6 +2,7 @@ use oxide_compiler::compiler::Compiler; use oxide_kernel::kernel::{KernelConfig, OxideKernel}; use oxide_vm::vm::Vm; use serde::Deserialize; +use std::io::Write; use std::path::{Path, PathBuf}; use std::sync::Arc; use std::time::Duration; @@ -155,6 +156,7 @@ fn is_skipped(meta: &TestMeta) -> Option { "regexp-dotall", "json-superset", "for-of", + "Temporal", "cross-realm", "new.target", "well-formed-json-stringify", @@ -162,7 +164,7 @@ fn is_skipped(meta: &TestMeta) -> Option { ]; for feat in &meta.features { - if excluded_features.contains(&feat.as_str()) { + if excluded_features.contains(&feat.as_str()) || feat.starts_with("Intl") { return Some(format!("excluded feature: {feat}")); } } @@ -341,7 +343,7 @@ fn main() { let total = paths.len(); for (i, path) in paths.iter().enumerate() { - if i % 100 == 0 { + if i % 500 == 0 { eprintln!( " progress: {}/{} ({}% pass={} fail={} skip={})", i, @@ -389,6 +391,14 @@ fn main() { continue; } + let rel = path.strip_prefix(&test262_root).unwrap_or(path); + if let Ok(mut f) = std::fs::File::create("test262-crash.log") { + let _ = write!(f, "{}\n", rel.display()); + let _ = f.flush(); + } + eprintln!(" running: {}", rel.display()); + let _ = std::io::stderr().flush(); + let result = run_test(path, &source, &meta, &kernel); match &result.outcome { TestOutcome::Pass(_) => stats.pass += 1,