Introduce a Test262-inspired conformance test suite with parallel runner, TOML manifest, and policy enforcement (pass/known_fail/skip). Covers language core (variables, expressions, functions, control flow, types), DOM bindings, events, Promises, scheduling, and 20 known-fail cases documenting unsupported features (for/while loops, try/catch, arrays, objects, arrow functions, etc.). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
178 lines
3.4 KiB
TOML
178 lines
3.4 KiB
TOML
[package]
|
|
name = "rust_browser"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
publish = false
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
|
|
members = [
|
|
"crates/app_browser",
|
|
"crates/browser_runtime",
|
|
"crates/web_api",
|
|
|
|
"crates/js",
|
|
"crates/js_vm",
|
|
"crates/js_parser",
|
|
|
|
"crates/dom",
|
|
"crates/html",
|
|
"crates/css",
|
|
"crates/selectors",
|
|
"crates/style",
|
|
"crates/layout",
|
|
"crates/display_list",
|
|
"crates/render",
|
|
"crates/graphics",
|
|
|
|
"crates/net",
|
|
"crates/storage",
|
|
"crates/image",
|
|
"crates/fonts",
|
|
|
|
"crates/platform",
|
|
"crates/shared",
|
|
]
|
|
|
|
default-members = [
|
|
"crates/app_browser"
|
|
]
|
|
|
|
# --- Workspace-wide dependency versions ---
|
|
# Keep this list small and intentional. Prefer std where possible.
|
|
|
|
[workspace.dependencies]
|
|
# Error handling
|
|
anyhow = "1"
|
|
thiserror = "1"
|
|
|
|
# Logging / tracing
|
|
log = "0.4"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] }
|
|
|
|
# Utilities
|
|
bitflags = "2"
|
|
image_decoder = { package = "image", version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
|
|
resvg = "0.47"
|
|
once_cell = "1"
|
|
smallvec = "1"
|
|
indexmap = "2"
|
|
|
|
# Bytes / text
|
|
bytes = "1"
|
|
encoding_rs = "0.8"
|
|
unicode-segmentation = "1"
|
|
unicode-bidi = "0.3"
|
|
|
|
# Parsing helpers (use sparingly)
|
|
logos = "0.14"
|
|
|
|
# Windowing and graphics
|
|
winit = "0.30"
|
|
softbuffer = "0.4"
|
|
url = "2"
|
|
|
|
# Networking
|
|
ureq = "2"
|
|
|
|
# Testing
|
|
proptest = "1"
|
|
tiny_http = "0.12"
|
|
|
|
# --- Workspace lints (Rust 1.70+) ---
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
# Pedantic-by-default is often too noisy; start conservative and tighten over time.
|
|
all = { level = "warn", priority = -1 }
|
|
correctness = { level = "deny", priority = -1 }
|
|
suspicious = { level = "deny", priority = -1 }
|
|
perf = { level = "warn", priority = -1 }
|
|
complexity = { level = "warn", priority = -1 }
|
|
style = { level = "warn", priority = -1 }
|
|
|
|
# Allow some lints that tend to create churn early on
|
|
module_name_repetitions = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|
|
|
|
# --- Profile defaults ---
|
|
|
|
[profile.dev]
|
|
debug = true
|
|
|
|
[profile.release]
|
|
debug = 1
|
|
lto = false
|
|
codegen-units = 16
|
|
|
|
# Dependencies for the root package (integration tests)
|
|
[dependencies]
|
|
html = { path = "crates/html" }
|
|
dom = { path = "crates/dom" }
|
|
css = { path = "crates/css" }
|
|
selectors = { path = "crates/selectors" }
|
|
style = { path = "crates/style" }
|
|
layout = { path = "crates/layout" }
|
|
display_list = { path = "crates/display_list" }
|
|
render = { path = "crates/render" }
|
|
shared = { path = "crates/shared" }
|
|
net = { path = "crates/net" }
|
|
image = { path = "crates/image" }
|
|
browser_runtime = { path = "crates/browser_runtime" }
|
|
js = { path = "crates/js" }
|
|
js_vm = { path = "crates/js_vm" }
|
|
web_api = { path = "crates/web_api" }
|
|
|
|
[dev-dependencies]
|
|
app_browser = { path = "crates/app_browser" }
|
|
tempfile = "3"
|
|
|
|
[[test]]
|
|
name = "goldens"
|
|
path = "tests/goldens.rs"
|
|
|
|
[[test]]
|
|
name = "main_cli_tests"
|
|
path = "tests/main_cli_tests.rs"
|
|
|
|
[[test]]
|
|
name = "external_css_test"
|
|
path = "tests/external_css_test.rs"
|
|
|
|
[[test]]
|
|
name = "navigation_tests"
|
|
path = "tests/navigation_tests.rs"
|
|
|
|
[[test]]
|
|
name = "regen_goldens"
|
|
path = "tests/regen_goldens.rs"
|
|
|
|
[[test]]
|
|
name = "wpt_harness"
|
|
path = "tests/wpt_harness.rs"
|
|
|
|
[[test]]
|
|
name = "js_tests"
|
|
path = "tests/js_tests.rs"
|
|
|
|
[[test]]
|
|
name = "js_dom_tests"
|
|
path = "tests/js_dom_tests.rs"
|
|
|
|
[[test]]
|
|
name = "js_events"
|
|
path = "tests/js_events.rs"
|
|
|
|
[[test]]
|
|
name = "js_scheduling"
|
|
path = "tests/js_scheduling.rs"
|
|
|
|
[[test]]
|
|
name = "js262_harness"
|
|
path = "tests/js262_harness.rs"
|