[INFO] fetching crate crawlkit-parser 0.5.0...
[INFO] testing crawlkit-parser-0.5.0 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate crawlkit-parser 0.5.0 into /workspace/builds/worker-1-tc1/source
[INFO] started tweaking crates.io crate crawlkit-parser 0.5.0
[INFO] finished tweaking crates.io crate crawlkit-parser 0.5.0
[INFO] tweaked toml for crates.io crate crawlkit-parser 0.5.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate crawlkit-parser 0.5.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate crawlkit-parser 0.5.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded enum-extract-macro v0.1.1
[INFO] [stderr]   Downloaded indextree-macros v0.1.3
[INFO] [stderr]   Downloaded indextree v4.8.1
[INFO] [stderr]   Downloaded enum-extract-error v0.1.1
[INFO] [stderr]   Downloaded scraper v0.22.0
[INFO] [stderr]   Downloaded html-escape v0.2.14
[INFO] [stderr]   Downloaded skyscraper v0.6.4
[INFO] [stderr]   Downloaded cssparser v0.34.0
[INFO] [stderr]   Downloaded dom_smoothie v0.18.0
[INFO] [stderr]   Downloaded crawlkit-core v0.5.0
[INFO] [stderr]   Downloaded selectors v0.26.0
[INFO] [stderr]   Downloaded gjson v0.8.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751
[INFO] running `Command { std: "docker" "start" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling mac v0.1.1
[INFO] [stderr]    Compiling tendril v0.5.1
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling servo_arc v0.4.3
[INFO] [stderr]    Compiling futf v0.1.5
[INFO] [stderr]    Compiling rustc-hash v2.1.3
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling tendril v0.4.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling html-escape v0.2.14
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling string_cache v0.9.0
[INFO] [stderr]    Compiling phf_codegen v0.13.1
[INFO] [stderr]    Compiling string_cache_codegen v0.6.1
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling selectors v0.38.0
[INFO] [stderr]    Compiling ego-tree v0.10.0
[INFO] [stderr]    Compiling flagset v0.4.7
[INFO] [stderr]    Compiling gjson v0.8.1
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling web_atoms v0.2.5
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling selectors v0.26.0
[INFO] [stderr]    Compiling ordered-float v4.6.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling markup5ever v0.14.1
[INFO] [stderr]    Compiling regex-automata v0.4.15
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling cssparser-macros v0.7.0
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling match_token v0.1.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling cssparser v0.34.0
[INFO] [stderr]    Compiling phf v0.13.1
[INFO] [stderr]    Compiling regex v1.13.0
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling cssparser v0.37.0
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling enum-extract-error v0.1.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling enum-extract-macro v0.1.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling markup5ever v0.39.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling html5ever v0.39.0
[INFO] [stderr]    Compiling indextree-macros v0.1.3
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling indextree v4.8.1
[INFO] [stderr]    Compiling skyscraper v0.6.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling dom_query v0.28.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling html5ever v0.29.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling dom_smoothie v0.18.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling scraper v0.22.0
[INFO] [stderr]    Compiling crawlkit-core v0.5.0
[INFO] [stderr]    Compiling crawlkit-parser v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 20s
[INFO] running `Command { std: "docker" "inspect" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling crawlkit-parser v0.5.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `提取标题_无标题返回None` should have a snake case name
[INFO] [stdout]    --> src/metadata.rs:697:8
[INFO] [stdout]     |
[INFO] [stdout] 697 |     fn 提取标题_无标题返回None() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `提取标题_无标题返回_none`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `提取charset_无声明返回None` should have a snake case name
[INFO] [stdout]    --> src/metadata.rs:719:8
[INFO] [stdout]     |
[INFO] [stdout] 719 |     fn 提取charset_无声明返回None() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `提取charset_无声明返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_url_无效返回None` should have a snake case name
[INFO] [stdout]     --> src/metadata.rs:1021:8
[INFO] [stdout]      |
[INFO] [stdout] 1021 |     fn resolve_url_无效返回None() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `resolve_url_无效返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_icon_size_any返回None` should have a snake case name
[INFO] [stdout]     --> src/metadata.rs:1054:8
[INFO] [stdout]      |
[INFO] [stdout] 1054 |     fn parse_icon_size_any返回None() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `parse_icon_size_any返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_meta_content_无匹配返回None` should have a snake case name
[INFO] [stdout]     --> src/metadata.rs:1072:8
[INFO] [stdout]      |
[INFO] [stdout] 1072 |     fn extract_meta_content_无匹配返回None() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `extract_meta_content_无匹配返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_og_property_不存在返回None` should have a snake case name
[INFO] [stdout]     --> src/metadata.rs:1120:8
[INFO] [stdout]      |
[INFO] [stdout] 1120 |     fn extract_og_property_不存在返回None() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `extract_og_property_不存在返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `剥离HTML标签` should have a snake case name
[INFO] [stdout]    --> src/text.rs:551:8
[INFO] [stdout]     |
[INFO] [stdout] 551 |     fn 剥离HTML标签() {
[INFO] [stdout]     |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `剥离_html标签`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `带基础URL构造` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:515:8
[INFO] [stdout]     |
[INFO] [stdout] 515 |     fn 带基础URL构造() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `带基础_url构造`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `设置基础URL` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:522:8
[INFO] [stdout]     |
[INFO] [stdout] 522 |     fn 设置基础URL() {
[INFO] [stdout]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `设置基础_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `解析HTML片段` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:599:8
[INFO] [stdout]     |
[INFO] [stdout] 599 |     fn 解析HTML片段() {
[INFO] [stdout]     |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `解析_html片段`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `解析相对URL` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:702:8
[INFO] [stdout]     |
[INFO] [stdout] 702 |     fn 解析相对URL() {
[INFO] [stdout]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `解析相对_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `解析绝对URL` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:712:8
[INFO] [stdout]     |
[INFO] [stdout] 712 |     fn 解析绝对URL() {
[INFO] [stdout]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `解析绝对_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `无基础URL时返回None` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:719:8
[INFO] [stdout]     |
[INFO] [stdout] 719 |     fn 无基础URL时返回None() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `无基础_url时返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `空href返回None` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:725:8
[INFO] [stdout]     |
[INFO] [stdout] 725 |     fn 空href返回None() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `空href返回_none`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `检查是否有基础URL` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:731:8
[INFO] [stdout]     |
[INFO] [stdout] 731 |     fn 检查是否有基础URL() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `检查是否有基础_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `获取基础URL引用` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:739:8
[INFO] [stdout]     |
[INFO] [stdout] 739 |     fn 获取基础URL引用() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `获取基础_url引用`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `便捷解析带URL` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:754:8
[INFO] [stdout]     |
[INFO] [stdout] 754 |     fn 便捷解析带URL() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `便捷解析带_url`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `解析包含特殊字符的HTML` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:851:8
[INFO] [stdout]     |
[INFO] [stdout] 851 |     fn 解析包含特殊字符的HTML() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `解析包含特殊字符的_html`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `基础URL解析图片地址` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:894:8
[INFO] [stdout]     |
[INFO] [stdout] 894 |     fn 基础URL解析图片地址() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `基础_url解析图片地址`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 13.24s
[INFO] running `Command { std: "docker" "inspect" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: function `提取标题_无标题返回None` should have a snake case name
[INFO] [stderr]    --> src/metadata.rs:697:8
[INFO] [stderr]     |
[INFO] [stderr] 697 |     fn 提取标题_无标题返回None() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `提取标题_无标题返回_none`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `提取charset_无声明返回None` should have a snake case name
[INFO] [stderr]    --> src/metadata.rs:719:8
[INFO] [stderr]     |
[INFO] [stderr] 719 |     fn 提取charset_无声明返回None() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `提取charset_无声明返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `resolve_url_无效返回None` should have a snake case name
[INFO] [stderr]     --> src/metadata.rs:1021:8
[INFO] [stderr]      |
[INFO] [stderr] 1021 |     fn resolve_url_无效返回None() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `resolve_url_无效返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_icon_size_any返回None` should have a snake case name
[INFO] [stderr]     --> src/metadata.rs:1054:8
[INFO] [stderr]      |
[INFO] [stderr] 1054 |     fn parse_icon_size_any返回None() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `parse_icon_size_any返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_meta_content_无匹配返回None` should have a snake case name
[INFO] [stderr]     --> src/metadata.rs:1072:8
[INFO] [stderr]      |
[INFO] [stderr] 1072 |     fn extract_meta_content_无匹配返回None() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `extract_meta_content_无匹配返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_og_property_不存在返回None` should have a snake case name
[INFO] [stderr]     --> src/metadata.rs:1120:8
[INFO] [stderr]      |
[INFO] [stderr] 1120 |     fn extract_og_property_不存在返回None() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `extract_og_property_不存在返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `剥离HTML标签` should have a snake case name
[INFO] [stderr]    --> src/text.rs:551:8
[INFO] [stderr]     |
[INFO] [stderr] 551 |     fn 剥离HTML标签() {
[INFO] [stderr]     |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `剥离_html标签`
[INFO] [stderr] 
[INFO] [stderr] warning: function `带基础URL构造` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:515:8
[INFO] [stderr]     |
[INFO] [stderr] 515 |     fn 带基础URL构造() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `带基础_url构造`
[INFO] [stderr] 
[INFO] [stderr] warning: function `设置基础URL` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:522:8
[INFO] [stderr]     |
[INFO] [stderr] 522 |     fn 设置基础URL() {
[INFO] [stderr]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `设置基础_url`
[INFO] [stderr] 
[INFO] [stderr] warning: function `解析HTML片段` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:599:8
[INFO] [stderr]     |
[INFO] [stderr] 599 |     fn 解析HTML片段() {
[INFO] [stderr]     |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `解析_html片段`
[INFO] [stderr] 
[INFO] [stderr] warning: function `解析相对URL` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:702:8
[INFO] [stderr]     |
[INFO] [stderr] 702 |     fn 解析相对URL() {
[INFO] [stderr]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `解析相对_url`
[INFO] [stderr] 
[INFO] [stderr] warning: function `解析绝对URL` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:712:8
[INFO] [stderr]     |
[INFO] [stderr] 712 |     fn 解析绝对URL() {
[INFO] [stderr]     |        ^^^^^^^^^^^ help: convert the identifier to snake case: `解析绝对_url`
[INFO] [stderr] 
[INFO] [stderr] warning: function `无基础URL时返回None` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:719:8
[INFO] [stderr]     |
[INFO] [stderr] 719 |     fn 无基础URL时返回None() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `无基础_url时返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `空href返回None` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:725:8
[INFO] [stderr]     |
[INFO] [stderr] 725 |     fn 空href返回None() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `空href返回_none`
[INFO] [stderr] 
[INFO] [stderr] warning: function `检查是否有基础URL` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:731:8
[INFO] [stderr]     |
[INFO] [stderr] 731 |     fn 检查是否有基础URL() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `检查是否有基础_url`
[INFO] [stderr] 
[INFO] [stderr] warning: function `获取基础URL引用` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:739:8
[INFO] [stderr]     |
[INFO] [stderr] 739 |     fn 获取基础URL引用() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `获取基础_url引用`
[INFO] [stderr] 
[INFO] [stderr] warning: function `便捷解析带URL` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:754:8
[INFO] [stderr]     |
[INFO] [stderr] 754 |     fn 便捷解析带URL() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `便捷解析带_url`
[INFO] [stderr] 
[INFO] [stderr] warning: function `解析包含特殊字符的HTML` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:851:8
[INFO] [stderr]     |
[INFO] [stderr] 851 |     fn 解析包含特殊字符的HTML() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `解析包含特殊字符的_html`
[INFO] [stderr] 
[INFO] [stderr] warning: function `基础URL解析图片地址` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:894:8
[INFO] [stderr]     |
[INFO] [stderr] 894 |     fn 基础URL解析图片地址() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `基础_url解析图片地址`
[INFO] [stderr] 
[INFO] [stderr] warning: `crawlkit-parser` (lib test) generated 19 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/crawlkit_parser-a53b9ec277c4401f)
[INFO] [stdout] 
[INFO] [stdout] running 518 tests
[INFO] [stdout] test contact::tests::test_extract_email_label ... ok
[INFO] [stdout] test contact::tests::test_detect_phone_types ... ok
[INFO] [stdout] test contact::tests::test_extract_phone_label ... ok
[INFO] [stdout] test contact::tests::test_detect_social_platforms ... ok
[INFO] [stdout] test contact::tests::test_extract_emails_dedup_and_filter ... ok
[INFO] [stdout] test contact::tests::test_extract_emails_from_meta_and_text ... ok
[INFO] [stdout] test contact::tests::test_extract_social_username ... ok
[INFO] [stdout] test contact::tests::test_extract_structured_address_microdata ... ok
[INFO] [stdout] test contact::tests::test_extract_business_name ... ok
[INFO] [stdout] test contact::tests::test_find_contact_page ... ok
[INFO] [stdout] test contact::tests::test_is_valid_email ... ok
[INFO] [stdout] test contact::tests::test_extract_structured_address_with_coordinates ... ok
[INFO] [stdout] test contact::tests::test_extract_emails_from_mailto ... ok
[INFO] [stdout] test contact::tests::test_extract_social_links_dedup ... ok
[INFO] [stdout] test contact::tests::test_normalize_phone_removes_non_digits ... ok
[INFO] [stdout] test content::tests::test_build_outline_multiple_h1 ... ok
[INFO] [stdout] test contact::tests::test_extract_social_links ... ok
[INFO] [stdout] test content::tests::test_build_outline_simple ... ok
[INFO] [stdout] test content::tests::test_extract_code_block_with_data_lang ... ok
[INFO] [stdout] test content::tests::test_extract_code_blocks_skips_inline_inside_pre ... ok
[INFO] [stdout] test content::tests::test_extract_code_blocks_inline ... ok
[INFO] [stdout] test content::tests::test_extract_headings_empty ... ok
[INFO] [stdout] test content::tests::test_extract_definition_list_basic ... ok
[INFO] [stdout] test content::tests::test_extract_code_blocks_pre_code ... ok
[INFO] [stdout] test content::tests::test_extract_headings_basic ... ok
[INFO] [stdout] test content::tests::test_extract_definition_list_dt_only ... ok
[INFO] [stdout] test content::tests::test_extract_code_block_with_filename ... ok
[INFO] [stdout] test contact::tests::test_extract_address_components ... ok
[INFO] [stdout] test content::tests::test_extract_images_resolves_url ... ok
[INFO] [stdout] test content::tests::test_extract_images_skips_data_uri ... ok
[INFO] [stdout] test content::tests::test_extract_list_skips_empty_items ... ok
[INFO] [stdout] test content::tests::test_extract_image_with_srcset ... ok
[INFO] [stdout] test content::tests::test_extract_lists_ordered ... ok
[INFO] [stdout] test contact::tests::test_empty_html_edge_cases ... ok
[INFO] [stdout] test contact::tests::test_extract_phones_deduplication ... ok
[INFO] [stdout] test contact::tests::test_extract_address_from_element ... ok
[INFO] [stdout] test contact::tests::test_contact_info_full ... ok
[INFO] [stdout] test contact::tests::test_extract_phones_from_tel_and_text ... ok
[INFO] [stdout] test content::tests::test_extract_paragraphs_empty ... ok
[INFO] [stdout] test content::tests::test_extract_paragraphs_basic ... ok
[INFO] [stdout] test content::tests::test_extract_headings_ignores_empty ... ok
[INFO] [stdout] test contact::tests::test_convenience_functions ... ok
[INFO] [stdout] test contact::tests::test_contact_info_empty ... ok
[INFO] [stdout] test content::tests::test_extract_quotes_filters_short ... ok
[INFO] [stdout] test content::tests::test_extract_quotes_basic ... ok
[INFO] [stdout] test content::tests::test_extract_quotes_empty ... ok
[INFO] [stdout] test content::tests::test_extract_image_decorative ... ok
[INFO] [stdout] test content::tests::test_extract_images_basic ... ok
[INFO] [stdout] test content::tests::test_extract_images_absolute_url ... ok
[INFO] [stdout] test content::tests::test_extract_images_no_src ... ok
[INFO] [stdout] test content::tests::test_extract_list_with_nested ... ok
[INFO] [stdout] test content::tests::test_extract_lists_unordered ... ok
[INFO] [stdout] test content::tests::test_resolve_image_url_protocol_relative ... ok
[INFO] [stdout] test content::tests::test_resolve_image_url_relative ... ok
[INFO] [stdout] test content::tests::test_resolve_image_url_root_relative ... ok
[INFO] [stdout] test content::tests::test_is_known_language_positive ... ok
[INFO] [stdout] test content::tests::test_resolve_image_url_absolute ... ok
[INFO] [stdout] test content::tests::test_is_known_language_negative ... ok
[INFO] [stdout] test content::tests::test_extract_quotes_with_inner_cite ... ok
[INFO] [stdout] test content::tests::test_extract_table_cell_with_colspan ... ok
[INFO] [stdout] test content::tests::test_extract_table_with_caption ... ok
[INFO] [stdout] test content::tests::test_extract_tables_basic ... ok
[INFO] [stdout] test feeds::tests::common_sitemap_paths_非空 ... ok
[INFO] [stdout] test content::tests::test_extract_tables_empty ... ok
[INFO] [stdout] test content::tests::test_extract_tables_no_thead ... ok
[INFO] [stdout] test content::tests::test_get_main_heading_fallback_to_h2 ... ok
[INFO] [stdout] test content::tests::test_get_main_heading_none ... ok
[INFO] [stdout] test feeds::tests::common_feed_paths_非空 ... ok
[INFO] [stdout] test content::tests::test_get_main_heading_from_h1 ... ok
[INFO] [stdout] test feeds::tests::get_atom_feed_返回第一个_atom ... ok
[INFO] [stdout] test feeds::tests::get_rss_feed_返回第一个_rss ... ok
[INFO] [stdout] test feeds::tests::extract_feed_info_返回_feedinfo ... ok
[INFO] [stdout] test feeds::tests::get_sitemap_返回第一个_sitemap ... ok
[INFO] [stdout] test feeds::tests::feed_info_结构功能 ... ok
[INFO] [stdout] test feeds::tests::get_feed_返回第一个任意_feed ... ok
[INFO] [stdout] test feeds::tests::所有_sitemap_path_以斜线开头 ... ok
[INFO] [stdout] test feeds::tests::提取_atom_feed_从_link_标签 ... ok
[INFO] [stdout] test extractor::tests::test_extracts_repeated_list_items_over_scattered_nav_links ... ok
[INFO] [stdout] test feeds::tests::提取_feed_时处理无_base_url ... ok
[INFO] [stdout] test feeds::tests::has_feeds_检测 ... ok
[INFO] [stdout] test feeds::tests::sitemap_new_便捷构造 ... ok
[INFO] [stdout] test feeds::tests::提取_json_feed_从_link_标签 ... ok
[INFO] [stdout] test feeds::tests::不重复记录相同_url ... ok
[INFO] [stdout] test feeds::tests::从_url_检测_atom ... ok
[INFO] [stdout] test feeds::tests::从_url_检测_json ... ok
[INFO] [stdout] test feeds::tests::从_url_检测默认_rss2 ... ok
[INFO] [stdout] test extractor::tests::test_slug_only_site_without_regex_hints ... ok
[INFO] [stdout] test feeds::tests::处理_href_属性缺失 ... ok
[INFO] [stdout] test feeds::tests::处理_malformed_url ... ok
[INFO] [stdout] test feeds::tests::所有_feed_path_以斜线开头 ... ok
[INFO] [stdout] test feeds::tests::提取_rss_feed_从_link_标签 ... ok
[INFO] [stdout] test feeds::tests::提取_sitemap_从链接文本 ... ok
[INFO] [stdout] test feeds::tests::提取_sitemap_从_link_标签 ... ok
[INFO] [stdout] test feeds::tests::无_base_url_时相对路径返回_none ... ok
[INFO] [stdout] test feeds::tests::检测_atom_类型 ... ok
[INFO] [stdout] test feeds::tests::检测_gzip_sitemap ... ok
[INFO] [stdout] test feeds::tests::检测_image_sitemap ... ok
[INFO] [stdout] test feeds::tests::检测_rss2_类型 ... ok
[INFO] [stdout] test feeds::tests::检测_json_feed_类型 ... ok
[INFO] [stdout] test feeds::tests::无_feed_时_get_rss_feed_返回_none ... ok
[INFO] [stdout] test feeds::tests::提取_sitemap_时过滤掉不含_sitemap_的链接 ... ok
[INFO] [stdout] test feeds::tests::检测_sitemap_index ... ok
[INFO] [stdout] test feeds::tests::检测_text_sitemap ... ok
[INFO] [stdout] test feeds::tests::检测_rss_旧版_类型 ... ok
[INFO] [stdout] test feeds::tests::解析协议相对_url ... ok
[INFO] [stdout] test feeds::tests::未知内容返回_unknown ... ok
[INFO] [stdout] test feeds::tests::检测_news_sitemap ... ok
[INFO] [stdout] test feeds::tests::提取多个_feed_并去重 ... ok
[INFO] [stdout] test feeds::tests::生成_url_去重 ... ok
[INFO] [stdout] test feeds::tests::生成_url_处理子路径_base ... ok
[INFO] [stdout] test feeds::tests::解析相对路径 ... ok
[INFO] [stdout] test feeds::tests::生成常见_sitemap_url ... ok
[INFO] [stdout] test feeds::tests::空内容返回_unknown ... ok
[INFO] [stdout] test extractor::tests::test_relative_url_resolution ... ok
[INFO] [stdout] test feeds::tests::检测标准_xml_sitemap ... ok
[INFO] [stdout] test feeds::tests::无_feed_时返回空列表 ... ok
[INFO] [stdout] test feeds::tests::生成常见_feed_url ... ok
[INFO] [stdout] test feeds::tests::解析绝对_url ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_cache_key_generated ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_default_values ... ok
[INFO] [stdout] test fingerprint::tests::test_amp_components_empty_when_no_amp ... ok
[INFO] [stdout] test extractor::tests::test_short_nav_text_is_penalized ... ok
[INFO] [stdout] test feeds::tests::解析空字符串返回_none ... ok
[INFO] [stdout] test fingerprint::tests::test_count_elements_basic ... ok
[INFO] [stdout] test fingerprint::tests::test_count_text_nodes_basic ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_pragma_no_cache ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_amp_runtime_absent ... ok
[INFO] [stdout] test feeds::tests::检测_video_sitemap ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_amp_page_with_emoji_attribute ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_with_etag ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_with_stale_revalidate ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_amp_page_with_amp_attribute ... ok
[INFO] [stdout] test fingerprint::tests::test_document_with_only_whitespace ... ok
[INFO] [stdout] test fingerprint::tests::test_document_with_script_style_excluded ... ok
[INFO] [stdout] test fingerprint::tests::test_amp_info_no_amp_version ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_from_meta_cache_control ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_last_modified ... ok
[INFO] [stdout] test fingerprint::tests::test_cache_hints_no_cache_directive ... ok
[INFO] [stdout] test fingerprint::tests::test_content_similarity_completely_different ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_amp_link_no_amp ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_canonical_link ... ok
[INFO] [stdout] test fingerprint::tests::test_content_similarity_identical ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_canonical_link_missing ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_main_content_fallback_to_body ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_non_amp_page ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_amp_components ... ok
[INFO] [stdout] test fingerprint::tests::test_detect_amp_runtime_present ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_amp_info_complete ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_document_alias ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_amp_link ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_empty_document ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_identical_html ... ok
[INFO] [stdout] test fingerprint::tests::test_hash_string_consistency ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_main_content_finds_article ... ok
[INFO] [stdout] test fingerprint::tests::test_is_amp_page_convenience ... ok
[INFO] [stdout] test fingerprint::tests::test_minor_change_detection ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_similarity_same_structure_different_text ... ok
[INFO] [stdout] test fingerprint::tests::test_get_amp_url_from_amp ... ok
[INFO] [stdout] test fingerprint::tests::test_nested_element_count ... ok
[INFO] [stdout] test fingerprint::tests::test_get_amp_url_from_non_amp ... ok
[INFO] [stdout] test fingerprint::tests::test_quick_hash_consistency ... ok
[INFO] [stdout] test fingerprint::tests::test_has_content_changed_false ... ok
[INFO] [stdout] test fingerprint::tests::test_resolve_absolute_url ... ok
[INFO] [stdout] test fingerprint::tests::test_resolve_invalid_base_url ... ok
[INFO] [stdout] test fingerprint::tests::test_resolve_relative_url ... ok
[INFO] [stdout] test fingerprint::tests::test_has_content_changed_true ... ok
[INFO] [stdout] test forms::tests::test_associate_labels_by_for_attr ... ok
[INFO] [stdout] test forms::tests::test_associate_labels_no_labels ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_by_id ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_by_name ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_hcaptcha ... ok
[INFO] [stdout] test forms::tests::test_associate_labels_by_wrapping ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_absent ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_recaptcha ... ok
[INFO] [stdout] test fingerprint::tests::test_extract_text_only_returns_all_text ... ok
[INFO] [stdout] test forms::tests::test_complex_form_with_select_and_textarea ... ok
[INFO] [stdout] test fingerprint::tests::test_quick_hash_empty ... ok
[INFO] [stdout] test fingerprint::tests::test_structural_change_detection ... ok
[INFO] [stdout] test forms::tests::test_complete_search_form_extraction ... ok
[INFO] [stdout] test forms::tests::test_detect_captcha_turnstile ... ok
[INFO] [stdout] test fingerprint::tests::test_fingerprint_different_content ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_comment ... ok
[INFO] [stdout] test forms::tests::test_complete_login_form_extraction ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_django_style ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_login ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_password_reset ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_present ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_various_patterns ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_search_with_q_name ... ok
[INFO] [stdout] test extractor::tests::test_with_url_rule_boosts_score ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_contact ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_create_account ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_newsletter ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_registration ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_search_by_name ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_search ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_signin_variant ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_unknown ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_absent ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_no_hidden_skip ... ok
[INFO] [stdout] test forms::tests::test_detect_csrf_token_non_hidden_ignored ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_checkout ... ok
[INFO] [stdout] test forms::tests::test_detect_form_type_upload ... ok
[INFO] [stdout] test forms::tests::test_extract_form_default_method ... ok
[INFO] [stdout] test forms::tests::test_extract_form_dialog_method ... ok
[INFO] [stdout] test forms::tests::test_extract_forms_handles_malformed_html ... ok
[INFO] [stdout] test forms::tests::test_extract_forms_multiple_forms ... ok
[INFO] [stdout] test forms::tests::test_extract_forms_no_forms ... ok
[INFO] [stdout] test forms::tests::test_extract_forms_single_form ... ok
[INFO] [stdout] test forms::tests::test_extract_input_field_all_attributes ... ok
[INFO] [stdout] test forms::tests::test_extract_input_field_basic ... ok
[INFO] [stdout] test forms::tests::test_extract_input_field_no_type_defaults_to_text ... ok
[INFO] [stdout] test forms::tests::test_extract_input_field_non_input_tag ... ok
[INFO] [stdout] test forms::tests::test_extract_select_field_basic ... ok
[INFO] [stdout] test forms::tests::test_extract_textarea_field_basic ... ok
[INFO] [stdout] test forms::tests::test_extract_form_non_form_element ... ok
[INFO] [stdout] test forms::tests::test_extract_select_field_empty ... ok
[INFO] [stdout] test forms::tests::test_extract_textarea_field_non_textarea_tag ... ok
[INFO] [stdout] test forms::tests::test_extract_form_fields_no_form_controls ... ok
[INFO] [stdout] test forms::tests::test_extract_select_field_non_select_tag ... ok
[INFO] [stdout] test forms::tests::test_extract_form_fields_mixed ... ok
[INFO] [stdout] test forms::tests::test_extract_select_field_option_without_value_uses_text ... ok
[INFO] [stdout] test forms::tests::test_extract_input_field_hidden ... ok
[INFO] [stdout] test forms::tests::test_extract_submit_text_button ... ok
[INFO] [stdout] test forms::tests::test_extract_submit_text_input ... ok
[INFO] [stdout] test forms::tests::test_extract_submit_text_only_first ... ok
[INFO] [stdout] test forms::tests::test_extract_submit_text_button_with_value ... ok
[INFO] [stdout] test forms::tests::test_field_type_from_html_type ... ok
[INFO] [stdout] test forms::tests::test_field_type_classification ... ok
[INFO] [stdout] test forms::tests::test_extract_textarea_field_empty ... ok
[INFO] [stdout] test forms::tests::test_form_field_anonymous ... ok
[INFO] [stdout] test forms::tests::test_form_get_field_by_name ... ok
[INFO] [stdout] test forms::tests::test_form_input_fields ... ok
[INFO] [stdout] test forms::tests::test_form_method_default ... ok
[INFO] [stdout] test forms::tests::test_form_field_creation ... ok
[INFO] [stdout] test forms::tests::test_form_method_from_str ... ok
[INFO] [stdout] test forms::tests::test_form_method_serialize ... ok
[INFO] [stdout] test forms::tests::test_form_type_all_enum_variants ... ok
[INFO] [stdout] test forms::tests::test_form_visible_fields ... ok
[INFO] [stdout] test forms::tests::test_form_without_id_or_name ... ok
[INFO] [stdout] test forms::tests::test_get_contact_forms ... ok
[INFO] [stdout] test forms::tests::test_get_contact_forms_empty ... ok
[INFO] [stdout] test forms::tests::test_has_login_form_true ... ok
[INFO] [stdout] test forms::tests::test_get_search_forms ... ok
[INFO] [stdout] test forms::tests::test_extract_submit_text_no_submit_button ... ok
[INFO] [stdout] test forms::tests::test_has_search_form_false ... ok
[INFO] [stdout] test html::tests::extract_absolute_links_by_css_filters_and_resolves ... ok
[INFO] [stdout] test forms::tests::test_has_forms_false ... ok
[INFO] [stdout] test forms::tests::test_has_forms_true ... ok
[INFO] [stdout] test forms::tests::test_get_login_forms_no_match ... ok
[INFO] [stdout] test forms::tests::test_has_login_form_false ... ok
[INFO] [stdout] test forms::tests::test_get_search_forms_multiple ... ok
[INFO] [stdout] test html::tests::resolve_url_skips_non_page_links ... ok
[INFO] [stdout] test forms::tests::test_get_login_forms ... ok
[INFO] [stdout] test forms::tests::test_has_search_form_true ... ok
[INFO] [stdout] test forms::tests::test_no_forms_in_empty_document ... ok
[INFO] [stdout] test html::tests::test_atom_xml_xpath_link_attr ... ok
[INFO] [stdout] test html::tests::try_extract_links_returns_selector_error ... ok
[INFO] [stdout] test forms::tests::test_select_option_creation ... ok
[INFO] [stdout] test html::tests::extract_absolute_links_by_xpath_reads_href_attributes ... ok
[INFO] [stdout] test links::tests::test_determine_link_type_internal_subdomain ... ok
[INFO] [stdout] test html::tests::test_sanitize_for_xpath_multiple_void_elements ... ok
[INFO] [stdout] test html::tests::test_sanitize_for_xpath_self_closing_unchanged ... ok
[INFO] [stdout] test links::tests::test_determine_link_type_internal_exact ... ok
[INFO] [stdout] test links::tests::test_calculate_link_stats ... ok
[INFO] [stdout] test links::tests::test_calculate_link_stats_empty ... ok
[INFO] [stdout] test links::tests::test_determine_link_type_external ... ok
[INFO] [stdout] test html::tests::test_rss_xml_xpath_text_node ... ok
[INFO] [stdout] test links::tests::test_extract_links_deduplicates ... ok
[INFO] [stdout] test links::tests::test_determine_link_type_no_base ... ok
[INFO] [stdout] test html::tests::test_sanitize_for_xpath_meta ... ok
[INFO] [stdout] test html::tests::test_sanitize_for_xpath_non_void_unchanged ... ok
[INFO] [stdout] test links::tests::test_extract_links_filters_anchors_and_javascript ... ok
[INFO] [stdout] test links::tests::test_filter_internal_links ... ok
[INFO] [stdout] test links::tests::test_extract_link_returns_none_for_element_without_href ... ok
[INFO] [stdout] test links::tests::test_extract_links_multiple_selectors ... ok
[INFO] [stdout] test links::tests::test_normalize_url_keeps_http_and_https ... ok
[INFO] [stdout] test links::tests::test_extract_link_with_title_and_target ... ok
[INFO] [stdout] test links::tests::test_extract_links_protocol_relative ... ok
[INFO] [stdout] test links::tests::test_normalize_url_preserves_non_standard_port ... ok
[INFO] [stdout] test links::tests::test_extract_links_resolves_relative_with_base ... ok
[INFO] [stdout] test links::tests::test_only_whitespace_href_skipped ... ok
[INFO] [stdout] test links::tests::test_filter_external_links ... ok
[INFO] [stdout] test links::tests::test_resolve_url_absolute ... ok
[INFO] [stdout] test links::tests::test_filter_followable_links ... ok
[INFO] [stdout] test links::tests::test_get_external_domains ... ok
[INFO] [stdout] test links::tests::test_parse_rel_attribute_case_insensitive ... ok
[INFO] [stdout] test links::tests::test_normalize_url_noop ... ok
[INFO] [stdout] test links::tests::test_normalize_url_removes_default_port ... ok
[INFO] [stdout] test links::tests::test_normalize_url_removes_fragment ... ok
[INFO] [stdout] test links::tests::test_parse_rel_attribute_empty ... ok
[INFO] [stdout] test links::tests::test_parse_rel_attribute_multiple ... ok
[INFO] [stdout] test links::tests::test_should_skip_link_with_empty_href ... ok
[INFO] [stdout] test links::tests::test_resolve_url_protocol_relative ... ok
[INFO] [stdout] test links::tests::test_extract_links_basic ... ok
[INFO] [stdout] test links::tests::test_resolve_url_relative ... ok
[INFO] [stdout] test links::tests::test_same_domain_different_scheme_is_external ... ok
[INFO] [stdout] test links::tests::test_parse_rel_attribute_nofollow ... ok
[INFO] [stdout] test links::tests::test_resolve_url_empty_or_skip ... ok
[INFO] [stdout] test metadata::tests::extract_custom_meta_过滤已知字段 ... ok
[INFO] [stdout] test metadata::tests::extract_meta_content_by_name ... ok
[INFO] [stdout] test metadata::tests::extract_metadata_错误处理_无效选择器不崩溃 ... ok
[INFO] [stdout] test metadata::tests::extract_meta_content_by_property ... ok
[INFO] [stdout] test metadata::tests::extract_meta_content_无匹配返回None ... ok
[INFO] [stdout] test metadata::tests::extract_metadata_完整提取 ... ok
[INFO] [stdout] test metadata::tests::extract_metadata_无base_url ... ok
[INFO] [stdout] test metadata::tests::extract_microdata_基本提取 ... ok
[INFO] [stdout] test metadata::tests::parse_icon_size_any返回None ... ok
[INFO] [stdout] test metadata::tests::提取charset_http_equiv ... ok
[INFO] [stdout] test metadata::tests::resolve_url_无效返回None ... ok
[INFO] [stdout] test metadata::tests::extract_og_property_存在 ... ok
[INFO] [stdout] test metadata::tests::extract_og_property_不存在返回None ... ok
[INFO] [stdout] test metadata::tests::extract_twitter_property_存在 ... ok
[INFO] [stdout] test metadata::tests::find_largest_icon_无尺寸时选第一个 ... ok
[INFO] [stdout] test metadata::tests::find_largest_icon_选择最大 ... ok
[INFO] [stdout] test metadata::tests::提取canonical_相对路径 ... ok
[INFO] [stdout] test metadata::tests::提取apple_touch_icon ... ok
[INFO] [stdout] test metadata::tests::resolve_url_绝对路径 ... ok
[INFO] [stdout] test metadata::tests::resolve_url_相对路径 ... ok
[INFO] [stdout] test metadata::tests::提取alternates ... ok
[INFO] [stdout] test metadata::tests::parse_icon_size_标准格式 ... ok
[INFO] [stdout] test metadata::tests::提取base_url ... ok
[INFO] [stdout] test metadata::tests::提取canonical_绝对路径 ... ok
[INFO] [stdout] test metadata::tests::提取charset_meta标签 ... ok
[INFO] [stdout] test metadata::tests::提取opengraph_基本字段 ... ok
[INFO] [stdout] test metadata::tests::提取favicon_选最大尺寸 ... ok
[INFO] [stdout] test metadata::tests::提取robots_高级指令 ... ok
[INFO] [stdout] test metadata::tests::提取关键词_无关键词返回空 ... ok
[INFO] [stdout] test metadata::tests::提取json_ld ... ok
[INFO] [stdout] test metadata::tests::提取twitter_card_基本字段 ... ok
[INFO] [stdout] test metadata::tests::提取robots_max_snippet ... ok
[INFO] [stdout] test metadata::tests::提取robots_允许全部 ... ok
[INFO] [stdout] test metadata::tests::提取robots_无标签默认允许 ... ok
[INFO] [stdout] test metadata::tests::提取关键词_逗号分隔 ... ok
[INFO] [stdout] test metadata::tests::提取charset_无声明返回None ... ok
[INFO] [stdout] test metadata::tests::提取robots_noindex_nofollow ... ok
[INFO] [stdout] test metadata::tests::提取标题_h1最后兜底 ... ok
[INFO] [stdout] test pagination::tests::test_detect_infinite_scroll_by_data_attr ... ok
[INFO] [stdout] test metadata::tests::提取标题_twitter_title其次 ... ok
[INFO] [stdout] test metadata::tests::提取标题_无标题返回None ... ok
[INFO] [stdout] test metadata::tests::提取语言_html_lang属性 ... ok
[INFO] [stdout] test metadata::tests::提取标题_og_title优先 ... ok
[INFO] [stdout] test pagination::tests::test_detect_infinite_scroll_by_class ... ok
[INFO] [stdout] test pagination::tests::test_detect_load_more_english ... ok
[INFO] [stdout] test metadata::tests::提取favicon ... ok
[INFO] [stdout] test pagination::tests::test_detect_infinite_scroll_none ... ok
[INFO] [stdout] test pagination::tests::test_detect_infinite_scroll_by_script ... ok
[INFO] [stdout] test pagination::tests::test_detect_load_more_multiple_classes ... ok
[INFO] [stdout] test pagination::tests::test_detect_load_more_none ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_empty ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_load_more ... ok
[INFO] [stdout] test metadata::tests::提取语言_http_equiv ... ok
[INFO] [stdout] test metadata::tests::提取opengraph_扩展字段 ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_numbered ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_offset ... ok
[INFO] [stdout] test metadata::tests::提取标题_title标签兜底 ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_links_empty_html ... ok
[INFO] [stdout] test pagination::tests::test_detect_load_more_by_class ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_infinite_scroll ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_links_deduplicates ... ok
[INFO] [stdout] test pagination::tests::test_detect_load_more_by_text ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_info_full ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_links_numbered ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_cursor ... ok
[INFO] [stdout] test pagination::tests::test_determine_pagination_type_next_prev_from_text ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_info_no_match ... ok
[INFO] [stdout] test pagination::tests::test_extract_pagination_infinite_scroll ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_info_total_items ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_info_simple ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_no_match ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_from_url_empty ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_links_text_number_fallback ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_from_numeric_suffix ... ok
[INFO] [stdout] test pagination::tests::test_generate_page_url_replace_path ... ok
[INFO] [stdout] test pagination::tests::test_generate_page_url_append_query ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_from_path ... ok
[INFO] [stdout] test pagination::tests::test_get_next_page_chinese_text ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_from_query ... ok
[INFO] [stdout] test pagination::tests::test_extract_rel_links_first_last ... ok
[INFO] [stdout] test pagination::tests::test_extract_rel_links_next_prev ... ok
[INFO] [stdout] test pagination::tests::test_extract_pagination_load_more ... ok
[INFO] [stdout] test pagination::tests::test_extract_rel_links_with_base_resolution ... ok
[INFO] [stdout] test pagination::tests::test_get_prev_page_chinese_text ... ok
[INFO] [stdout] test pagination::tests::test_extract_pagination_numbered ... ok
[INFO] [stdout] test pagination::tests::test_get_prev_page_from_rel ... ok
[INFO] [stdout] test pagination::tests::test_has_pagination_pagination_class ... ok
[INFO] [stdout] test pagination::tests::test_has_pagination_rel_links ... ok
[INFO] [stdout] test pagination::tests::test_no_pagination ... ok
[INFO] [stdout] test pagination::tests::test_pagination_has_pagination_false ... ok
[INFO] [stdout] test pagination::tests::test_pagination_has_pagination_with_page_urls ... ok
[INFO] [stdout] test pagination::tests::test_pagination_none_is_default ... ok
[INFO] [stdout] test pagination::tests::test_page_url_new ... ok
[INFO] [stdout] test pagination::tests::test_resolve_url_absolute ... ok
[INFO] [stdout] test pagination::tests::test_pagination_numbered_pages ... ok
[INFO] [stdout] test pagination::tests::test_pagination_type_serialization ... ok
[INFO] [stdout] test pagination::tests::test_resolve_url_empty ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_links_with_text_numbers ... ok
[INFO] [stdout] test pagination::tests::test_resolve_url_http_scheme ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_ampersand_param ... ok
[INFO] [stdout] test parser::tests::便捷获取元数据 ... ok
[INFO] [stdout] test parser::tests::便捷获取链接 ... ok
[INFO] [stdout] test parser::tests::便捷解析函数 ... ok
[INFO] [stdout] test pagination::tests::test_get_next_page_from_dom ... ok
[INFO] [stdout] test pagination::tests::test_extract_page_number_case_insensitive ... ok
[INFO] [stdout] test pagination::tests::test_get_next_page_from_rel ... ok
[INFO] [stdout] test pagination::tests::test_resolve_url_protocol_relative ... ok
[INFO] [stdout] test pagination::tests::test_resolve_url_relative ... ok
[INFO] [stdout] test pagination::tests::test_get_next_page_not_found ... ok
[INFO] [stdout] test pagination::tests::test_has_pagination_no_pagination ... ok
[INFO] [stdout] test parser::tests::便捷解析带URL ... ok
[INFO] [stdout] test parser::tests::便捷获取文本 ... ok
[INFO] [stdout] test parser::tests::内部resolve根相对路径 ... ok
[INFO] [stdout] test parser::tests::内部resolve相对路径 ... ok
[INFO] [stdout] test parser::tests::单项提取代码块 ... ok
[INFO] [stdout] test parser::tests::内部resolve跳过空白 ... ok
[INFO] [stdout] test parser::tests::单项提取列表 ... ok
[INFO] [stdout] test parser::tests::单项提取元数据 ... ok
[INFO] [stdout] test parser::tests::单项提取图片 ... ok
[INFO] [stdout] test pagination::tests::test_generate_page_url_replace_query ... ok
[INFO] [stdout] test parser::tests::单项提取引用 ... ok
[INFO] [stdout] test pagination::tests::test_extract_pagination_with_base_url ... ok
[INFO] [stdout] test parser::tests::单项提取文本 ... ok
[INFO] [stdout] test parser::tests::单项提取标题 ... ok
[INFO] [stdout] test parser::tests::内部resolve协议相对 ... ok
[INFO] [stdout] test parser::tests::单项提取结构化数据 ... ok
[INFO] [stdout] test parser::tests::获取基础URL引用 ... ok
[INFO] [stdout] test parser::tests::统计注释数 ... ok
[INFO] [stdout] test parser::tests::获取配置可变引用 ... ok
[INFO] [stdout] test parser::tests::获取配置引用 ... ok
[INFO] [stdout] test parser::tests::基础URL解析图片地址 ... ok
[INFO] [stdout] test parser::tests::无基础URL时返回None ... ok
[INFO] [stdout] test parser::tests::统计文本节点数 ... ok
[INFO] [stdout] test parser::tests::片段解析无元数据 ... ok
[INFO] [stdout] test parser::tests::空href返回None ... ok
[INFO] [stdout] test parser::tests::单项提取表格 ... ok
[INFO] [stdout] test parser::tests::统计元素数 ... ok
[INFO] [stdout] test parser::tests::统计节点数 ... ok
[INFO] [stdout] test parser::tests::单项提取链接 ... ok
[INFO] [stdout] test parser::tests::带基础URL构造 ... ok
[INFO] [stdout] test parser::tests::带配置构造 ... ok
[INFO] [stdout] test parser::tests::设置基础URL ... ok
[INFO] [stdout] test parser::tests::检查是否有基础URL ... ok
[INFO] [stdout] test parser::tests::解析完整文档 ... ok
[INFO] [stdout] test parser::tests::默认trait实现 ... ok
[INFO] [stdout] test parser::tests::配置关闭所有提取 ... ok
[INFO] [stdout] test parser::tests::解析HTML片段 ... ok
[INFO] [stdout] test parser::tests::解析相对URL ... ok
[INFO] [stdout] test parser::tests::解析包含特殊字符的HTML ... ok
[INFO] [stdout] test parser::tests::解析空文档 ... ok
[INFO] [stdout] test parser::tests::解析多语言混合内容 ... ok
[INFO] [stdout] test parser::tests::解析最小化文档 ... ok
[INFO] [stdout] test parser::tests::解析文档统计信息 ... ok
[INFO] [stdout] test parser::tests::解析极大段落不崩溃 ... ok
[INFO] [stdout] test selector::tests::test_class_and_id_selector_builders ... ok
[INFO] [stdout] test parser::tests::解析绝对URL ... ok
[INFO] [stdout] test selector::tests::test_builder_functions_compose_correctly ... ok
[INFO] [stdout] test selector::tests::test_get_or_create_selector_returns_error_for_invalid ... ok
[INFO] [stdout] test selector::tests::test_get_or_create_selector_creates_and_caches ... ok
[INFO] [stdout] test selector::tests::test_content_selectors_contains_core_selectors ... ok
[INFO] [stdout] test selector::tests::test_attr_selector_builders ... ok
[INFO] [stdout] test selector::tests::test_boilerplate_selectors_contains_core_selectors ... ok
[INFO] [stdout] test selector::tests::test_combinator_selector_builders ... ok
[INFO] [stdout] test parser::tests::默认构造 ... ok
[INFO] [stdout] test selector::tests::test_heading_selector_format ... ok
[INFO] [stdout] test selector::tests::test_heading_selector_matches_all_levels ... ok
[INFO] [stdout] test selector::tests::test_link_rel_selector_matches_link_rel ... ok
[INFO] [stdout] test selector::tests::test_inline_and_block_elements_are_disjoint ... ok
[INFO] [stdout] test selector::tests::test_multi_selector_builder ... ok
[INFO] [stdout] test selector::tests::test_try_parse_selector_returns_none_for_invalid ... ok
[INFO] [stdout] test text::tests::使用内容选择器提取 ... ok
[INFO] [stdout] test text::tests::剥离HTML标签 ... ok
[INFO] [stdout] test selector::tests::test_try_parse_selector_returns_some_for_valid ... ok
[INFO] [stdout] test text::tests::normalize_保留非英文文本 ... ok
[INFO] [stdout] test selector::tests::test_cached_selector_matches_raw_selector ... ok
[INFO] [stdout] test selector::tests::test_meta_name_selector_matches_meta_name ... ok
[INFO] [stdout] test selector::tests::test_meta_property_selector_matches_meta_property ... ok
[INFO] [stdout] test text::tests::可读性分数范围 ... ok
[INFO] [stdout] test text::tests::可读性分数与文本长度相关 ... ok
[INFO] [stdout] test selector::tests::test_precompiled_link_base_selectors ... ok
[INFO] [stdout] test text::tests::年级水平非负 ... ok
[INFO] [stdout] test text::tests::提取文本过滤导航 ... ok
[INFO] [stdout] test text::tests::提取文章内容 ... ok
[INFO] [stdout] test text::tests::处理空文档 ... ok
[INFO] [stdout] test text::tests::提取简单段落文本 ... ok
[INFO] [stdout] test text::tests::可读性分析与阅读时间 ... ok
[INFO] [stdout] test text::tests::块级元素分类 ... ok
[INFO] [stdout] test text::tests::提取多个段落 ... ok
[INFO] [stdout] test text::tests::折叠换行 ... ok
[INFO] [stdout] test text::tests::归一化空白字符 ... ok
[INFO] [stdout] test rules::tests::test_with_include_extension ... ok
[INFO] [stdout] test text::tests::总音节数统计 ... ok
[INFO] [stdout] test text::tests::未知语言返回none ... ok
[INFO] [stdout] test selector::tests::test_precompiled_selectors_match_expected_elements ... ok
[INFO] [stdout] test text::tests::统计单词数 ... ok
[INFO] [stdout] test text::tests::语言检测德语 ... ok
[INFO] [stdout] test text::tests::统计单词音节数 ... ok
[INFO] [stdout] test text::tests::统计句子数 ... ok
[INFO] [stdout] test text::tests::行内元素分类 ... ok
[INFO] [stdout] test text::tests::跳过元素检测 ... ok
[INFO] [stdout] test types::tests::test_image_creation ... ok
[INFO] [stdout] test types::tests::test_normalize_whitespace ... ok
[INFO] [stdout] test text::tests::语言检测英语 ... ok
[INFO] [stdout] test text::tests::深度受限递归提取 ... ok
[INFO] [stdout] test types::tests::test_opengraph ... ok
[INFO] [stdout] test text::tests::语言检测西班牙语 ... ok
[INFO] [stdout] test types::tests::test_parser_config ... ok
[INFO] [stdout] test text::tests::跳过脚本和样式 ... ok
[INFO] [stdout] test types::tests::test_text_content_creation ... ok
[INFO] [stdout] test types::tests::test_heading_creation ... ok
[INFO] [stdout] test types::tests::test_link_creation ... ok
[INFO] [stdout] test text::tests::语言检测法语 ... ok
[INFO] [stdout] test rules::tests::test_year_month_without_day ... ok
[INFO] [stdout] test rules::tests::test_typical_article_urls ... ok
[INFO] [stdout] test types::tests::test_truncate_text ... ok
[INFO] [stdout] test rules::tests::test_non_article_urls ... ok
[INFO] [stdout] test rules::tests::test_with_exclude_override ... ok
[INFO] [stdout] test rules::tests::test_new_patterns_coverage ... ok
[INFO] [stdout] test rules::tests::test_real_world_unmatched_urls ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 518 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests crawlkit_parser
[INFO] [stdout] 
[INFO] [stdout] running 24 tests
[INFO] [stdout] test src/html.rs - html::extract_content_by_selector (line 299) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::extract_page_info_from_text (line 279) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::get_next_page (line 749) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::ExtractorConfig (line 84) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::extract_pagination (line 587) ... ok
[INFO] [stdout] test src/parser.rs - parser::HtmlParser (line 33) ... ignored
[INFO] [stdout] test src/pagination.rs - pagination::generate_page_url (line 855) ... ok
[INFO] [stdout] test src/html.rs - html::extract_texts (line 334) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::LinkExtractor::extract (line 225) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::ExtractedLink (line 49) ... ok
[INFO] [stdout] test src/html.rs - html::extract_readable_content (line 277) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::has_pagination (line 688) ... ok
[INFO] [stdout] test src/html.rs - html::extract_content (line 321) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::LinkExtractor::new (line 190) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::extract_page_number_from_url (line 238) ... ok
[INFO] [stdout] test src/extractor.rs - extractor (line 14) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::LinkExtractor::with_url_rule (line 204) ... ok
[INFO] [stdout] test src/rules.rs - rules::UrlRule::with_exclude (line 95) ... ok
[INFO] [stdout] test src/rules.rs - rules::UrlRule::with_include (line 81) ... ok
[INFO] [stdout] test src/pagination.rs - pagination::get_prev_page (line 801) ... ok
[INFO] [stdout] test src/rules.rs - rules::UrlRule (line 15) ... ok
[INFO] [stdout] test src/extractor.rs - extractor::LinkExtractor (line 156) ... ok
[INFO] [stdout] test src/rules.rs - rules::UrlRule::is_article_url (line 57) ... ok
[INFO] [stdout] test src/rules.rs - rules::UrlRule::with_selector (line 111) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.82s; merged doctests compilation took 0.69s
[INFO] running `Command { std: "docker" "inspect" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751", kill_on_drop: false }`
[INFO] [stdout] 56bba41b1ea89228c5b21cd941668a81d487ca3e989819d322a82fe6cf83f751
