[INFO] fetching crate pagebreak 0.9.1... [INFO] testing pagebreak-0.9.1 against beta-2022-04-10 for beta-1.61-1 [INFO] extracting crate pagebreak 0.9.1 into /workspace/builds/worker-94/source [INFO] validating manifest of crates.io crate pagebreak 0.9.1 on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate pagebreak 0.9.1 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate pagebreak 0.9.1 [INFO] tweaked toml for crates.io crate pagebreak 0.9.1 written to /workspace/builds/worker-94/source/Cargo.toml [INFO] crate crates.io crate pagebreak 0.9.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8f79eb66ff23dddf261741239fcb2346d9737109bdcb3f11e7bcc72ad01aeffc [INFO] running `Command { std: "docker" "start" "-a" "8f79eb66ff23dddf261741239fcb2346d9737109bdcb3f11e7bcc72ad01aeffc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8f79eb66ff23dddf261741239fcb2346d9737109bdcb3f11e7bcc72ad01aeffc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f79eb66ff23dddf261741239fcb2346d9737109bdcb3f11e7bcc72ad01aeffc", kill_on_drop: false }` [INFO] [stdout] 8f79eb66ff23dddf261741239fcb2346d9737109bdcb3f11e7bcc72ad01aeffc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4fd5e58d6d4b6bd15172c5e6d509137b26158143ba5632f54b4ed6a6c72ba6a8 [INFO] running `Command { std: "docker" "start" "-a" "4fd5e58d6d4b6bd15172c5e6d509137b26158143ba5632f54b4ed6a6c72ba6a8", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.101 [INFO] [stderr] Compiling proc-macro2 v1.0.29 [INFO] [stderr] Compiling syn v1.0.75 [INFO] [stderr] Compiling siphasher v0.3.6 [INFO] [stderr] Compiling ppv-lite86 v0.2.10 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling serde v1.0.130 [INFO] [stderr] Compiling new_debug_unreachable v1.0.4 [INFO] [stderr] Compiling mac v0.1.1 [INFO] [stderr] Compiling crossbeam-epoch v0.9.5 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling rayon-core v1.9.1 [INFO] [stderr] Compiling nodrop v0.1.14 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling stable_deref_trait v1.2.0 [INFO] [stderr] Compiling once_cell v1.8.0 [INFO] [stderr] Compiling async-trait v0.1.51 [INFO] [stderr] Compiling unicode-width v0.1.8 [INFO] [stderr] Compiling thin-slice v0.1.1 [INFO] [stderr] Compiling vec_map v0.8.2 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling pathdiff v0.2.1 [INFO] [stderr] Compiling lexiclean v0.0.1 [INFO] [stderr] Compiling dtoa-short v0.3.3 [INFO] [stderr] Compiling fxhash v0.2.1 [INFO] [stderr] Compiling bstr v0.2.16 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling futf v0.1.4 [INFO] [stderr] Compiling servo_arc v0.1.1 [INFO] [stderr] Compiling phf_shared v0.8.0 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling thread_local v1.1.3 [INFO] [stderr] Compiling tendril v0.4.2 [INFO] [stderr] Compiling memoffset v0.6.4 [INFO] [stderr] Compiling rayon v1.5.1 [INFO] [stderr] Compiling crossbeam-channel v0.5.1 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Compiling globset v0.4.8 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling clap v2.33.3 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling ignore v0.4.18 [INFO] [stderr] Compiling crossbeam-deque v0.8.1 [INFO] [stderr] Compiling rand_pcg v0.2.1 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling globwalk v0.8.1 [INFO] [stderr] Compiling phf_generator v0.8.0 [INFO] [stderr] Compiling phf_codegen v0.8.0 [INFO] [stderr] Compiling string_cache_codegen v0.5.1 [INFO] [stderr] Compiling selectors v0.22.0 [INFO] [stderr] Compiling markup5ever v0.10.1 [INFO] [stderr] Compiling string_cache v0.8.1 [INFO] [stderr] Compiling phf_macros v0.8.0 [INFO] [stderr] Compiling cssparser v0.27.2 [INFO] [stderr] Compiling html5ever v0.25.1 [INFO] [stderr] Compiling cssparser-macros v0.6.0 [INFO] [stderr] Compiling derive_more v0.99.16 [INFO] [stderr] Compiling phf v0.8.0 [INFO] [stderr] Compiling kuchiki v0.8.1 [INFO] [stderr] Compiling pagebreak v0.9.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 22.26s [INFO] running `Command { std: "docker" "inspect" "4fd5e58d6d4b6bd15172c5e6d509137b26158143ba5632f54b4ed6a6c72ba6a8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4fd5e58d6d4b6bd15172c5e6d509137b26158143ba5632f54b4ed6a6c72ba6a8", kill_on_drop: false }` [INFO] [stdout] 4fd5e58d6d4b6bd15172c5e6d509137b26158143ba5632f54b4ed6a6c72ba6a8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c4895311f5d7e277f33625e4512f07a1b4dfd02307b7a42457df4262a04fcdef [INFO] running `Command { std: "docker" "start" "-a" "c4895311f5d7e277f33625e4512f07a1b4dfd02307b7a42457df4262a04fcdef", kill_on_drop: false }` [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling serde_derive v1.0.130 [INFO] [stderr] Compiling futures-core v0.3.17 [INFO] [stderr] Compiling serde v1.0.130 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling futures-channel v0.3.17 [INFO] [stderr] Compiling serde_json v1.0.67 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling futures-task v0.3.17 [INFO] [stderr] Compiling futures-sink v0.3.17 [INFO] [stderr] Compiling itoa v0.4.8 [INFO] [stderr] Compiling pin-project-lite v0.2.7 [INFO] [stderr] Compiling slab v0.4.4 [INFO] [stderr] Compiling peg-runtime v0.6.3 [INFO] [stderr] Compiling futures-io v0.3.17 [INFO] [stderr] Compiling inventory v0.1.11 [INFO] [stderr] Compiling inflections v1.1.1 [INFO] [stderr] Compiling linked-hash-map v0.5.4 [INFO] [stderr] Compiling lock_api v0.4.5 [INFO] [stderr] Compiling futures-macro v0.3.17 [INFO] [stderr] Compiling futures-util v0.3.17 [INFO] [stderr] Compiling textwrap v0.12.1 [INFO] [stderr] Compiling itertools v0.10.1 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling getrandom v0.2.3 [INFO] [stderr] Compiling terminal_size v0.1.17 [INFO] [stderr] Compiling thiserror-impl v1.0.28 [INFO] [stderr] Compiling typed-builder v0.7.1 [INFO] [stderr] Compiling ctor v0.1.21 [INFO] [stderr] Compiling ghost v0.1.2 [INFO] [stderr] Compiling inventory-impl v0.1.11 [INFO] [stderr] Compiling rayon v1.5.1 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling parking_lot v0.11.2 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling peg-macros v0.6.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling sealed v0.3.0 [INFO] [stderr] Compiling once_cell v1.8.0 [INFO] [stderr] Compiling thread_local v1.1.3 [INFO] [stderr] Compiling console v0.15.0 [INFO] [stderr] Compiling rand v0.8.4 [INFO] [stderr] Compiling ignore v0.4.18 [INFO] [stderr] Compiling tempfile v3.2.0 [INFO] [stderr] Compiling structopt-derive v0.4.18 [INFO] [stderr] Compiling globwalk v0.8.1 [INFO] [stderr] Compiling thiserror v1.0.28 [INFO] [stderr] Compiling cucumber-codegen v0.10.2 [INFO] [stderr] Compiling peg v0.6.3 [INFO] [stderr] Compiling pagebreak v0.9.1 (/opt/rustwide/workdir) [INFO] [stderr] Compiling structopt v0.3.25 [INFO] [stderr] Compiling futures-executor v0.3.17 [INFO] [stderr] Compiling futures v0.3.17 [INFO] [stderr] Compiling gherkin_rust v0.10.1 [INFO] [stderr] Compiling cucumber v0.10.2 [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 20.17s [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/pagebreak-155deb0254ac9ca6) [INFO] [stderr] Executable unittests src/main.rs (/opt/rustwide/target/debug/deps/pagebreak-2066ba83f6ae1086) [INFO] [stderr] Executable tests/cucumber.rs (/opt/rustwide/target/debug/deps/cucumber-c337b6392fd2b3a5) [INFO] running `Command { std: "docker" "inspect" "c4895311f5d7e277f33625e4512f07a1b4dfd02307b7a42457df4262a04fcdef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c4895311f5d7e277f33625e4512f07a1b4dfd02307b7a42457df4262a04fcdef", kill_on_drop: false }` [INFO] [stdout] c4895311f5d7e277f33625e4512f07a1b4dfd02307b7a42457df4262a04fcdef [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-94/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] d86818aa5ed8ba69c477c6a53afa441710183cf16337423a28f57250afc33252 [INFO] running `Command { std: "docker" "start" "-a" "d86818aa5ed8ba69c477c6a53afa441710183cf16337423a28f57250afc33252", kill_on_drop: false }` [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.16s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/pagebreak-155deb0254ac9ca6) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test state::tests::test_bad_file_url ... ok [INFO] [stdout] test state::tests::test_get_file_url ... ok [INFO] [stdout] test state::tests::test_relative_pagination_urls ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/pagebreak-2066ba83f6ae1086) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/cucumber.rs (/opt/rustwide/target/debug/deps/cucumber-c337b6392fd2b3a5) [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "red/blue/yellow/index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "about.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "about.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 1 pages of size 10 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 5 items on "index.html"; Building 3 pages of size 2 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 3 items on "red/blue/yellow/index.html"; Building 3 pages of size 1 [INFO] [stdout] Pagebreak: Found 1 pages with pagination [INFO] [stdout] Pagebreak: Found 2 items on "index.html"; Building 2 pages of size 1 [INFO] [stdout] Feature: Pagination URLs [INFO] [stdout] Scenario: If I specify a data-pagebreak-url, I should get custom URLs [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/index.html" [INFO] [stdout] ✔ And I should see the file "output/pb/2/j/index.html" [INFO] [stdout] ✔ But I should not see the file "output/page/2/index.html" [INFO] [stdout] Scenario: If I want a complex output location, I can use relative URL paths [INFO] [stdout] ✔ Given I have a "source/red/blue/yellow/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/red/blue/yellow/index.html" [INFO] [stdout] ✔ And I should see the file "output/red/green/2/index.html" [INFO] [stdout] Scenario: I should not have to specify a trailing slash on the data-pagebreak-url [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/index.html" [INFO] [stdout] ✔ And I should see the file "output/page/2/index.html" [INFO] [stdout] ✔ But I should not see the file "output/page/2.html" [INFO] [stdout] Scenario: If I provide a named HTML page, I should get a named pagination page [INFO] [stdout] ✔ Given I have a "source/about.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/about.html" [INFO] [stdout] ✔ And I should see the file "output/about/page/2/index.html" [INFO] [stdout] Scenario: If I provide a named HTML page without a trailing slash, I should get a named pagination page [INFO] [stdout] ✔ Given I have a "source/about.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/about.html" [INFO] [stdout] ✔ And I should see the file "output/about/page/2/index.html" [INFO] [stdout] ✔ But I should not see the file "output/about/page/2.html" [INFO] [stdout] Feature: Pagination Pages [INFO] [stdout] Scenario: If I have a data tag, I should get multiple pages [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/index.html" [INFO] [stdout] ✔ And I should see the file "output/page/2/index.html" [INFO] [stdout] ✔ And I should see "Item 1" in "output/index.html" [INFO] [stdout] ✔ And I should see "Item 2" in "output/page/2/index.html" [INFO] [stdout] ✔ But I should not see "Item 2" in "output/index.html" [INFO] [stdout] ✔ And I should not see "Item 1" in "output/page/2/index.html" [INFO] [stdout] Scenario: If my page size is larger than the number of items, I should still get my first page [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/index.html" [INFO] [stdout] ✔ And I should see "Item 1" in "output/index.html" [INFO] [stdout] ✔ And I should see "Item 2" in "output/index.html" [INFO] [stdout] ✔ But I should not see the file "output/page/2/index.html" [INFO] [stdout] Scenario: If my items aren't divisble, my last page should have the remaning items [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see the file "output/page/3/index.html" [INFO] [stdout] ✔ And I should see "Item 5" in "output/page/3/index.html" [INFO] [stdout] ✔ But I should not see "Item 4" in "output/page/3/index.html" [INFO] [stdout] Feature: Pagination Fix Relative Links [INFO] [stdout] Scenario: By default, existing relative URLs on the page should be fixed for paginated pages [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/index.html" with the attributes: [INFO] [stdout] | href | styles.css | [INFO] [stdout] | rel | stylesheet | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/index.html" with the attributes: [INFO] [stdout] | href | contact | [INFO] [stdout] | innerText | Contact | [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/2/index.html" with the attributes: [INFO] [stdout] | href | ../styles.css | [INFO] [stdout] | rel | stylesheet | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/2/index.html" with the attributes: [INFO] [stdout] | href | ../contact | [INFO] [stdout] | innerText | Contact | [INFO] [stdout] Scenario: Absolute URLs should remain unchanged in paginated pages [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/index.html" with the attributes: [INFO] [stdout] | href | /styles.css | [INFO] [stdout] | rel | stylesheet | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/index.html" with the attributes: [INFO] [stdout] | href | https://placekitten.com/1142/1600 | [INFO] [stdout] | innerText | Contact | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/index.html" with the attributes: [INFO] [stdout] | href | http://placekitten.com/1142/1600 | [INFO] [stdout] | innerText | Contract | [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/2/index.html" with the attributes: [INFO] [stdout] | href | /styles.css | [INFO] [stdout] | rel | stylesheet | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/2/index.html" with the attributes: [INFO] [stdout] | href | https://placekitten.com/1142/1600 | [INFO] [stdout] | innerText | Contact | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/2/index.html" with the attributes: [INFO] [stdout] | href | http://placekitten.com/1142/1600 | [INFO] [stdout] | innerText | Contract | [INFO] [stdout] Feature: Pagination Canonicals [INFO] [stdout] Scenario: By default, URLs in the meta should be updated to the self page [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/index.html" with the attributes: [INFO] [stdout] | href | https://example.com/blog/ | [INFO] [stdout] | rel | canonical | [INFO] [stdout] ✔ Then I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | https://example.com/blog/ | [INFO] [stdout] | property | og:url | [INFO] [stdout] ✔ Then I should see a selector 'link' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | href | https://example.com/blog/page/2/ | [INFO] [stdout] | rel | canonical | [INFO] [stdout] ✔ Then I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | https://example.com/blog/page/2/ | [INFO] [stdout] | property | og:url | [INFO] [stdout] Feature: Pagination Labels [INFO] [stdout] Scenario: If I have pagination labels, they should reflect the page number and total [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see '
Page 1 of 2
' in "output/index.html" [INFO] [stdout] ✔ And I should see 'Page 2 of 2
' in "output/page/2/index.html" [INFO] [stdout] Feature: Pagination Controls [INFO] [stdout] Scenario: If I run Pagebreak in place, my source files should be updated [INFO] [stdout] ✔ Given I have a "dist/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak with options: [INFO] [stdout] | source | dist | [INFO] [stdout] | output | dist | [INFO] [stdout] ✔ Then I should see "Item 1" in "dist/index.html" [INFO] [stdout] ✔ But I should not see "Item 2" in "dist/index.html" [INFO] [stdout] ✔ And I should see "Item 2" in "dist/page/2/index.html" [INFO] [stdout] Scenario: If I run Pagebreak with a dest, all files should be moved [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ And I have a "source/extra.txt" file with the body: [INFO] [stdout] ✔ And I have a "source/inner/nested/file.md" file with the body: [INFO] [stdout] ✔ And I have a "source/plain.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see "Item 1" in "output/index.html" [INFO] [stdout] ✔ And I should see "Plain" in "output/plain.html" [INFO] [stdout] ✔ And I should see "Extra File" in "output/extra.txt" [INFO] [stdout] ✔ And I should see "# Inner" in "output/inner/nested/file.md" [INFO] [stdout] Scenario: If I run Pagebreak with a dest, the original files should remain [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ And I have a "source/extra.txt" file with the body: [INFO] [stdout] ✔ And I have a "source/inner/nested/file.md" file with the body: [INFO] [stdout] ✔ And I have a "source/plain.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see "Item 1" in "source/index.html" [INFO] [stdout] ✔ And I should see "Plain" in "source/plain.html" [INFO] [stdout] ✔ And I should see "Extra File" in "source/extra.txt" [INFO] [stdout] ✔ And I should see "# Inner" in "source/inner/nested/file.md" [INFO] [stdout] Scenario: If I run Pagebreak in place, existing files should be untouched [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ And I have a "source/extra.txt" file with the body: [INFO] [stdout] ✔ And I have a "source/inner/nested/file.md" file with the body: [INFO] [stdout] ✔ And I have a "source/plain.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak with options: [INFO] [stdout] | source | source | [INFO] [stdout] | output | source | [INFO] [stdout] ✔ Then I should see "Item 1" in "source/index.html" [INFO] [stdout] ✔ And I should see "Plain" in "source/plain.html" [INFO] [stdout] ✔ And I should see "Extra File" in "source/extra.txt" [INFO] [stdout] ✔ And I should see "# Inner" in "source/inner/nested/file.md" [INFO] [stdout] Feature: Pagination Meta [INFO] [stdout] Scenario: By default, title tags and title meta elements should be rewritten [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/index.html" with the attributes: [INFO] [stdout] | innerText | Website Title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | OG Title \PIPE Page 2 | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | Twitter Title \PIPE Page 2 | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | innerText | Website Title \PIPE Page 2 | [INFO] [stdout] Scenario: If I specify a data-pagebreak-meta, I should get custom meta tags [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/index.html" with the attributes: [INFO] [stdout] | innerText | Website Title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | Page 2 of OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | Page 2 of Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | innerText | Page 2 of Website Title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/3/index.html" with the attributes: [INFO] [stdout] | content | Page 3 of OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/3/index.html" with the attributes: [INFO] [stdout] | content | Page 3 of Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/page/3/index.html" with the attributes: [INFO] [stdout] | innerText | Page 3 of Website Title | [INFO] [stdout] Scenario: If I don't want to rewrite meta tags, I should set a data-pagebreak-meta=":content" [INFO] [stdout] ✔ Given I have a "source/index.html" file with the content: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/index.html" with the attributes: [INFO] [stdout] | content | Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/index.html" with the attributes: [INFO] [stdout] | innerText | Website Title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | OG Title | [INFO] [stdout] | property | og:title | [INFO] [stdout] ✔ And I should see a selector 'meta' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | content | Twitter Title | [INFO] [stdout] | property | twitter:title | [INFO] [stdout] ✔ And I should see a selector 'title' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | innerText | Website Title | [INFO] [stdout] Feature: Pagination Controls [INFO] [stdout] Scenario: If I have pagination controls, they should toggle when next/prev pages exist [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see "Next Page" in "output/index.html" [INFO] [stdout] ✔ And I should see "Next Page" in "output/page/2/index.html" [INFO] [stdout] ✔ And I should see "Previous Page" in "output/page/2/index.html" [INFO] [stdout] ✔ And I should see "Previous Page" in "output/page/3/index.html" [INFO] [stdout] ✔ But I should not see "Previous Page" in "output/index.html" [INFO] [stdout] ✔ And I should not see "Next Page" in "output/page/3/index.html" [INFO] [stdout] Scenario: If I have pagination controls, they should be given the correct hrefs [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/index.html" with the attributes: [INFO] [stdout] | href | page/2/ | [INFO] [stdout] | innerText | Next Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | href | ../3/ | [INFO] [stdout] | innerText | Next Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | href | ../../ | [INFO] [stdout] | innerText | Previous Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/page/3/index.html" with the attributes: [INFO] [stdout] | href | ../2/ | [INFO] [stdout] | innerText | Previous Page | [INFO] [stdout] Scenario: If I have a complex URL structure, my pagination hrefs should still be correct [INFO] [stdout] ✔ Given I have a "source/red/blue/yellow/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/red/blue/yellow/index.html" with the attributes: [INFO] [stdout] | href | ../../page/2/test/ | [INFO] [stdout] | innerText | Next Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/red/page/2/test/index.html" with the attributes: [INFO] [stdout] | href | ../../3/test/ | [INFO] [stdout] | innerText | Next Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/red/page/2/test/index.html" with the attributes: [INFO] [stdout] | href | ../../../blue/yellow/ | [INFO] [stdout] | innerText | Previous Page | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/red/page/3/test/index.html" with the attributes: [INFO] [stdout] | href | ../../2/test/ | [INFO] [stdout] | innerText | Previous Page | [INFO] [stdout] Scenario: If I have inverse pagination controls, they should hide when next/prev pages exist [INFO] [stdout] ✔ Given I have a "source/index.html" file with the body: [INFO] [stdout] ✔ When I run Pagebreak [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/index.html" with the attributes: [INFO] [stdout] | href | page/2/ | [INFO] [stdout] | innerText | Next Page | [INFO] [stdout] ✔ Then I should see a selector 'span' in "output/index.html" with the attributes: [INFO] [stdout] | innerText | No Previous | [INFO] [stdout] ✔ Then I should see a selector 'a' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | href | ../../ | [INFO] [stdout] | innerText | Previous Page | [INFO] [stdout] ✔ Then I should see a selector 'span' in "output/page/2/index.html" with the attributes: [INFO] [stdout] | innerText | No Next | [INFO] [stdout] ✔ But I should not see "No Next" in "output/index.html" [INFO] [stdout] ✔ And I should not see "No Previous" in "output/page/2/index.html" [INFO] [stdout] [Summary] [INFO] [stdout] 8 features [INFO] [stdout] 23 scenarios (23 passed) [INFO] [stdout] 153 steps (153 passed) [INFO] [stderr] Doc-tests pagebreak [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "d86818aa5ed8ba69c477c6a53afa441710183cf16337423a28f57250afc33252", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d86818aa5ed8ba69c477c6a53afa441710183cf16337423a28f57250afc33252", kill_on_drop: false }` [INFO] [stdout] d86818aa5ed8ba69c477c6a53afa441710183cf16337423a28f57250afc33252