diff --git a/Cargo.lock b/Cargo.lock index 2747bef2..35836bf5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1160,7 +1160,7 @@ dependencies = [ [[package]] name = "oxide_builtins" -version = "0.15.1" +version = "0.15.2" dependencies = [ "chrono", "fast-float", @@ -1185,7 +1185,7 @@ dependencies = [ [[package]] name = "oxide_bytecode" -version = "0.15.1" +version = "0.15.2" dependencies = [ "num-bigint", "oxide_log", @@ -1193,7 +1193,7 @@ dependencies = [ [[package]] name = "oxide_cfg" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_emit", @@ -1204,7 +1204,7 @@ dependencies = [ [[package]] name = "oxide_cli" -version = "0.15.1" +version = "0.15.2" dependencies = [ "ansi_term", "bumpalo", @@ -1227,7 +1227,7 @@ dependencies = [ [[package]] name = "oxide_code_cache" -version = "0.15.1" +version = "0.15.2" dependencies = [ "lru", "oxide_bytecode", @@ -1236,7 +1236,7 @@ dependencies = [ [[package]] name = "oxide_compiler" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1256,7 +1256,7 @@ dependencies = [ [[package]] name = "oxide_dce" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1270,7 +1270,7 @@ dependencies = [ [[package]] name = "oxide_emit" -version = "0.15.1" +version = "0.15.2" dependencies = [ "num-bigint", "oxc_allocator", @@ -1285,7 +1285,7 @@ dependencies = [ [[package]] name = "oxide_engine" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1297,7 +1297,7 @@ dependencies = [ [[package]] name = "oxide_ir" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_log", @@ -1306,7 +1306,7 @@ dependencies = [ [[package]] name = "oxide_kernel" -version = "0.15.1" +version = "0.15.2" dependencies = [ "bumpalo", "dashmap", @@ -1320,7 +1320,7 @@ dependencies = [ [[package]] name = "oxide_liveness" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1332,7 +1332,7 @@ dependencies = [ [[package]] name = "oxide_log" -version = "0.15.1" +version = "0.15.2" dependencies = [ "tracing", "tracing-appender", @@ -1341,7 +1341,7 @@ dependencies = [ [[package]] name = "oxide_parser" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1356,7 +1356,7 @@ dependencies = [ [[package]] name = "oxide_regalloc" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "oxide_runtime_api" -version = "0.15.1" +version = "0.15.2" dependencies = [ "num-bigint", "num-traits", @@ -1385,7 +1385,7 @@ dependencies = [ [[package]] name = "oxide_test262" -version = "0.15.1" +version = "0.15.2" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1403,7 +1403,7 @@ dependencies = [ [[package]] name = "oxide_types" -version = "0.15.1" +version = "0.15.2" dependencies = [ "bumpalo", "dashmap", @@ -1416,7 +1416,7 @@ dependencies = [ [[package]] name = "oxide_vm" -version = "0.15.1" +version = "0.15.2" dependencies = [ "bumpalo", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 8654eec3..c47e34da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ members = [ ] [workspace.package] -version = "0.15.1" +version = "0.15.2" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/crates/oxide_test262/src/runner.rs b/crates/oxide_test262/src/runner.rs index fa6731d7..792adba1 100644 --- a/crates/oxide_test262/src/runner.rs +++ b/crates/oxide_test262/src/runner.rs @@ -262,7 +262,8 @@ pub(crate) fn read_async_output(vm: &Vm) -> String { } /// 串行与并行执行路径共享的每测试管线: -/// 读文件、解析元数据、应用跳过过滤,然后运行。恰好返回一个 `TestResult`。 +/// 先应用只看路径串的跳过过滤,再读文件、解析元数据、应用依赖内容的跳过过滤,然后运行。 +/// 恰好返回一个 `TestResult`。 /// worker 自有状态(`engine`、`harness_sources`、`harness_cache`、`harness_module_cache`)永不跨线程。 #[expect(clippy::too_many_arguments)] pub(crate) fn process_path( @@ -270,6 +271,30 @@ pub(crate) fn process_path( harness_sources: &HarnessSources, harness_cache: &Arc>, harness_module_cache: &Arc>, ) -> TestResult { + let path_str = path.to_string_lossy().replace('\\', "/"); + + if let Some(filter_str) = filter { + if !path_str.contains(filter_str.as_str()) { + return TestResult::skip(path.to_path_buf(), "filtered".into()); + } + } + + if path_str.contains("staging") { + return TestResult::skip(path.to_path_buf(), "staging tests excluded".into()); + } + + if !no_skip { + if path_str.contains("/function-ctor/") || path_str.contains("/realm/") { + return TestResult::skip(path.to_path_buf(), "unsupported class/eval feature excluded".into()); + } + if let Some(reason) = eval_family_excluded(&path_str) { + return TestResult::skip(path.to_path_buf(), reason.into()); + } + if let Some(reason) = pre_existing_excluded(&path_str) { + return TestResult::skip(path.to_path_buf(), reason.into()); + } + } + let source = match std::fs::read_to_string(path) { Ok(s) => s, Err(e) => return TestResult::skip(path.to_path_buf(), format!("read error: {e}")), @@ -280,28 +305,7 @@ pub(crate) fn process_path( None => return TestResult::skip(path.to_path_buf(), String::from("no YAML metadata")), }; - if let Some(filter_str) = filter { - let path_str = path.to_string_lossy().replace('\\', "/"); - if !path_str.contains(filter_str.as_str()) { - return TestResult::skip(path.to_path_buf(), "filtered".into()); - } - } - - if path.to_string_lossy().contains("staging") { - return TestResult::skip(path.to_path_buf(), "staging tests excluded".into()); - } - if !no_skip { - let path_str = path.to_string_lossy().replace('\\', "/"); - if path_str.contains("/function-ctor/") || path_str.contains("/realm/") { - return TestResult::skip(path.to_path_buf(), "unsupported class/eval feature excluded".into()); - } - if let Some(reason) = eval_family_excluded(&path_str) { - return TestResult::skip(path.to_path_buf(), reason.into()); - } - if let Some(reason) = pre_existing_excluded(&path_str) { - return TestResult::skip(path.to_path_buf(), reason.into()); - } if let Some(reason) = is_skipped(&meta) { return TestResult::skip(path.to_path_buf(), reason); }