CI run for rad:zjxyd2A1A7FnxtC69qDfoAajfTHo

Radicle repository id rad:zjxyd2A1A7FnxtC69qDfoAajfTHo

Table of Contents

Run log

[2025-09-11T13:19:38Z INFO  ambient] ambient starts
deprecated: the `cpus` field is replaced by `qemu.cpus`
deprecated: the `memory` field is replaced by `qemu.memory`
[=3h[=3hBdsDxe: failed to load Boot0001 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0): Not Found
BdsDxe: loading Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
BdsDxe: starting Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
Welcome to GRUB!


INFO: Block devices
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1   370K  0 rom  
vda    254:0    0   100G  0 disk 
├─vda1 254:1    0   953M  0 part 
└─vda2 254:2    0  99.1G  0 part /
vdb    254:16   0   2.9M  1 disk 
vdc    254:32   0   2.8M  1 disk 
vdd    254:48   0 953.7M  0 disk 
vde    254:64   0  27.9G  0 disk 
vdf    254:80   0 675.5M  1 disk 
INFO: Extracting tar archive from /dev/vdb
drwxr-xr-x _rad/_rad         0 2025-09-11 13:15 ./
-rw-r--r-- _rad/_rad      1431 2025-09-11 13:15 ./plan.yaml
-rwxr-xr-x _rad/_rad   2994840 2025-09-11 13:15 ./run-ci
INFO: Extracted files:
  4587530      4 drwxr-xr-x   2 1000     1000         4096 Sep 11 13:15 .
  4587531      4 -rw-r--r--   1 1000     1000         1431 Sep 11 13:15 ./plan.yaml
  4587532   2928 -rwxr-xr-x   1 1000     1000      2994840 Sep 11 13:15 ./run-ci
INFO: Running run-ci from /dev/vdb
================================ BEGIN ================================
[2025-09-11T13:15:54Z TRACE ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T13:15:54Z DEBUG ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T13:15:54Z INFO  ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T13:15:54Z WARN  ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T13:15:54Z ERROR ambient_execute_plan] ambient-execute-plan starts
RunnablePlan::from_file: filename=plan.yaml
steps:
- action: mkdir
  pathname: /workspace
- action: mkdir
  pathname: /workspace/artifacts
- action: tar_extract
  archive: /dev/vdc
  directory: /workspace/src
- action: tar_extract
  archive: /dev/vdf
  directory: /workspace/deps
- action: tar_extract
  archive: /dev/vde
  directory: /workspace/cache
- action: spawn
  argv:
  - find
  - /workspace
  - '-maxdepth'
  - '2'
  - '-ls'
- action: cargo_fmt
- action: cargo_clippy
- action: shell
  shell: |
    export DEBEMAIL=liw@liw.fi
    export DEBFULLNAME="Lars Wirzenius"
    export CARGO_TARGET_DIR=/workspace/cache
    export CARGO_HOME=/workspace/deps
    export HOME=/root
    export PATH="/root/.cargo/bin:$PATH"

    make OFFLINE="--offline"

    # Clean up after tests and documentation building.
    git reset --hard
    git clean -fdx
    git status --ignored

    V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
    T="$(date -u "+%Y%m%dT%H%M%S")"
    version="$V.ci$T-1"
    dch -v "$version" "CI build under Ambient."
    dch -r ''
- action: deb
- action: tar_create
  archive: /dev/vde
  directory: /workspace/cache
- action: tar_create
  archive: /dev/vdd
  directory: /workspace/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /workspace
source_dir: /workspace/src
deps_dir: /workspace/deps
cache_dir: /workspace/cache
artifacts_dir: /workspace/artifacts


RUN: Action Mkdir {
    pathname: "/workspace",
}
[2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
        pathname: "/workspace",
    }
RUN: Action finished OK
RUN: Action Mkdir {
    pathname: "/workspace/artifacts",
}
[2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
        pathname: "/workspace/artifacts",
    }
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vdc",
    directory: "/workspace/src",
}
[2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
[2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
[2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vdf",
    directory: "/workspace/deps",
}
[2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
[2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
[2025-09-11T13:15:56Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vde",
    directory: "/workspace/cache",
}
[2025-09-11T13:15:56Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
[2025-09-11T13:15:56Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
[2025-09-11T13:16:00Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action Spawn {
    argv: [
        "find",
        "/workspace",
        "-maxdepth",
        "2",
        "-ls",
    ],
}
[2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
       cwd=/workspace/src (exists? true)
       extra_env=[]
  2621441      4 drwxr-xr-x   6 root     root         4096 Sep 11 13:15 /workspace
  2621779      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/deps
  2641321      0 -rw-r--r--   1 root     root            0 Sep 11 13:09 /workspace/deps/.package-cache-mutate
  2621780      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:09 /workspace/deps/registry
  2641320    100 -rw-r--r--   1 root     root       102400 Sep 11 13:15 /workspace/deps/.global-cache
  2641322      0 -rw-r--r--   1 root     root            0 Sep 11 13:09 /workspace/deps/.package-cache
  2621443      4 drwxr-xr-x  15 root     root         4096 Sep 11 13:15 /workspace/src
  2621605      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/book
  2621449      4 -rw-r--r--   1 root     root         1568 Sep 11 13:15 /workspace/src/Cargo.toml
  2621618      8 -rw-r--r--   1 root     root         5176 Sep 11 13:15 /workspace/src/CONTRIBUTING.md
  2621447     20 -rw-r--r--   1 root     root        19936 Sep 11 13:15 /workspace/src/NEWS.md
  2621604      8 -rw-r--r--   1 root     root         5617 Sep 11 13:15 /workspace/src/build.rs
  2621626      4 drwxr-xr-x   8 root     root         4096 Sep 11 13:15 /workspace/src/.git
  2621617      4 -rw-r--r--   1 root     root         1366 Sep 11 13:15 /workspace/src/DCO-1-1.txt
  2621568      4 -rwxr-xr-x   1 root     root          489 Sep 11 13:15 /workspace/src/install-debian.sh
  2621616      8 -rw-r--r--   1 root     root         6501 Sep 11 13:15 /workspace/src/DECISIONS.md
  2621621      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/.gitlab
  2621505      4 -rw-r--r--   1 root     root         2648 Sep 11 13:15 /workspace/src/subplot.yaml
  2621512      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/src
  2621567      4 -rw-r--r--   1 root     root         1286 Sep 11 13:15 /workspace/src/reference.md
  2621446      4 -rw-r--r--   1 root     root         3761 Sep 11 13:15 /workspace/src/README.md
  2621506      4 -rw-r--r--   1 root     root          284 Sep 11 13:15 /workspace/src/subplot.subplot
  2621566      4 -rw-r--r--   1 root     root          689 Sep 11 13:15 /workspace/src/reference.py
  2621619      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/.radicle
  2621591      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/debian
  2621614      4 -rw-r--r--   1 root     root         3387 Sep 11 13:15 /workspace/src/RELEASE.md
  2621625      4 -rw-r--r--   1 root     root           10 Sep 11 13:15 /workspace/src/.envrc
  2621569      4 -rw-r--r--   1 root     root           56 Sep 11 13:15 /workspace/src/flake8.ini
  2621450     44 -rw-r--r--   1 root     root        44081 Sep 11 13:15 /workspace/src/Cargo.lock
  2621452      4 -rw-r--r--   1 root     root          136 Sep 11 13:15 /workspace/src/.gitignore
  2621451      4 -rw-r--r--   1 root     root          678 Sep 11 13:15 /workspace/src/.gitlab-ci.yml
  2621453      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/tests
  2621466      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/subplotlib
  2621564      4 -rw-r--r--   1 root     root          196 Sep 11 13:15 /workspace/src/reference.yaml
  2621570      4 -rw-r--r--   1 root     root         1385 Sep 11 13:15 /workspace/src/flake.lock
  2621508      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/subplot-build
  2621445      4 -rw-r--r--   1 root     root         1292 Sep 11 13:15 /workspace/src/flake.nix
  2621444      4 -rw-r--r--   1 root     root         3370 Sep 11 13:15 /workspace/src/subplot.py
  2621571      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/examples
  2621590      4 -rw-r--r--   1 root     root          295 Sep 11 13:15 /workspace/src/deny.toml
  2621499      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/subplotlib-derive
  2621615      4 -rw-r--r--   1 root     root         1325 Sep 11 13:15 /workspace/src/LICENSE.md
  2621507     96 -rw-r--r--   1 root     root        96042 Sep 11 13:15 /workspace/src/subplot.md
  2621448      8 -rw-r--r--   1 root     root         4131 Sep 11 13:15 /workspace/src/Makefile
  2621534      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/share
  2621608      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/bin
  2621565      4 -rw-r--r--   1 root     root          273 Sep 11 13:15 /workspace/src/reference.subplot.disabled
  2621442      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/artifacts
  2641323      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:11 /workspace/cache
  2642763      4 drwxr-xr-x   7 root     root         4096 Sep 11 13:10 /workspace/cache/debug
  2642762      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:09 /workspace/cache/tmp
  2641324      4 -rw-r--r--   1 root     root         1034 Sep 11 13:11 /workspace/cache/.rustc_info.json
  2641325      4 drwxr-xr-x   7 root     root         4096 Sep 11 13:13 /workspace/cache/release
RUN: Action finished OK
RUN: Action CargoFmt
[2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: CargoFmt
SPAWN: argv=["cargo", "fmt", "--check"]
       cwd=/workspace/src (exists? true)
       extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
RUN: Action finished OK
RUN: Action CargoClippy
[2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: CargoClippy
SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
       cwd=/workspace/src (exists? true)
       extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
    Checking cfg-if v1.0.0
   Compiling memchr v2.7.4
   Compiling quote v1.0.37
   Compiling syn v2.0.91
   Compiling once_cell v1.20.2
   Compiling serde v1.0.216
   Compiling ahash v0.8.11
   Compiling thiserror v2.0.9
    Checking aho-corasick v1.1.3
   Compiling anyhow v1.0.95
    Checking bitflags v2.6.0
    Checking regex-automata v0.4.9
   Compiling libc v0.2.169
   Compiling libm v0.2.11
   Compiling zerocopy-derive v0.7.35
   Compiling serde_derive v1.0.216
   Compiling thiserror-impl v2.0.9
   Compiling rustix v0.38.42
   Compiling pest v2.7.15
   Compiling serde_json v1.0.134
   Compiling cc v1.2.5
   Compiling pest_meta v2.7.15
    Checking itoa v1.0.14
   Compiling pikchr v0.1.3
   Compiling pest_generator v2.7.15
   Compiling tracing-attributes v0.1.28
   Compiling pest_derive v2.7.15
   Compiling pulldown-cmark v0.12.2
    Checking regex v1.11.1
    Checking linux-raw-sys v0.4.14
   Compiling byteorder v1.5.0
   Compiling zerocopy v0.7.35
    Checking tempfile v3.14.0
    Checking ryu v1.0.18
   Compiling log v0.4.22
   Compiling time-core v0.1.2
   Compiling time-macros v0.2.19
   Compiling hashbrown v0.14.5
   Compiling getrandom v0.2.15
   Compiling subplot v0.12.0 (/workspace/src)
    Checking bstr v1.11.1
   Compiling unicode-width v0.1.14
   Compiling rand_core v0.6.4
   Compiling globset v0.4.15
   Compiling hashlink v0.9.1
   Compiling ppv-lite86 v0.2.20
   Compiling encoding_rs v0.8.35
   Compiling culpa-macros v1.0.2
   Compiling yaml-rust2 v0.9.0
   Compiling rand_chacha v0.3.1
   Compiling ignore v0.4.23
   Compiling serde_path_to_error v0.1.16
   Compiling deunicode v1.6.0
    Checking deranged v0.3.11
   Compiling textwrap v0.16.1
   Compiling humansize v2.1.3
   Compiling slug v0.1.6
   Compiling marked-yaml v0.7.2
   Compiling globwalk v0.9.1
   Compiling rand v0.8.5
   Compiling getopts v0.2.21
   Compiling tracing-core v0.1.33
   Compiling unicase v2.8.0
   Compiling pin-project-lite v0.2.15
   Compiling tera v1.20.0
   Compiling tracing v0.1.41
    Checking time v0.3.37
    Checking nix v0.29.0
   Compiling roadmap v0.7.0
    Checking culpa v1.0.2
    Checking cvt v0.1.2
    Checking fs_at v0.2.1
   Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
    Checking remove_dir_all v1.0.0
    Checking filetime v0.2.25
    Checking fs2 v0.4.3
   Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
    Checking anstyle-parse v0.2.6
    Checking anstyle-query v1.1.2
    Checking anstyle v1.0.10
    Checking colorchoice v1.0.3
    Checking anstream v0.6.18
    Checking clap_lex v0.7.4
    Checking clap_builder v4.5.23
   Compiling clap_derive v4.5.18
    Checking clap v4.5.23
   Compiling git-testament-derive v0.2.1
    Checking tracing-log v0.2.0
    Checking thread_local v1.1.8
    Checking smallvec v1.13.2
    Checking git-testament v0.2.6
    Checking tracing-subscriber v0.3.19
    Checking subplot-bin v0.12.0 (/workspace/src/bin)
    Checking subplot-build v0.12.0 (/workspace/src/subplot-build)
    Checking subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.90s
RUN: Action finished OK
RUN: Action Shell {
    shell: "export DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n",
}
[2025-09-11T13:16:39Z DEBUG ambient_ci::action] Plan::execute: Shell {
        shell: "export DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n",
    }
SPAWN: argv=["/bin/bash", "-c", "set -xeuo pipefail\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n\n"]
       cwd=/workspace/src (exists? true)
       extra_env=[]
+ export DEBEMAIL=liw@liw.fi
+ DEBEMAIL=liw@liw.fi
+ export 'DEBFULLNAME=Lars Wirzenius'
+ DEBFULLNAME='Lars Wirzenius'
+ export CARGO_TARGET_DIR=/workspace/cache
+ CARGO_TARGET_DIR=/workspace/cache
+ export CARGO_HOME=/workspace/deps
+ CARGO_HOME=/workspace/deps
+ export HOME=/root
+ HOME=/root
+ export PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ make OFFLINE=--offline
which >/dev/null cargo 
which >/dev/null dot
which >/dev/null plantuml
which >/dev/null python3
which >/dev/null rustc
which >/dev/null rustfmt
which >/dev/null tidy
if which shellcheck; then shellcheck *.sh; fi
/usr/bin/shellcheck
cargo clippy --locked --offline --workspace --all-targets -- -Dwarnings
   Compiling subplot v0.12.0 (/workspace/src)
   Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
   Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
    Checking subplot-bin v0.12.0 (/workspace/src/bin)
    Checking subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
    Checking subplot-build v0.12.0 (/workspace/src/subplot-build)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.06s
cd examples/seq && cargo clippy --workspace --all-targets -- -Dwarnings
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s
rm -rf "/workspace/src/inst"
cargo install --locked --offline --path=bin --root="/workspace/src/inst" --debug
  Installing subplot-bin v0.12.0 (/workspace/src/bin)
   Compiling once_cell v1.20.2
   Compiling syn v2.0.91
   Compiling cfg-if v1.0.0
   Compiling memchr v2.7.4
   Compiling byteorder v1.5.0
   Compiling itoa v1.0.14
   Compiling libc v0.2.169
   Compiling aho-corasick v1.1.3
   Compiling regex-automata v0.4.9
   Compiling zerocopy-derive v0.7.35
   Compiling zerocopy v0.7.35
   Compiling thiserror-impl v2.0.9
   Compiling serde_derive v1.0.216
   Compiling thiserror v2.0.9
   Compiling bitflags v2.6.0
   Compiling log v0.4.22
   Compiling ahash v0.8.11
   Compiling pest v2.7.15
   Compiling hashbrown v0.14.5
   Compiling getrandom v0.2.15
   Compiling bstr v1.11.1
   Compiling serde v1.0.216
   Compiling unicode-width v0.1.14
   Compiling anstyle-parse v0.2.6
   Compiling globset v0.4.15
   Compiling rand_core v0.6.4
   Compiling hashlink v0.9.1
   Compiling pest_meta v2.7.15
   Compiling anyhow v1.0.95
   Compiling ppv-lite86 v0.2.20
   Compiling encoding_rs v0.8.35
   Compiling tracing-core v0.1.33
   Compiling anstyle-query v1.1.2
   Compiling anstyle v1.0.10
   Compiling time-core v0.1.2
   Compiling linux-raw-sys v0.4.14
   Compiling colorchoice v1.0.3
   Compiling rustix v0.38.42
   Compiling anstream v0.6.18
   Compiling time-macros v0.2.19
   Compiling deranged v0.3.11
   Compiling yaml-rust2 v0.9.0
   Compiling rand_chacha v0.3.1
   Compiling pest_generator v2.7.15
   Compiling serde_path_to_error v0.1.16
   Compiling ignore v0.4.23
   Compiling libm v0.2.11
   Compiling regex v1.11.1
   Compiling tracing-attributes v0.1.28
   Compiling pin-project-lite v0.2.15
   Compiling deunicode v1.6.0
   Compiling clap_lex v0.7.4
   Compiling ryu v1.0.18
   Compiling clap_derive v4.5.18
   Compiling tracing v0.1.41
   Compiling serde_json v1.0.134
   Compiling clap_builder v4.5.23
   Compiling tempfile v3.14.0
   Compiling slug v0.1.6
   Compiling textwrap v0.16.1
   Compiling marked-yaml v0.7.2
   Compiling globwalk v0.9.1
   Compiling humansize v2.1.3
   Compiling pest_derive v2.7.15
   Compiling rand v0.8.5
   Compiling time v0.3.37
   Compiling subplot v0.12.0 (/workspace/src)
   Compiling getopts v0.2.21
   Compiling unicase v2.8.0
   Compiling pulldown-cmark v0.12.2
   Compiling git-testament-derive v0.2.1
   Compiling tera v1.20.0
   Compiling pikchr v0.1.3
   Compiling roadmap v0.7.0
   Compiling clap v4.5.23
   Compiling tracing-log v0.2.0
   Compiling thread_local v1.1.8
   Compiling smallvec v1.13.2
   Compiling tracing-subscriber v0.3.19
   Compiling git-testament v0.2.6
   Compiling subplot-bin v0.12.0 (/workspace/src/bin)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 26.84s
  Installing /workspace/src/inst/bin/subplot
   Installed package `subplot-bin v0.12.0 (/workspace/src/bin)` (executable `subplot`)
warning: be sure to add `/workspace/src/inst/bin` to your PATH to be able to run the installed binaries
mv "/workspace/src/inst"/bin/* "/workspace/src/inst"
rm -rf "/workspace/src/inst"/.crate*  "/workspace/src/inst"/bin
cd share/python/template && python3 context_tests.py
............................
----------------------------------------------------------------------
Ran 28 tests in 0.002s

OK
cd share/python/template && python3 encoding_tests.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
env SUBPLOT_DIR="/workspace/src/inst" cargo test --workspace
   Compiling zerocopy v0.7.35
   Compiling thiserror v2.0.9
   Compiling libc v0.2.169
   Compiling serde v1.0.216
   Compiling ppv-lite86 v0.2.20
   Compiling pest v2.7.15
   Compiling ahash v0.8.11
   Compiling pest_meta v2.7.15
   Compiling hashbrown v0.14.5
   Compiling hashlink v0.9.1
   Compiling pest_generator v2.7.15
   Compiling serde_json v1.0.134
   Compiling pest_derive v2.7.15
   Compiling yaml-rust2 v0.9.0
   Compiling serde_path_to_error v0.1.16
   Compiling marked-yaml v0.7.2
   Compiling getrandom v0.2.15
   Compiling roadmap v0.7.0
   Compiling rand_core v0.6.4
   Compiling globset v0.4.15
   Compiling ignore v0.4.23
   Compiling rand_chacha v0.3.1
   Compiling time-macros v0.2.19
   Compiling rand v0.8.5
   Compiling globwalk v0.9.1
   Compiling subplot v0.12.0 (/workspace/src)
   Compiling tracing-core v0.1.33
   Compiling tracing v0.1.41
   Compiling tera v1.20.0
   Compiling pikchr v0.1.3
   Compiling culpa v1.0.2
   Compiling nix v0.29.0
   Compiling cvt v0.1.2
   Compiling fs_at v0.2.1
   Compiling time v0.3.37
   Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
   Compiling remove_dir_all v1.0.0
   Compiling filetime v0.2.25
   Compiling fs2 v0.4.3
   Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
   Compiling clap v4.5.23
   Compiling git-testament-derive v0.2.1
   Compiling tracing-subscriber v0.3.19
   Compiling git-testament v0.2.6
   Compiling subplot-build v0.12.0 (/workspace/src/subplot-build)
   Compiling subplot-bin v0.12.0 (/workspace/src/bin)
   Compiling subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 30.16s
     Running unittests src/lib.rs (/workspace/cache/debug/deps/subplot-094668524162d5b8)

running 108 tests
test bindings::test_binding::creates_new ... ok
test bindings::test_binding::case_sensitive_mismatch ... ok
test bindings::test_binding::does_not_match_with_wrong_kind ... ok
test bindings::test_binding::equal ... ok
test bindings::test_binding::does_not_match_with_wrong_text ... ok
test bindings::test_binding::match_with_fixed_pattern ... ok
test bindings::test_binding::not_equal ... ok
test bindings::test_bindings::add_from_yaml_notices_multiple_keywords ... ok
test bindings::test_bindings::adds_binding ... ok
test bindings::test_binding::match_with_regex ... ok
test bindings::test_bindings::does_not_find_match_for_unmatching_kind ... ok
test bindings::test_bindings::does_not_find_match_for_unmatching_pattern ... ok
test bindings::test_bindings::finds_match_for_fixed_string_pattern ... ok
test bindings::test_bindings::adds_from_yaml ... ok
test bindings::test_bindings::has_no_bindings_initially ... ok
test bindings::test_bindings::finds_match_for_regexp_pattern ... ok
test bindings::test_bindings::two_matching_bindings ... ok
test bindings::test_bindings::typemap_must_match_pattern ... ok
test bindings::test_regex_from_simple_pattern::returns_boring_pattern_as_is ... ok
test bindings::test_regex_from_simple_pattern::kindless_simple_pattern ... ok
test bindings::test_regex_from_simple_pattern::returns_empty_string_as_is ... ok
test bindings::test_regex_from_simple_pattern::returns_error_for_stray_closing_brace ... ok
test bindings::test_regex_from_simple_pattern::returns_error_for_stray_closing_brace_before_capture ... ok
test bindings::test_regex_from_simple_pattern::returns_error_for_stray_opening_brace ... ok
test bindings::test_regex_from_simple_pattern::returns_error_for_stray_opening_brace_before_capture ... ok
test bindings::test_regex_from_simple_pattern::returns_pattern_with_regexp_chars_escaped ... ok
test bindings::test_regex_from_simple_pattern::simple_int_pattern ... ok
test bindings::test_regex_from_simple_pattern::simple_text_pattern ... ok
test bindings::test_regex_from_simple_pattern::simple_number_pattern ... ok
test bindings::test_regex_from_simple_pattern::simple_word_pattern ... ok
test bindings::test_regex_from_simple_pattern::typemap_and_pattern_kind_must_match ... ok
test bindings::test_regex_from_simple_pattern::typemap_checked_on_pattern_parse_and_default_agrees ... ok
test bindings::test_regex_from_simple_pattern::typemap_updated_on_pattern_parse_default ... ok
test bindings::test_regex_from_simple_pattern::typemap_updated_on_pattern_parse_explicit ... ok
test bindings::test_regex_from_simple_pattern::typemap_used_when_kind_not_present ... ok
test blockattr::test::empty_braces ... ok
test blockattr::test::empty_string ... ok
test blockattr::test::just_word ... ok
test blockattr::test::open_brace_without_close ... ok
test blockattr::test::parse_one_dotted_word ... ok
test blockattr::test::parse_one_id ... ok
test blockattr::test::parse_one_kv ... ok
test blockattr::test::parse_one_kv_with_double_quotes ... ok
test blockattr::test::parse_one_kv_with_single_quotes ... ok
test blockattr::test::parse_one_word ... ok
test blockattr::test::two_ids ... ok
test blockattr::test::two_words ... ok
test codegen::test::verify_commentsafe_filter ... ok
test codegen::test::verify_name_slugification ... ok
test html::test_tag::can_self_close ... ok
test html::test_tag::cannot_self_close ... ok
test matches::test::returns_text ... ok
test matches::test::returns_uncaptured ... ok
test matches::test_partial_steps::different_captured_texts_dont_match ... ok
test matches::test_partial_steps::different_uncaptured_texts_dont_match ... ok
test matches::test_partial_steps::differently_captured_texts_dont_match ... ok
test matches::test_partial_steps::differently_named_captured_texts_dont_match ... ok
test matches::test_partial_steps::identical_captured_texts_match ... ok
test matches::test_partial_steps::identical_uncaptured_texts_match ... ok
test md::test::finds_block_classes ... ok
test md::test::finds_embedded_files ... ok
test md::test::finds_images ... ok
test md::test::finds_no_blocks_in_empty_doc ... ok
test md::test::finds_no_classes_when_no_blocks_have_them ... ok
test md::test::finds_no_embedded_files_in_empty_doc ... ok
test md::test::finds_no_images_in_empty_doc ... ok
test md::test::finds_no_scenarios_in_empty_doc ... ok
test md::test::finds_scenarios ... ok
test md::test::loads_empty_doc ... ok
test md::test::parses_auto_as_auto ... ok
test md::test::parses_empty_as_error ... ok
test md::test::parses_garbage_as_error ... ok
test md::test::parses_no_as_no ... ok
test md::test::parses_no_auto_newline_as_auto ... ok
test md::test::parses_yes_as_yes ... ok
test md::test_extract::returns_error_if_scenario_has_no_title ... ok
test md::test_extract::returns_nothing_if_there_is_no_scenario ... ok
test md::test_extract::returns_parent_section_with_scenario_snippet ... ok
test md::test_extract::returns_scenario_if_there_is_one ... ok
test md::test_extract::skips_scenarioless_deeper_headings ... ok
test md::test_extract::skips_scenarioless_parent_heading ... ok
test md::test_extract::skips_scenarioless_section_in_favour_of_same_level ... ok
test metadata::test::full_meta ... ok
test scenarios::filtertest::exclude_slow ... ok
test scenarios::filtertest::exclude_unimportant_slow ... ok
test scenarios::filtertest::include_all ... ok
test scenarios::filtertest::include_fast ... ok
test scenarios::filtertest::include_none ... ok
test scenarios::test::adds_step ... ok
test scenarios::test::has_no_steps_initially ... ok
test scenarios::test::has_title ... ok
test steps::test::fails_to_parse_and ... ok
test steps::test::parses_and ... ok
test steps::test::parses_given ... ok
test steps::test::parses_given_with_extra_spaces ... ok
test steps::test::parses_then ... ok
test steps::test::parses_when ... ok
test steps::test_steps_parser::empty_string ... ok
test steps::test_steps_parser::preserve_nonascii_whitespace ... ok
test steps::test_steps_parser::simple ... ok
test steps::test_steps_parser::two_simple ... ok
test templatespec::test::new_from_yaml ... ok
test toc::test_numberer::numbering ... ok
test toc::test_slugs::short_and_simple ... ok
test toc::test_slugs::unique_for_identical_simple_headings ... ok
test toc::test_toc::iterate ... ok
test toc::test_toc::uses_given_slug ... ok
test bindings::test_regex_from_simple_pattern::simple_uint_pattern ... ok

test result: ok. 108 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s

     Running tests/bindings-ubm.rs (/workspace/cache/debug/deps/bindings_ubm-d0f6bc72cfbb7793)

running 1 test
test bindings_microbenchmark ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s

     Running unittests src/subplot.rs (/workspace/cache/debug/deps/subplot-5f1e2e98cf42a9e2)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (/workspace/cache/debug/deps/subplot_build-6b2dd467b72efad4)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/seq.rs (/workspace/cache/debug/deps/seq-7ec92c4715a5f2cc)

running 4 tests
test more_than_one_number ... ok
test no_arguments ... ok
test not_a_number ... ok
test one_number ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/lib.rs (/workspace/cache/debug/deps/subplotlib-e06c73a79c36ff5c)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/files.rs (/workspace/cache/debug/deps/files-4f8862c0f10e9faf)

running 7 tests
test create_on_disk_files_from_embedded_files ... ok
test directories ... ok
test file_and_directory_removal ... ok
test file_equality ... ok
test file_metadata ... ok
test file_modification_time ... ok
test file_contents ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/runcmd.rs (/workspace/cache/debug/deps/runcmd-2695413f9701aad6)

running 21 tests
test check_stderr_doesn_t_contain_sub_string ... ok
test check_stderr_doesn_t_match_regular_expressions ... ok
test check_stderr_is_exactly_as_wanted ... ok
test check_stderr_is_not_exactly_something ... ok
test check_stderr_using_regular_expressions ... ok
test check_stderr_using_sub_string_search ... ok
test check_stdout_doesn_t_contain_sub_string ... ok
test check_stdout_doesn_t_match_regular_expression ... ok
test check_stdout_is_exactly_as_wanted ... ok
test check_stdout_is_not_exactly_something ... ok
test check_stdout_using_regular_expressions ... ok
test check_stdout_using_sub_string_search ... ok
test check_we_can_prepend_to__path ... ok
test execution_in_a_sub_directory_does_not_affect_home ... ok
test failed_execution ... ok
test failed_execution_in_a_sub_directory ... ok
test stdin_comes_from_a_named_file ... ok
test stdin_contains_exactly ... ok
test setting_and_clearing_of_environment_variables ... ok
test successful_execution_in_a_sub_directory ... ok
test successful_execution ... ok

test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

     Running tests/subplot-codegen.rs (/workspace/cache/debug/deps/subplot_codegen-decbcd508a05ce8d)

running 29 tests
test capture_using_regular_expressions ... ok
test all_the_keywords ... ok
test cleanup_functions_get_called_on_failure__python_ ... ok
test capture_using_simple_patterns ... ok
test code_generator_gives_an_error_if_input_document_lacks_title ... ok
test embedded_file_name_didn_t_match ... ok
test cleanup_functions_gets_called_on_success__python_ ... ok
test examples_are_not_files ... ok
test empty_lines_in_scenarios ... ok
test files_not_in_current_working_directory ... ok
test missing_functions_file ... ok
test misuse_of_continuation_keywords ... ok
test lowest_level_heading_is_name_of_scenario ... ok
test next_heading_at_higher_level_starts_new_scenario ... ok
test no_scenarios_means_codegen_fails ... ok
test no_template_means_you_can_docgen_but_not_codegen ... ok
test next_heading_at_same_level_starts_new_scenario ... ok
test running_only_chosen_scenarios_with_python ... ok
test recall_values_for_use_in_later_steps ... ok
test simple_patterns_with_regex_metacharacters__allowed_case ... ok
test simple_patterns_with_regex_metacharacters__forbidden_case ... ok
test set_environment_variables_in_generated_test_programs ... ok
test smoke_test ... ok
test steps_which_do_not_case_sensitively_match_sensitive_bindings_do_not_work ... ok
test steps_which_do_not_match_bindings_do_not_work ... ok
test steps_which_match_more_than_one_binding_do_not_work ... ok
test subplot_accepts_title_and_headings_with_inline_markup ... ok
test subheadings_don_t_start_new_scenario ... ok
test temporary_files_in_scenarios_in_python ... ok

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s

     Running tests/subplot-diagrams.rs (/workspace/cache/debug/deps/subplot_diagrams-67310fca0207b7c1)

running 4 tests
test pikchr ... ok
test dot ... ok
test roadmap ... ok
test plantuml ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s

     Running tests/subplot-docgen.rs (/workspace/cache/debug/deps/subplot_docgen-982ace7143619b16)

running 30 tests
test attempt_to_use_definition_list ... ok
test bad__add_newline__value ... ok
test bindings_file_strictness___given_when_then ... ok
test bindings_file_strictness___unknown_field ... ok
test class_name_validation ... ok
test date_given_in_metadata ... ok
test css_urls ... ok
test date_given_on_command_line ... ok
test document_generator_gives_an_error_if_input_document_lacks_title ... ok
test embedded_css ... ok
test dot ... ok
test examples_may_be_unused ... ok
test extract_embedded_file ... ok
test fail_if_embedded_file_isn_t_used ... ok
test fail_if_two_filenames_only_differ_in_case ... ok
test files_not_in_current_working_directory ... ok
test empty_lines_in_scenarios ... ok
test indented_scenario_steps_are_not_allowed ... ok
test missing_bindings_file ... ok
test multiple_markdown_files ... ok
test no_date_anywhere ... ok
test named_code_blocks_must_have_an_appropriate_class ... ok
test no_template_means_you_can_docgen_but_not_codegen ... ok
test pikchr ... ok
test roadmap ... ok
test scenario_before_the_first_heading ... ok
test smoke_test ... ok
test subplot_accepts_title_and_headings_with_inline_markup ... ok
test title_markup ... ok
test plantuml ... ok

test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.67s

     Running tests/subplot-extract.rs (/workspace/cache/debug/deps/subplot_extract-0a24e984e5369783)

running 1 test
test extract_embedded_files ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/subplot-metadata.rs (/workspace/cache/debug/deps/subplot_metadata-fc973d179d8fda50)

running 5 tests
test duplicate_scenario_titles ... ok
test extracting_metadata_from_a_document ... ok
test list_embedded_files ... ok
test scenario_titles ... ok
test files_not_in_current_working_directory ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

     Running tests/subplot-others.rs (/workspace/cache/debug/deps/subplot_others-6c333d2778882353)

running 68 tests
test attempt_to_use_definition_list ... ok
test bad__add_newline__value ... ok
test bindings_file_strictness___given_when_then ... ok
test bindings_file_strictness___unknown_field ... ok
test all_the_keywords ... ok
test capture_using_regular_expressions ... ok
test class_name_validation ... ok
test capture_using_simple_patterns ... ok
test cleanup_functions_get_called_on_failure__python_ ... ok
test code_generator_gives_an_error_if_input_document_lacks_title ... ok
test css_urls ... ok
test date_given_in_metadata ... ok
test date_given_on_command_line ... ok
test document_generator_gives_an_error_if_input_document_lacks_title ... ok
test cleanup_functions_gets_called_on_success__python_ ... ok
test dot ... ok
test duplicate_scenario_titles ... ok
test embedded_file_name_didn_t_match ... ok
test embedded_css ... ok
test examples_are_not_files ... ok
test examples_may_be_unused ... ok
test extract_embedded_file ... ok
test extract_embedded_file__automatically_add_missing_newline ... ok
test extract_embedded_file__by_default_add_missing_newline ... ok
test extract_embedded_file__by_default_do_not_add_a_second_newline ... ok
test extract_embedded_file__do_not_add_missing_newline ... ok
test extract_embedded_file__do_not_automatically_add_second_newline ... ok
test extract_embedded_file__explicitly_add_missing_newline ... ok
test extract_embedded_file__explicitly_add_second_newline ... ok
test extract_embedded_files ... ok
test extracting_metadata_from_a_document ... ok
test fail_if_embedded_file_isn_t_used ... ok
test fail_if_the_same_filename_is_used_twice ... ok
test fail_if_two_filenames_only_differ_in_case ... ok
test empty_lines_in_scenarios ... ok
test indented_scenario_steps_are_not_allowed ... ok
test list_embedded_files ... ok
test files_not_in_current_working_directory ... ok
test missing_bindings_file ... ok
test missing_functions_file ... ok
test misuse_of_continuation_keywords ... ok
test lowest_level_heading_is_name_of_scenario ... ok
test multiple_markdown_files ... ok
test named_code_blocks_must_have_an_appropriate_class ... ok
test next_heading_at_higher_level_starts_new_scenario ... ok
test no_date_anywhere ... ok
test no_scenarios_means_codegen_fails ... ok
test next_heading_at_same_level_starts_new_scenario ... ok
test pikchr ... ok
test no_template_means_you_can_docgen_but_not_codegen ... ok
test recall_values_for_use_in_later_steps ... ok
test roadmap ... ok
test running_only_chosen_scenarios_with_python ... ok
test scenario_before_the_first_heading ... ok
test scenario_titles ... ok
test set_environment_variables_in_generated_test_programs ... ok
test simple_patterns_with_regex_metacharacters__allowed_case ... ok
test simple_patterns_with_regex_metacharacters__forbidden_case ... ok
test smoke_test ... ok
test steps_which_do_not_case_sensitively_match_sensitive_bindings_do_not_work ... ok
test steps_which_do_not_match_bindings_do_not_work ... ok
test steps_which_match_more_than_one_binding_do_not_work ... ok
test subheadings_don_t_start_new_scenario ... ok
test subplot_accepts_title_and_headings_with_inline_markup ... ok
test temporary_files_in_scenarios_in_python ... ok
test title_markup ... ok
test use_embedded_file ... ok
test plantuml ... ok

test result: ok. 68 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s

     Running tests/subplotlib.rs (/workspace/cache/debug/deps/subplotlib-a59c162523207849)

running 3 tests
test embedded_files ... ok
test data_directory ... ok
test fundamentals ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (/workspace/cache/debug/deps/subplotlib_derive-66a581f537cf88f5)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests subplot

running 6 tests
test src/bindings.rs - bindings::BindingImpl::cleanup (line 163) ... ignored
test src/bindings.rs - bindings::BindingImpl::function (line 151) ... ignored
test src/bindings.rs - bindings::BindingImpl::new (line 137) ... ignored
test src/diagrams.rs - diagrams::PikchrMarkup (line 116) ... ok
test src/diagrams.rs - diagrams::DotMarkup (line 149) ... ok
test src/diagrams.rs - diagrams::PlantumlMarkup (line 198) ... ok

test result: ok. 3 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2.50s

   Doc-tests subplot_build

running 1 test
test subplot-build/src/lib.rs - codegen (line 27) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.48s

   Doc-tests subplotlib

running 70 tests
test subplotlib/src/file.rs - file::SubplotDataFile (line 20) ... ok
test subplotlib/src/file.rs - file::SubplotDataFile::data (line 120) ... ok
test subplotlib/src/file.rs - file::SubplotDataFile::name (line 105) ... ok
test subplotlib/src/prelude.rs - prelude (line 6) ... ok
test subplotlib/src/prelude.rs - prelude::step (line 100) ... ok
test subplotlib/src/file.rs - file::SubplotDataFile::new (line 76) ... ok
test subplotlib/src/prelude.rs - prelude::step (line 73) ... ok
test subplotlib/src/prelude.rs - prelude::throws (line 26) ... ok
test subplotlib/src/prelude.rs - prelude::throws (line 39) ... ok
test subplotlib/src/step.rs - step::ScenarioStep (line 24) ... ok
test subplotlib/src/scenario.rs - scenario::Scenario (line 305) ... ok
test subplotlib/src/steplibrary/datadir.rs - steplibrary::datadir::datadir_has_enough_space::call (line 160) ... ignored
test subplotlib/src/steplibrary/datadir.rs - steplibrary::datadir::datadir_has_enough_space_megabytes::call (line 171) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_embedded::call (line 55) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_embedded_with_other_name::call (line 68) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_text::call (line 131) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_and_embedded_file_do_not_match::call (line 380) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_and_embedded_file_match::call (line 354) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_contains::call (line 252) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_do_not_match::call (line 328) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_does_not_exist::call (line 207) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_doesnt_contain::call (line 268) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_exists::call (line 187) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_match::call (line 301) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_matches_regex::call (line 285) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::has_different_metadata::call (line 455) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::has_remembered_metadata::call (line 416) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::make_directory::call (line 520) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::mtime_is_ancient::call (line 504) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::mtime_is_recent::call (line 488) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::only_these_exist::call (line 233) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_does_not_exist::call (line 570) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_exists::call (line 553) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_is_empty::call (line 589) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_is_not_empty::call (line 607) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::remember_metadata::call (line 142) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_directory::call (line 530) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_empty_directory::call (line 541) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_file::call (line 92) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::touch::call (line 166) ... ignored
test subplotlib/src/steplibrary/files.rs - steplibrary::files::touch_with_timestamp::call (line 104) ... ignored
test subplotlib/src/steplibrary.rs - steplibrary (line 10) ... ok
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is::call (line 403) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_nonzero::call (line 442) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_not::call (line 419) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_zero::call (line 431) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::helper_script::call (line 227) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::helper_srcdir_path::call (line 241) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::run::call (line 254) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::run_in::call (line 271) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::set_environment_variable::call (line 677) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_contains::call (line 594) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_doesnt_contain::call (line 607) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_doesnt_match_regex::call (line 663) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_is::call (line 542) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_isnt::call (line 555) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_matches_regex::call (line 649) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdin_from_file::call (line 480) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdin_is::call (line 502) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_contains::call (line 568) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_doesnt_contain::call (line 581) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_doesnt_match_regex::call (line 635) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_is::call (line 516) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_isnt::call (line 529) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_matches_regex::call (line 621) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::try_to_run::call (line 285) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::try_to_run_in::call (line 298) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::unset_environment_variable::call (line 691) ... ignored
test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::Runcmd::join_paths (line 155) ... ok
test subplotlib/src/utils.rs - utils::base64_decode (line 9) ... ok

test result: ok. 14 passed; 0 failed; 56 ignored; 0 measured; 0 filtered out; finished in 2.34s

   Doc-tests subplotlib_derive

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

/workspace/src/inst/subplot --resources /workspace/src/share codegen subplot.subplot -o test.py --template python
 INFO Starting Subplot
 INFO Subplot finished successfully
rm -f test.log
python3 test.py --log test.log --env SUBPLOT_DIR=/workspace/src/inst
srcdir /workspace/src
datadir /tmp/tmpjxp4lji4
scenario: Extract embedded file, automatically add missing newline
  step: given file auto-without-newline.txt
  step: then auto-without-newline.txt ends in one newline
scenario: No date anywhere
  step: given file dateless.subplot
  step: given file dateless.md
  step: given file dateless.md has modification time 2020-02-26 07:53:17
  step: given an installed subplot
  step: when I run subplot docgen dateless.subplot -o mtime.html
  step: then file mtime.html exists
  step: then file mtime.html contains "<title>The Fabulous Title</title>"
  step: then file mtime.html contains "Alfred Pennyworth"
  step: then file mtime.html contains "Geoffrey Butler"
  step: then file mtime.html contains "2020-02-26 07:53"
  cleanup: given an installed subplot
scenario: Smoke test
  step: given file simple.subplot
  step: given file simple.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot docgen simple.subplot -o simple.html
  step: then file simple.html exists
  step: when I run subplot codegen --run simple.subplot -o test.py
  step: then scenario "Simple" was run
  step: then step "given precondition foo" was run
  step: then step "when I do bar" was run
  step: then step "then bar was done" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Roadmap
  step: given file roadmap.subplot
  step: given file roadmap.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I run subplot docgen roadmap.subplot -o roadmap.html
  step: then file roadmap.html matches regex /src="data:image/svg\\+xml;base64,/
  cleanup: given an installed subplot
scenario: Steps which match more than one binding do not work
  step: given file twobindings.subplot
  step: given file twobindings.md
  step: given file twobindings.yaml
  step: given file a_function.py
  step: given an installed subplot
  step: when I try to run subplot codegen --run twobindings.subplot -o test.py
  step: then command fails
  step: then stderr contains "xyzzy"
  step: then stderr contains "plugh"
  cleanup: given an installed subplot
scenario: Temporary files in scenarios in Python
  step: given file tmpdir.subplot
  step: given file tmpdir.md
  step: given file tmpdir.yaml
  step: given file tmpdir.py
  step: given an installed subplot
  step: when I run subplot codegen --run tmpdir.subplot -o test.py
  step: then command is successful
  step: then scenario "TMPDIR" was run
  step: then step "then TMPDIR is set" was run
  cleanup: given an installed subplot
scenario: All the keywords
  step: given file allkeywords.subplot
  step: given file allkeywords.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen --run allkeywords.subplot -o test.py
  step: then scenario "All keywords" was run
  step: then step "given precondition foo" was run
  step: then step "when I do bar" was run
  step: then step "then bar was done" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: No scenarios means codegen fails
  step: given file noscenarios.subplot
  step: given file noscenarios.md
  step: given an installed subplot
  step: when I try to run subplot codegen noscenarios.subplot -o test.py
  step: then command fails
  step: then stderr contains "no scenarios were found"
  cleanup: given an installed subplot
scenario: Subplot accepts title and headings with inline markup
  step: given file fancytitle.subplot
  step: given file fancytitle.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I try to run subplot docgen fancytitle.subplot -o foo.md
  step: then command is successful
  step: when I try to run subplot codegen fancytitle.subplot -o foo.md
  step: then command is successful
  cleanup: given an installed subplot
scenario: CSS URLs
  step: given file css-urls.subplot
  step: given file css-urls.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I run subplot docgen css-urls.subplot -o foo.html
  step: then file foo.html contains "https://example.com/flushing.css"
  cleanup: given an installed subplot
scenario: Embedded file name didn't match
  step: given file badfilename.subplot
  step: given file badfilename.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I try to run subplot codegen --run badfilename.md -o test.py
  step: then command fails
  cleanup: given an installed subplot
scenario: PlantUML
  step: given file plantuml.subplot
  step: given file plantuml.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I run subplot docgen plantuml.subplot -o plantuml.html
  step: then file plantuml.html matches regex /src="data:image/svg\\+xml;base64,/
  cleanup: given an installed subplot
scenario: Extract embedded file
  step: given file embedded.subplot
  step: given file embedded.md
  step: given an installed subplot
  step: when I run subplot docgen --merciful embedded.subplot -o foo.html
  step: then file foo.html exists
  step: then file foo.html matches regex /embedded\\.txt/
  cleanup: given an installed subplot
scenario: Simple patterns with regex metacharacters: forbidden case
  step: given file confusedpattern.subplot
  step: given file confusedpattern.md
  step: given file confusedpattern.yaml
  step: given file capture.py
  step: given an installed subplot
  step: when I try to run subplot codegen --run confusedpattern.subplot -o test.py
  step: then command fails
  step: then stderr contains "simple pattern contains regex"
  cleanup: given an installed subplot
scenario: Attempt to use definition list
  step: given an installed subplot
  step: given file dl.subplot
  step: given file dl.md
  step: when I try to run subplot docgen dl.subplot -o /dev/null
  step: then command fails
  step: then stderr contains "ERROR dl.md:3:1: attempt to use definition lists in Markdown"
  cleanup: given an installed subplot
scenario: Empty lines in scenarios
  step: given file emptylines.subplot
  step: given file emptylines.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot docgen emptylines.subplot -o emptylines.html
  step: then file emptylines.html exists
  step: when I run subplot codegen --run emptylines.subplot -o test.py
  step: then scenario "Simple" was run
  step: then step "given precondition foo" was run
  step: then step "when I do bar" was run
  step: then step "then bar was done" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Fail if the same filename is used twice
  step: given file onefiletwice.md
  step: given an installed subplot
  step: when I try to run subplot docgen onefiletwice.md -o onefiletwice.html
  step: then command fails
  step: then file onefiletwice.html does not exist
  cleanup: given an installed subplot
scenario: Bad "add-newline" value
  step: given an installed subplot
  step: given file add-newline.subplot
  step: given file add-newline.md
  step: when I try to run subplot docgen add-newline.subplot -o /dev/null
  step: then command fails
  step: then stderr contains "ERROR add-newline.md:1:1: value of add-newline attribute is not understood: xyzzy"
  cleanup: given an installed subplot
scenario: Capture using regular expressions
  step: given file regex.subplot
  step: given file regex.md
  step: given file regex.yaml
  step: given file capture.py
  step: given an installed subplot
  step: when I run subplot codegen --run regex.subplot -o test.py
  step: then scenario "Regex" was run
  step: then step "given I am Tomjon" was run
  step: then stdout contains "function got argument name as Tomjon"
  step: then command is successful
  cleanup: given an installed subplot
scenario: Date given on command line
  step: given file dateless.subplot
  step: given file dateless.md
  step: given an installed subplot
  step: when I run subplot docgen dateless.subplot -o dateoption.html --date=FANCYDATE
  step: then file dateoption.html exists
  step: then file dateoption.html contains "<title>The Fabulous Title</title>"
  step: then file dateoption.html contains "Alfred Pennyworth"
  step: then file dateoption.html contains "Geoffrey Butler"
  step: then file dateoption.html contains "FANCYDATE"
  cleanup: given an installed subplot
scenario: Running only chosen scenarios with Python
  step: given file twoscenarios-python.subplot
  step: given file twoscenarios-python.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen twoscenarios-python.subplot -o test.py
  step: when I run python3 test.py on
  step: then scenario "One" was run
  step: then scenario "Two" was not run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Scenario before the first heading
  step: given an installed subplot
  step: given file scenario-before-heading.subplot
  step: given file scenario-before-heading.md
  step: when I try to run subplot docgen scenario-before-heading.subplot -o /dev/null
  step: then command fails
  step: then stderr contains "ERROR scenario-before-heading.md:1:1: first scenario is before first heading"
  cleanup: given an installed subplot
scenario: Extracting metadata from a document
  step: given file images.subplot
  step: given file images.md
  step: given file b.yaml
  step: given file other.yaml
  step: given file f.py
  step: given file other.py
  step: given file expected.json
  step: given an installed subplot
  step: when I run subplot metadata images.subplot
  step: then stdout contains "source: images.md"
  step: then stdout contains "source: b.yaml"
  step: then stdout contains "source: other.yaml"
  step: then stdout contains "source: f.py"
  step: then stdout contains "source: other.py"
  step: then stdout contains "source: image.gif"
  step: then stdout contains "bindings: b.yaml"
  step: then stdout contains "bindings: other.yaml"
  step: then stdout contains "functions[python]: f.py"
  step: when I run subplot metadata images.subplot -o json
  step: then JSON output matches expected.json
  cleanup: given an installed subplot
scenario: Extract embedded file, do not automatically add second newline
  step: given file auto-has-newline.txt
  step: then auto-has-newline.txt ends in one newline
scenario: Embedded CSS
  step: given file embedded-css.subplot
  step: given file embedded-css.md
  step: given file embedded-css.css
  step: given file b.yaml
  step: given an installed subplot
  step: when I run subplot docgen embedded-css.subplot -o foo.html
  step: then file foo.html contains "silly: property;"
  cleanup: given an installed subplot
scenario: Steps which do not case-sensitively match sensitive bindings do not work
  step: given file casemismatch.subplot
  step: given file casemismatch.md
  step: given file badbindings.yaml
  step: given an installed subplot
  step: when I try to run subplot codegen --run casemismatch.subplot -o test.py
  step: then command fails
  cleanup: given an installed subplot
scenario: Fail if two filenames only differ in case
  step: given file casediff.md
  step: given an installed subplot
  step: when I try to run subplot docgen casediff.md -o casediff.html
  step: then command fails
  step: then file casediff.html does not exist
  cleanup: given an installed subplot
scenario: Use embedded file
  step: given file numbered-lines.txt
  step: given file not-numbered-lines.txt
scenario: Next heading at higher level starts new scenario
  step: given file higherisnewscenario.subplot
  step: given file higherisnewscenario.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen --run higherisnewscenario.subplot -o test.py
  step: then scenario "heading 1.1.1" was run
  step: then scenario "heading 1.2" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Subheadings don't start new scenario
  step: given file subisnotnewscenario.subplot
  step: given file subisnotnewscenario.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen --run subisnotnewscenario.subplot -o test.py
  step: then scenario "heading 1.1a" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Files not in current working directory
  step: given file x/simple.subplot from simple.subplot
  step: given file x/simple.md from simple.md
  step: given file x/b.yaml from b.yaml
  step: given file x/f.py from f.py
  step: given an installed subplot
  step: when I run subplot metadata x/simple.subplot
  step: then command is successful
  step: when I run subplot codegen x/simple.subplot -o test.py
  step: then file test.py exists
  step: when I run subplot docgen x/simple.subplot -o simple.html
  step: then file simple.html exists
  cleanup: given an installed subplot
scenario: Misuse of continuation keywords
  step: given file continuationmisuse.subplot
  step: given file continuationmisuse.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I try to run subplot codegen --run continuationmisuse.subplot -o test.py
  step: then command fails
  cleanup: given an installed subplot
scenario: Simple patterns with regex metacharacters: allowed case
  step: given file confusedbutok.subplot
  step: given file confusedbutok.md
  step: given file confusedbutok.yaml
  step: given file capture.py
  step: given an installed subplot
  step: when I run subplot codegen --run confusedbutok.subplot -o test.py
  step: then command is successful
  cleanup: given an installed subplot
scenario: List embedded files
  step: given file two-embedded.subplot
  step: given file two-embedded.md
  step: given an installed subplot
  step: when I run subplot metadata --merciful two-embedded.subplot
  step: then stdout contains "foo.txt"
  step: then stdout contains "bar.yaml"
  cleanup: given an installed subplot
scenario: Pikchr
  step: given file pikchr.subplot
  step: given file pikchr.md
  step: given an installed subplot
  step: when I run subplot docgen pikchr.subplot -o pikchr.html
  step: then file pikchr.html matches regex /src="data:image/svg\\+xml;base64,/
  cleanup: given an installed subplot
scenario: Fail if embedded file isn't used
  step: given file unusedfile.subplot
  step: given file unusedfile.md
  step: given an installed subplot
  step: when I try to run subplot docgen --merciful unusedfile.subplot -o unusedfile.html
  step: then command is successful
  step: then file unusedfile.html exists
  step: then stderr contains "thisisnotused.txt"
  cleanup: given an installed subplot
scenario: Class name validation
  step: given file unknown-class-name.subplot
  step: given file unknown-class-name.md
  step: given file known-class-name.subplot
  step: given file known-class-name.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I try to run subplot docgen unknown-class-name.subplot -o unknown-class-name.html
  step: then command fails
  step: then file unknown-class-name.html does not exist
  step: then stderr contains "Unknown classes found in the document: foobar"
  step: when I run subplot docgen known-class-name.subplot -o known-class-name.html
  step: then file known-class-name.html exists
  cleanup: given an installed subplot
scenario: Missing bindings file
  step: given file missing-binding.subplot
  step: given file missing-binding.md
  step: given an installed subplot
  step: when I try to run subplot docgen missing-binding.subplot -o foo.html
  step: then command fails
  step: then stderr contains "could not be found"
  step: then stderr contains "missing-binding.yaml"
  cleanup: given an installed subplot
scenario: Next heading at same level starts new scenario
  step: given file samelevelisnewscenario.subplot
  step: given file samelevelisnewscenario.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen --run samelevelisnewscenario.subplot -o test.py
  step: then scenario "heading 1.1.1" was run
  step: then scenario "heading 1.1.2" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Missing functions file
  step: given file missing-functions.subplot
  step: given file missing-functions.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I try to run subplot codegen --run missing-functions.subplot -o foo.py
  step: then command fails
  step: then stderr contains "could not be found"
  step: then stderr contains "missing-functions.py"
  cleanup: given an installed subplot
scenario: Code generator gives an error if input document lacks title
  step: given file notitle.subplot
  step: given file notitle.md
  step: given an installed subplot
  step: when I try to run subplot codegen --run notitle.subplot -o test.py
  step: then command fails
  cleanup: given an installed subplot
scenario: Extract embedded file, explicitly add second newline
  step: given file add-has-newline.txt
  step: then add-has-newline.txt ends in two newlines
scenario: Multiple markdown files
  step: given file multimd.subplot
  step: given file md1.md
  step: given file md2.md
  step: given an installed subplot
  step: when I run subplot docgen multimd.subplot -o multimd.html
  step: when I run cat multimd.html
  step: then file multimd.html exists
  step: then file multimd.html contains "<title>The Fabulous Title</title>"
  step: then file multimd.html contains "First markdown file."
  step: then file multimd.html contains "Second markdown file."
  cleanup: given an installed subplot
scenario: Steps which do not match bindings do not work
  step: given file nobinding.subplot
  step: given file nobinding.md
  step: given file badbindings.yaml
  step: given an installed subplot
  step: when I try to run subplot codegen --run nobinding.subplot -o test.py
  step: then command fails
  cleanup: given an installed subplot
scenario: Document generator gives an error if input document lacks title
  step: given file notitle.subplot
  step: given file notitle.md
  step: given an installed subplot
  step: when I try to run subplot docgen notitle.subplot -o foo.md
  step: then command fails
  cleanup: given an installed subplot
scenario: Duplicate scenario titles
  step: given file duplicate-scenario-titles.subplot
  step: given file duplicate-scenario-titles.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I try to run subplot metadata duplicate-scenario-titles.subplot
  step: then command fails
  step: then stderr contains "duplicate"
  cleanup: given an installed subplot
scenario: Title markup
  step: given file title-markup.subplot
  step: given file title-markup.md
  step: given an installed subplot
  step: when I run subplot docgen title-markup.subplot -o foo.html
  step: then file foo.html exists
  cleanup: given an installed subplot
scenario: Lowest level heading is name of scenario
  step: given file scenarioislowest.subplot
  step: given file scenarioislowest.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot codegen --run scenarioislowest.subplot -o test.py
  step: then scenario "heading 1.1.1" was run
  step: then command is successful
  cleanup: given an installed subplot
scenario: Extract embedded files
  step: given file embedded-file.subplot
  step: given file embedded-file.md
  step: given file expected.txt
  step: given an installed subplot
  step: when I run subplot extract --merciful embedded-file.subplot foo.txt -d .
  step: then files foo.txt and expected.txt match
  cleanup: given an installed subplot
scenario: Named code blocks must have an appropriate class
  step: given file named-code-blocks-appropriate.subplot
  step: given file named-code-blocks-appropriate.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I try to run subplot docgen named-code-blocks-appropriate.subplot -o foo.html
  step: then command fails
  step: then stderr contains "#example-1 at named-code-blocks-appropriate.md:7:1"
  step: then stderr doesn't contain "example-2"
  step: then stderr doesn't contain "example-3"
  cleanup: given an installed subplot
scenario: Extract embedded file, by default do not add a second newline
  step: given file default-has-newline.txt
  step: then default-has-newline.txt ends in one newline
scenario: Scenario titles
  step: given file scenario-titles.subplot
  step: given file scenario-titles.md
  step: given file b.yaml
  step: given file f.py
  step: given an installed subplot
  step: when I run subplot metadata scenario-titles.subplot
  step: then stdout contains "My fun scenario title"
  cleanup: given an installed subplot
scenario: Extract embedded file, explicitly add missing newline
  step: given file add-without-newline.txt
  step: then add-without-newline.txt ends in one newline
scenario: Recall values for use in later steps
  step: given file values.subplot
  step: given file values.md
  step: given file values.yaml
  step: given file values.py
  step: given an installed subplot
  step: when I run subplot codegen values.subplot -o test.py
  step: when I run python3 test.py
  step: then command is successful
  cleanup: given an installed subplot
scenario: Extract embedded file, by default add missing newline
  step: given file default-without-newline.txt
  step: then default-without-newline.txt ends in one newline
scenario: Date given in metadata
  step: given file metadate.subplot
  step: given file metadate.md
  step: given an installed subplot
  step: when I run subplot docgen metadate.subplot -o metadate.html
  step: when I run cat metadate.html
  step: then file metadate.html exists
  step: then file metadate.html contains "<title>The Fabulous Title</title>"
  step: then file metadate.html contains "Alfred Pennyworth"
  step: then file metadate.html contains "Geoffrey Butler"
  step: then file metadate.html contains "WIP"
  cleanup: given an installed subplot
scenario: Examples are not files
  step: given file examplesnotfiles.subplot
  step: given file examplesnotfiles.md
  step: given an installed subplot
  step: when I try to run subplot codegen examplesnotfiles.subplot -t python -o examplesnotfiles.html
  step: then command fails
  step: then file examplesnotfiles.html does not exist
  step: then stderr contains "thisisanexample.txt"
  cleanup: given an installed subplot
scenario: Bindings file strictness - unknown field
  step: given file badbindingsuf.subplot
  step: given file badbindingsuf.md
  step: given file badbindingsuf.yaml
  step: given an installed subplot
  step: when I try to run subplot docgen --output ignored.html badbindingsuf.subplot
  step: then command fails
  step: then stderr contains "Unknown field `function`"
  cleanup: given an installed subplot
scenario: Capture using simple patterns
  step: given file simplepattern.subplot
  step: given file simplepattern.md
  step: given file simplepattern.yaml
  step: given file capture.py
  step: given an installed subplot
  step: when I run subplot codegen --run simplepattern.subplot -o test.py
  step: then scenario "Simple pattern" was run
  step: then step "given I am Tomjon" was run
  step: then stdout contains "function got argument name as Tomjon"
  step: then command is successful
  cleanup: given an installed subplot
scenario: Bindings file strictness - given when then
  step: given file badbindingsgwt.subplot
  step: given file badbindingsgwt.md
  step: given file badbindingsgwt.yaml
  step: given an installed subplot
  step: when I try to run subplot docgen --output ignored.html badbindingsgwt.subplot
  step: then command fails
  step: then stderr contains "binding has more than one keyword"
  cleanup: given an installed subplot
scenario: No template means you can docgen but not codegen
  step: given file notemplate.subplot
  step: given file notemplate.md
  step: given an installed subplot
  step: when I run subplot docgen notemplate.subplot -o notemplate.html
  step: then file notemplate.html exists
  step: when I try to run subplot codegen notemplate.subplot -o test.py
  step: then command fails
  step: then stderr contains "document has no template"
  cleanup: given an installed subplot
scenario: Set environment variables in generated test programs
  step: given file env.subplot
  step: given file env.md
  step: given file env.yaml
  step: given file env.py
  step: given an installed subplot
  step: when I run subplot codegen env.subplot -o test.py
  step: when I try to run python3 test.py
  step: then command fails
  step: when I try to run python3 test.py --env FOO=foo
  step: then command fails
  step: when I try to run python3 test.py --env FOO=bar
  step: then command is successful
  cleanup: given an installed subplot
scenario: Examples may be unused
  step: given file unusedexample.subplot
  step: given file unusedexample.md
  step: given an installed subplot
  step: when I try to run subplot docgen --merciful unusedexample.subplot -o unusedexample.html
  step: then command is successful
  step: then file unusedexample.html exists
  step: then stderr doesn't contain "thisisnotused.txt"
  cleanup: given an installed subplot
scenario: Dot
  step: given file dot.subplot
  step: given file dot.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I run subplot docgen dot.subplot -o dot.html
  step: then file dot.html matches regex /src="data:image/svg\\+xml;base64,/
  cleanup: given an installed subplot
scenario: Extract embedded file, do not add missing newline
  step: given file no-adding-without-newline.txt
  step: then no-adding-without-newline.txt does not end in a newline
scenario: Cleanup functions gets called on success (Python)
  step: given file cleanup-success-python.subplot
  step: given file cleanup-success-python.md
  step: given file cleanup.yaml
  step: given file cleanup.py
  step: given an installed subplot
  step: when I run subplot codegen --run cleanup-success-python.subplot -o test.py
  step: then scenario "Cleanup" was run
  step: then step "given foo" was run, and then step "given bar"
  step: then cleanup for "given bar" was run, and then for "given foo"
  step: then command is successful
  cleanup: given an installed subplot
scenario: Cleanup functions get called on failure (Python)
  step: given file cleanup-fail-python.subplot
  step: given file cleanup-fail-python.md
  step: given file cleanup.yaml
  step: given file cleanup.py
  step: given an installed subplot
  step: when I try to run subplot codegen --run cleanup-fail-python.subplot -o test.py
  step: then scenario "Cleanup" was run
  step: then step "given foo" was run, and then step "given bar"
  step: then cleanup for "given bar" was run, and then for "given foo"
  step: then cleanup for "given failure" was not run
  step: then command fails
  cleanup: given an installed subplot
scenario: Indented scenario steps are not allowed
  step: given file indented-step.subplot
  step: given file indented-step.md
  step: given file b.yaml
  step: given an installed subplot
  step: when I try to run subplot docgen indented-step.subplot -o foo.html
  step: then command fails
  step: then stderr contains "indented"
  cleanup: given an installed subplot
OK, all scenarios finished successfully
cd examples/muck && /workspace/src/inst/subplot --resources /workspace/src/share codegen muck.subplot --run --output test.py
 INFO Starting Subplot
srcdir /workspace/src/examples/muck
datadir /tmp/tmpspm7fxqx
scenario: Updating someone else's data
  step: given a fresh Muck server
  step: given I am Tomjon
  step: when I do POST /res with {"foo": "bar"}
  step: then header Muck-Id is ID
  step: then header Muck-Revision is REV1
  step: given I am Verence
  step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
  step: then response code is 404
scenario: Accessing someone else's data
  step: given a fresh Muck server
  step: given I am Tomjon
  step: when I do POST /res with {"foo": "bar"}
  step: then header Muck-Id is ID
  step: then header Muck-Revision is REV1
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 200
  step: then header Muck-Revision matches {REV1}
  step: then body matches {"foo": "bar"}
  step: given I am Verence
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 404
scenario: Deleting someone else's data
  step: given a fresh Muck server
  step: given I am Tomjon
  step: when I do POST /res with {"foo": "bar"}
  step: then header Muck-Id is ID
  step: then header Muck-Revision is REV1
  step: given I am Verence
  step: when I do DELETE /res with Muck-Id: {ID}
  step: then response code is 404
scenario: Restarting Muck
  step: given a fresh Muck server
  step: given I am Tomjon, with super capability
  step: when I do POST /res with {"foo": "bar"}
  step: then header Muck-Id is ID
  step: then header Muck-Revision is REV1
  step: when I restart Muck
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 200
  step: then header Muck-Revision matches {REV1}
  step: then body matches {"foo": "bar"}
scenario: Basic object handling
  step: given a fresh Muck server
  step: given I am Tomjon
  step: when I do POST /res with {"foo": "bar"}
  step: then response code is 201
  step: then header Muck-Id is ID
  step: then header Muck-Revision is REV1
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 200
  step: then header Muck-Revision matches {REV1}
  step: then body matches {"foo": "bar"}
  step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
  step: then response code is 200
  step: then header Muck-Revision is {REV2}
  step: then revisions {REV1} and {REV2} are different
  step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
  step: then response code is 409
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 200
  step: then header Muck-Revision matches {REV2}
  step: then body matches {"foo": "yo"}
  step: when I do DELETE /res with Muck-Id: {ID}
  step: then response code is 200
  step: when I do GET /res with Muck-Id: {ID}
  step: then response code is 404
OK, all scenarios finished successfully
 INFO Subplot finished successfully
if [ "--offline" = "" ] ; then cd examples/website && /workspace/src/inst/subplot --resources /workspace/src/share codegen website.subplot --run --output test.py; fi
cd examples/seq && cargo test
   Compiling thiserror v2.0.9
   Compiling serde v1.0.216
   Compiling ahash v0.8.11
   Compiling regex-automata v0.4.9
   Compiling pest v2.7.15
   Compiling anyhow v1.0.95
   Compiling hashbrown v0.14.5
   Compiling getrandom v0.2.15
   Compiling libm v0.2.11
   Compiling globset v0.4.15
   Compiling rand_core v0.6.4
   Compiling pest_meta v2.7.15
   Compiling hashlink v0.9.1
   Compiling encoding_rs v0.8.35
   Compiling serde_json v1.0.134
   Compiling rand_chacha v0.3.1
   Compiling yaml-rust2 v0.9.0
   Compiling ignore v0.4.23
   Compiling pest_generator v2.7.15
   Compiling serde_path_to_error v0.1.16
   Compiling humansize v2.1.3
   Compiling pulldown-cmark v0.12.2
   Compiling marked-yaml v0.7.2
   Compiling pikchr v0.1.3
   Compiling pest_derive v2.7.15
   Compiling globwalk v0.9.1
   Compiling rand v0.8.5
   Compiling tempfile v3.14.0
   Compiling subplot v0.12.0 (/workspace/src)
   Compiling regex v1.11.1
   Compiling memchr v2.7.4
   Compiling tera v1.20.0
   Compiling aho-corasick v1.1.3
   Compiling roadmap v0.7.0
   Compiling time-macros v0.2.19
   Compiling once_cell v1.20.2
   Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
   Compiling time v0.3.37
   Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
   Compiling subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 16.22s
     Running tests/seq.rs (/workspace/cache/debug/deps/seq-47f93f949e8064e0)

running 4 tests
test no_arguments ... ok
test more_than_one_number ... ok
test not_a_number ... ok
test one_number ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

/workspace/src/inst/subplot --resources /workspace/src/share docgen subplot.subplot -o subplot.html
 INFO Starting Subplot
 INFO Subplot finished successfully
/workspace/src/inst/subplot --resources /workspace/src/share docgen tests/subplots/common/files.subplot -o tests/subplots/common/files.html
 INFO Starting Subplot
 INFO Subplot finished successfully
/workspace/src/inst/subplot --resources /workspace/src/share docgen tests/subplots/common/runcmd.subplot -o tests/subplots/common/runcmd.html
 INFO Starting Subplot
 INFO Subplot finished successfully
cd examples/muck && /workspace/src/inst/subplot --resources /workspace/src/share/subplot docgen muck.subplot -o muck.html
 INFO Starting Subplot
 INFO Subplot finished successfully
cd examples/website && /workspace/src/inst/subplot --resources /workspace/src/share docgen website.subplot -o website.html
 INFO Starting Subplot
 INFO Subplot finished successfully
cd examples/seq && /workspace/src/inst/subplot --resources /workspace/src/share docgen seq.subplot -o seq.html
 INFO Starting Subplot
 INFO Subplot finished successfully
/workspace/src/inst/subplot --resources /workspace/src/share libdocgen lib/runcmd.yaml --output share/common/lib/runcmd.md
 INFO Starting Subplot
 INFO Subplot finished successfully
if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/runcmd"  --output share/common/lib/runcmd.html share/common/lib/runcmd.md; fi
/workspace/src/inst/subplot --resources /workspace/src/share libdocgen lib/files.yaml --output share/common/lib/files.md
 INFO Starting Subplot
 INFO Subplot finished successfully
if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/files"  --output share/common/lib/files.html share/common/lib/files.md; fi
/workspace/src/inst/subplot --resources /workspace/src/share libdocgen python/lib/daemon.yaml --output share/python/lib/daemon.md
 INFO Starting Subplot
 INFO Subplot finished successfully
if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/daemon"  --output share/python/lib/daemon.html share/python/lib/daemon.md; fi
/workspace/src/inst/subplot --resources /workspace/src/share docgen book/user-guide.subplot --output book/user-guide.html
 INFO Starting Subplot
 INFO Subplot finished successfully
mkdir -p doc/libdocs
for x in subplot.html tests/subplots/common/*.html examples/*/*.html book/*.html; do if [ -e "$x" ]; then mv "$x" doc; fi; done
for x in share/common/lib/*.html share/python/lib/*.html; do if [ -e "$x" ]; then mv "$x" doc; fi; done
+ git reset --hard
HEAD is now at 9c2306d fix: drop check that shellcheck is installed
+ git clean -fdx
Removing doc/
Removing examples/muck/test.py
Removing inst/
Removing share/common/lib/files.md
Removing share/common/lib/runcmd.md
Removing share/python/lib/daemon.md
Removing share/python/template/__pycache__/
Removing test.log
Removing test.py
+ git status --ignored
HEAD detached at 9c2306d
nothing to commit, working tree clean
++ dpkg-parsechangelog -SVersion
++ sed 's/-[^-]*$//'
+ V=0.12.0
++ date -u +%Y%m%dT%H%M%S
+ T=20250911T131814
+ version=0.12.0.ci20250911T131814-1
+ dch -v 0.12.0.ci20250911T131814-1 'CI build under Ambient.'
dch warning: Previous package version was Debian native whilst new version is not
+ dch -r ''
RUN: Action finished OK
RUN: Action Deb
[2025-09-11T13:18:14Z DEBUG ambient_ci::action] Plan::execute: Deb
SPAWN: argv=["/bin/bash", "-c", "#!/bin/bash\nset -xeuo pipefail\n\necho \"PATH at start: $PATH\"\nexport PATH=\"/root/.cargo/bin:$PATH\"\nexport CARGO_HOME=/workspace/deps\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\n/bin/env\n\ncommand -v cargo\ncommand -v rustc\n\ncargo --version\nrustc --version\n\n# Get name and version of source package.\nname=\"$(dpkg-parsechangelog -SSource)\"\nversion=\"$(dpkg-parsechangelog -SVersion)\"\n\n# Get upstream version: everything before the last dash.\nuv=\"$(echo \"$version\" | sed 's/-[^-]*$//')\"\n\n# Files that will be created.\narch=\"$(dpkg --print-architecture)\"\norig=\"../${name}_${uv}.orig.tar.xz\"\ndeb=\"../${name}_${version}_${arch}.deb\"\nchanges=\"../${name}_${version}_${arch}.changes\"\n\n# Create \"upstream tarball\".\ngit archive HEAD | xz >\"$orig\"\n\n# Build package.\ndpkg-buildpackage -us -uc\n\n# Dump some information to make it easier to visually verify\n# everything looks OK. Also, test the package with the lintian tool.\n\nls -l ..\nfor x in ../*.deb; do dpkg -c \"$x\"; done\n# FIXME: disabled while this prevents radicle-native-ci deb from being built.\n# lintian -i --allow-root --fail-on warning ../*.changes\n\n# Move files to artifacts directory.\nmv ../*_* /workspace/artifacts\n        "]
       cwd=/workspace/src (exists? true)
       extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
+ echo 'PATH at start: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH at start: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ export PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ export CARGO_HOME=/workspace/deps
+ CARGO_HOME=/workspace/deps
+ export DEBEMAIL=liw@liw.fi
+ DEBEMAIL=liw@liw.fi
+ export 'DEBFULLNAME=Lars Wirzenius'
+ DEBFULLNAME='Lars Wirzenius'
+ /bin/env
DEBFULLNAME=Lars Wirzenius
CARGO_TARGET_DIR=/workspace/cache
PWD=/workspace/src
SYSTEMD_EXEC_PID=276
LANG=C.UTF-8
CARGO_HOME=/workspace/deps
DEBEMAIL=liw@liw.fi
INVOCATION_ID=65fa2dfaba9f4ef5904e7801a16f0ee3
SHLVL=2
JOURNAL_STREAM=8:13165
PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
OLDPWD=/
_=/bin/env
+ command -v cargo
/root/.cargo/bin/cargo
+ command -v rustc
/root/.cargo/bin/rustc
+ cargo --version
cargo 1.88.0 (873a06493 2025-05-10)
+ rustc --version
rustc 1.88.0 (6b00bc388 2025-06-23)
++ dpkg-parsechangelog -SSource
+ name=subplot
++ dpkg-parsechangelog -SVersion
+ version=0.12.0.ci20250911T131814-1
++ echo 0.12.0.ci20250911T131814-1
++ sed 's/-[^-]*$//'
+ uv=0.12.0.ci20250911T131814
++ dpkg --print-architecture
+ arch=amd64
+ orig=../subplot_0.12.0.ci20250911T131814.orig.tar.xz
+ deb=../subplot_0.12.0.ci20250911T131814-1_amd64.deb
+ changes=../subplot_0.12.0.ci20250911T131814-1_amd64.changes
+ git archive HEAD
+ xz
+ dpkg-buildpackage -us -uc
dpkg-buildpackage: info: source package subplot
dpkg-buildpackage: info: source version 0.12.0.ci20250911T131814-1
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Lars Wirzenius <liw@liw.fi>
dpkg-buildpackage: info: host architecture amd64
 dpkg-source --before-build .
 debian/rules clean
dh clean
   dh_auto_clean
   dh_clean
 dpkg-source -b .
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building subplot using existing ./subplot_0.12.0.ci20250911T131814.orig.tar.xz
dpkg-source: info: building subplot in subplot_0.12.0.ci20250911T131814-1.debian.tar.xz
dpkg-source: info: building subplot in subplot_0.12.0.ci20250911T131814-1.dsc
 debian/rules build
dh build
   dh_update_autotools_config
   dh_autoreconf
   dh_auto_configure
   debian/rules override_dh_auto_build
make[1]: Entering directory '/workspace/src'
true
make[1]: Leaving directory '/workspace/src'
   debian/rules override_dh_auto_test
make[1]: Entering directory '/workspace/src'
echo disabled
disabled
make[1]: Leaving directory '/workspace/src'
   create-stamp debian/debhelper-build-stamp
 debian/rules binary
dh binary
   dh_testroot
   dh_prep
   debian/rules override_dh_auto_install
make[1]: Entering directory '/workspace/src'
cargo install --path=bin --root=debian/subplot --offline --locked
  Installing subplot-bin v0.12.0 (/workspace/src/bin)
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling cfg-if v1.0.0
   Compiling memchr v2.7.4
   Compiling quote v1.0.37
   Compiling syn v2.0.91
   Compiling once_cell v1.20.2
   Compiling thiserror v2.0.9
   Compiling byteorder v1.5.0
   Compiling libc v0.2.169
   Compiling ahash v0.8.11
   Compiling aho-corasick v1.1.3
   Compiling zerocopy-derive v0.7.35
   Compiling zerocopy v0.7.35
   Compiling thiserror-impl v2.0.9
   Compiling anyhow v1.0.95
   Compiling serde v1.0.216
   Compiling regex-automata v0.4.9
   Compiling serde_derive v1.0.216
   Compiling itoa v1.0.14
   Compiling bitflags v2.6.0
   Compiling log v0.4.22
   Compiling pest v2.7.15
   Compiling hashbrown v0.14.5
   Compiling getrandom v0.2.15
   Compiling bstr v1.11.1
   Compiling time-core v0.1.2
   Compiling unicode-width v0.1.14
   Compiling rustix v0.38.42
   Compiling libm v0.2.11
   Compiling pest_meta v2.7.15
   Compiling time-macros v0.2.19
   Compiling cc v1.2.5
   Compiling anstyle-parse v0.2.6
   Compiling globset v0.4.15
   Compiling rand_core v0.6.4
   Compiling hashlink v0.9.1
   Compiling ppv-lite86 v0.2.20
   Compiling tracing-core v0.1.33
   Compiling encoding_rs v0.8.35
   Compiling linux-raw-sys v0.4.14
   Compiling anstyle-query v1.1.2
   Compiling anstyle v1.0.10
   Compiling serde_json v1.0.134
   Compiling colorchoice v1.0.3
   Compiling anstream v0.6.18
   Compiling yaml-rust2 v0.9.0
   Compiling deranged v0.3.11
   Compiling rand_chacha v0.3.1
   Compiling ignore v0.4.23
   Compiling pikchr v0.1.3
   Compiling pest_generator v2.7.15
   Compiling serde_path_to_error v0.1.16
   Compiling regex v1.11.1
   Compiling tracing-attributes v0.1.28
   Compiling clap_lex v0.7.4
   Compiling deunicode v1.6.0
   Compiling pin-project-lite v0.2.15
   Compiling pulldown-cmark v0.12.2
   Compiling ryu v1.0.18
   Compiling clap_derive v4.5.18
   Compiling clap_builder v4.5.23
   Compiling textwrap v0.16.1
   Compiling time v0.3.37
   Compiling tracing v0.1.41
   Compiling slug v0.1.6
   Compiling tempfile v3.14.0
   Compiling marked-yaml v0.7.2
   Compiling humansize v2.1.3
   Compiling pest_derive v2.7.15
   Compiling globwalk v0.9.1
   Compiling subplot v0.12.0 (/workspace/src)
   Compiling rand v0.8.5
   Compiling getopts v0.2.21
   Compiling unicase v2.8.0
   Compiling tera v1.20.0
   Compiling git-testament-derive v0.2.1
   Compiling roadmap v0.7.0
   Compiling clap v4.5.23
   Compiling tracing-log v0.2.0
   Compiling thread_local v1.1.8
   Compiling smallvec v1.13.2
   Compiling tracing-subscriber v0.3.19
   Compiling git-testament v0.2.6
   Compiling subplot-bin v0.12.0 (/workspace/src/bin)
    Finished `release` profile [optimized] target(s) in 1m 04s
  Installing debian/subplot/bin/subplot
   Installed package `subplot-bin v0.12.0 (/workspace/src/bin)` (executable `subplot`)
warning: be sure to add `debian/subplot/bin` to your PATH to be able to run the installed binaries
rm -f debian/subplot/.crates.toml
rm -f debian/subplot/.crates2.json
dh_lintian
make[1]: Leaving directory '/workspace/src'
   dh_install
   dh_installdocs
   dh_installchangelogs
dh_installchangelogs: warning: Could not parse timestamp '15 April 2022 15:00:00 +0100'. debian/changelog will not be trimmed.
dh_installchangelogs: warning: debian/changelog could not be trimmed. The full changelog will be installed.
   dh_lintian
   dh_perl
   dh_link
   dh_strip_nondeterminism
   dh_compress
   dh_fixperms
   dh_missing
   dh_strip
   dh_makeshlibs
   dh_shlibdeps
   dh_installdeb
   dh_gencontrol
dpkg-gencontrol: warning: Built-Using field of package subplot: substitution variable ${cargo:Built-Using} used, but is not defined
dpkg-gencontrol: warning: Built-Using field of package subplot: substitution variable ${cargo:Built-Using} used, but is not defined
   dh_md5sums
   dh_builddeb
dpkg-deb: building package 'subplot-dbgsym' in '../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb'.
dpkg-deb: building package 'subplot' in '../subplot_0.12.0.ci20250911T131814-1_amd64.deb'.
 dpkg-genbuildinfo -O../subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo
 dpkg-genchanges -O../subplot_0.12.0.ci20250911T131814-1_amd64.changes
dpkg-genchanges: info: including full source code in upload
 dpkg-source --after-build .
dpkg-buildpackage: info: full upload (original source is included)
+ ls -l ..
total 2356
drwxr-xr-x  2 root root    4096 Sep 11 13:15 artifacts
drwxr-xr-x  5 root root    4096 Sep 11 13:11 cache
drwxr-xr-x  3 root root    4096 Sep 11 13:15 deps
drwxr-xr-x 15 root root    4096 Sep 11 13:18 src
-rw-r--r--  1 root root  271164 Sep 11 13:19 subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb
-rw-r--r--  1 root root    2376 Sep 11 13:18 subplot_0.12.0.ci20250911T131814-1.debian.tar.xz
-rw-r--r--  1 root root    1018 Sep 11 13:18 subplot_0.12.0.ci20250911T131814-1.dsc
-rw-r--r--  1 root root   10151 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo
-rw-r--r--  1 root root    2388 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.changes
-rw-r--r--  1 root root 1948112 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.deb
-rw-r--r--  1 root root  147276 Sep 11 13:18 subplot_0.12.0.ci20250911T131814.orig.tar.xz
+ for x in ../*.deb
+ dpkg -c ../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb
drwxr-xr-x root/root         0 2025-09-11 13:18 ./
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/.build-id/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/.build-id/23/
-rw-r--r-- root/root   1785520 2025-09-11 13:18 ./usr/lib/debug/.build-id/23/0b9931d5df6bb55a61d1697a02be8adc81944d.debug
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/
lrwxrwxrwx root/root         0 2025-09-11 13:18 ./usr/share/doc/subplot-dbgsym -> subplot
+ for x in ../*.deb
+ dpkg -c ../subplot_0.12.0.ci20250911T131814-1_amd64.deb
drwxr-xr-x root/root         0 2025-09-11 13:18 ./
drwxr-xr-x root/root         0 2025-09-11 13:18 ./bin/
-rwxr-xr-x root/root   8048048 2025-09-11 13:18 ./bin/subplot
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/subplot/
-rw-r--r-- root/root      3761 2025-09-11 13:15 ./usr/share/doc/subplot/README.md
-rw-r--r-- root/root       635 2025-09-11 13:18 ./usr/share/doc/subplot/changelog.Debian.gz
-rw-r--r-- root/root      1394 2025-09-11 13:15 ./usr/share/doc/subplot/copyright
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/lintian/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/lintian/overrides/
-rw-r--r-- root/root       103 2025-09-11 13:15 ./usr/share/lintian/overrides/subplot
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/
drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/common/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/common/lib/
-rw-r--r-- root/root      9355 2025-09-11 13:15 ./usr/share/subplot/common/lib/files.yaml
-rw-r--r-- root/root      8470 2025-09-11 13:15 ./usr/share/subplot/common/lib/runcmd.yaml
drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/python/
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/python/lib/
-rw-r--r-- root/root     10415 2025-09-11 13:15 ./usr/share/subplot/python/lib/daemon.py
-rw-r--r-- root/root      4434 2025-09-11 13:15 ./usr/share/subplot/python/lib/daemon.yaml
-rw-r--r-- root/root      7272 2025-09-11 13:15 ./usr/share/subplot/python/lib/files.py
-rw-r--r-- root/root      8657 2025-09-11 13:15 ./usr/share/subplot/python/lib/runcmd.py
drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/python/template/
-rw-r--r-- root/root      1275 2025-09-11 13:15 ./usr/share/subplot/python/template/asserts.py
-rw-r--r-- root/root      2457 2025-09-11 13:15 ./usr/share/subplot/python/template/context.py
-rw-r--r-- root/root      4611 2025-09-11 13:15 ./usr/share/subplot/python/template/context_tests.py
-rw-r--r-- root/root       201 2025-09-11 13:15 ./usr/share/subplot/python/template/encoding.py
-rw-r--r-- root/root       474 2025-09-11 13:15 ./usr/share/subplot/python/template/encoding_tests.py
-rw-r--r-- root/root       412 2025-09-11 13:15 ./usr/share/subplot/python/template/files.py
-rw-r--r-- root/root      4557 2025-09-11 13:15 ./usr/share/subplot/python/template/main.py
-rw-r--r-- root/root      2660 2025-09-11 13:15 ./usr/share/subplot/python/template/scenarios.py
-rw-r--r-- root/root      2529 2025-09-11 13:15 ./usr/share/subplot/python/template/template.py.tera
-rw-r--r-- root/root       137 2025-09-11 13:15 ./usr/share/subplot/python/template/template.yaml
drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/
drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/lib/
-rw-r--r-- root/root       788 2025-09-11 13:15 ./usr/share/subplot/rust/lib/datadir.yaml
drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/template/
-rw-r--r-- root/root      1429 2025-09-11 13:15 ./usr/share/subplot/rust/template/macros.rs.tera
-rw-r--r-- root/root      1175 2025-09-11 13:15 ./usr/share/subplot/rust/template/template.rs.tera
-rw-r--r-- root/root        71 2025-09-11 13:15 ./usr/share/subplot/rust/template/template.yaml
-rw-r--r-- root/root      2103 2025-09-11 13:15 ./usr/share/subplot/subplot.css
+ mv ../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb ../subplot_0.12.0.ci20250911T131814-1.debian.tar.xz ../subplot_0.12.0.ci20250911T131814-1.dsc ../subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo ../subplot_0.12.0.ci20250911T131814-1_amd64.changes ../subplot_0.12.0.ci20250911T131814-1_amd64.deb ../subplot_0.12.0.ci20250911T131814.orig.tar.xz /workspace/artifacts
RUN: Action finished OK
RUN: Action TarCreate {
    archive: "/dev/vde",
    directory: "/workspace/cache",
}
[2025-09-11T13:19:24Z DEBUG ambient_ci::action] Plan::execute: TarCreate {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
[2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] creating virtual drive (tar archive): VirtualDriveBuilder {
        filename: Some(
            "/dev/vde",
        ),
        root: Some(
            "/workspace/cache",
        ),
        size: None,
    }
[2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] tar archive to be created: /dev/vde; exists? true
[2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] create archive file /dev/vde
[2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] directory /workspace/cache exists? true
[2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] add contents of /workspace/cache as .
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] created virtual drive /dev/vde
RUN: Action finished OK
RUN: Action TarCreate {
    archive: "/dev/vdd",
    directory: "/workspace/artifacts",
}
[2025-09-11T13:19:30Z DEBUG ambient_ci::action] Plan::execute: TarCreate {
        archive: "/dev/vdd",
        directory: "/workspace/artifacts",
    }
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] creating virtual drive (tar archive): VirtualDriveBuilder {
        filename: Some(
            "/dev/vdd",
        ),
        root: Some(
            "/workspace/artifacts",
        ),
        size: None,
    }
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] tar archive to be created: /dev/vdd; exists? true
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] create archive file /dev/vdd
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] directory /workspace/artifacts exists? true
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] add contents of /workspace/artifacts as .
[2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] created virtual drive /dev/vdd
RUN: Action finished OK
ambient-execute-plan ends
EXIT CODE: 0
[2025-09-11T13:19:38Z INFO  ambient] ambient ends successfully

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:zjxyd2A1A7FnxtC69qDfoAajfTHo",
    "name": "subplot",
    "description": "Capture and communicate acceptance criteria and their verification",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV"
    ]
  },
  "action": "Created",
  "patch": {
    "id": "39d9a3b4885068969deba80f4a69cea3a48a2b8a",
    "author": {
      "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
      "alias": "liw"
    },
    "title": "replace ./check with Makefile",
    "state": {
      "status": "archived",
      "conflicts": []
    },
    "before": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
    "after": "9c2306d9f39b17639de9bd3fac74ed61ae3cc285",
    "commits": [
      "9c2306d9f39b17639de9bd3fac74ed61ae3cc285",
      "2a55ed57fa65430675027a52ed361505f1f419cf",
      "bf6f0317b8f55152fcdc0c1cff1e2b9441c030e8",
      "7ad255842727f9c8d459afab49639fa51b036077",
      "4e23a350a28b03d5cce569d39ce05afcfb3e6ffc",
      "75b49733d48b77328a4ada4a9e88b2c40c64f730",
      "29750351b7f888c445edf0096abfacd5191e47e3",
      "d02f5f95b99d7f8dba6056d790cd74eeb191da3e",
      "7dff18419d6694ad62d2490228b712b635803677",
      "b7b048476f6238ec4526da6b330e947e1818c0a1",
      "31e089c0c3d21928c4b564d7e7cd959d711cb036",
      "734392c3813c0eb60223c7e97e7171efafbdca50",
      "07e2c49c2a37f5aa6f821037f4cb4e0c748827e4",
      "fdec5dde14beea8db2de665930748f1ccc56f02c",
      "d027b1168e2a7241c5cba44504c1d36687f64be5"
    ],
    "target": "8539754c682ec6adaed454d236e778d2b15daf19",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "39d9a3b4885068969deba80f4a69cea3a48a2b8a",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "a592845906e16b51bb04f5cb6d6230a34a78a0de",
        "timestamp": 1753019517
      },
      {
        "id": "db268326b62f3c0983a4608c4cb68d5ed915f161",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "try --locked\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author\n\n\nopportunistic pandoc\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author\n\n\nonly mv subplot.html if it exists\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author\n\n\nfix: doc install\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "21b89bfe086ea1ce766e43494104f794b911dee4",
        "timestamp": 1753021701
      },
      {
        "id": "2a2ba428a14b28da24959f5e032d0ce1f09dd12f",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "always use --locked\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "f96a5be558d6f467f00e806aee51567afb869c6f",
        "timestamp": 1753022193
      },
      {
        "id": "657bb88045f3327323444e77c0b039a1e62f656b",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "only pass --offlie to make\n\nSigned-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "9665ff7742be9c096ec1bcfbe65db0da6db68ca2",
        "timestamp": 1753022403
      },
      {
        "id": "a9a9fac97a29246ed2ed58cf4671ae0b15a3f808",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "tidy up",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "7ad255842727f9c8d459afab49639fa51b036077",
        "timestamp": 1753023223
      },
      {
        "id": "3d111bdf2a152e71a75dc0d110f52f98a2fea288",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "",
        "base": "2e38d848af2367ce0591bbd1e3ac99136d3fc4b9",
        "oid": "9c2306d9f39b17639de9bd3fac74ed61ae3cc285",
        "timestamp": 1753090349
      }
    ]
  }
}

Ambient stdout

[2025-09-11T13:15:48Z INFO  ambient] ambient starts
[2025-09-11T13:15:48Z DEBUG ambient] load default configuration file /home/_rad/.config/ambient/config.yaml if it exists
deprecated: the `cpus` field is replaced by `qemu.cpus`
deprecated: the `memory` field is replaced by `qemu.memory`
[2025-09-11T13:15:48Z DEBUG ambient] complete configuration: Config {
        tmpdir: "/home/_rad/tmp",
        image_store: "/home/_rad/ambient-images",
        projects: "/dev/null",
        state: "/home/_rad/ambient-state",
        rsync_target: None,
        rsync_target_base: None,
        rsync_target_map: None,
        dput_target: None,
        executor: Some(
            "/usr/bin/ambient-execute-plan",
        ),
        artifacts_max_size: Byte(
            1000000000,
        ),
        cache_max_size: Byte(
            30000000000,
        ),
        qemu: QemuConfig {
            cpus: 2,
            memory: Byte(
                12000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-11T13:15:48Z DEBUG ambient] configuration: Config {
        tmpdir: "/home/_rad/tmp",
        image_store: "/home/_rad/ambient-images",
        projects: "/dev/null",
        state: "/home/_rad/ambient-state",
        rsync_target: None,
        rsync_target_base: None,
        rsync_target_map: None,
        dput_target: None,
        executor: Some(
            "/usr/bin/ambient-execute-plan",
        ),
        artifacts_max_size: Byte(
            1000000000,
        ),
        cache_max_size: Byte(
            30000000000,
        ),
        qemu: QemuConfig {
            cpus: 2,
            memory: Byte(
                12000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-11T13:15:48Z DEBUG ambient_ci::project] load project state from /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/meta.yaml
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] latest commit: "8539754c682ec6adaed454d236e778d2b15daf19"
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] is a git repository
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] git repository is clean
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] current (HEAD) commit: 9c2306d9f39b17639de9bd3fac74ed61ae3cc285
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] no dry run requested
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] forced run requested
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] run? true
[2025-09-11T13:15:48Z INFO  ambient_ci::run] project rad:zjxyd2A1A7FnxtC69qDfoAajfTHo: running CI
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] Executing pre-plan steps
[2025-09-11T13:15:48Z DEBUG ambient_ci::action] Plan::execute: CargoFetch {
        sourcedir: "/tmp/.tmpw3Xssu/src",
        dependenciesdir: "/home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/dependencies",
    }
SPAWN: argv=["env", "CARGO_HOME=/home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/dependencies", "cargo", "fetch", "--locked"]
       cwd=/tmp/.tmpw3Xssu/src (exists? true)
       extra_env=[]
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmphnxBrP/src.tar
[2025-09-11T13:15:48Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmphnxBrP/deps.tar
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] create_executor_vdrive: executor="/usr/bin/ambient-execute-plan"
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] create_executor_vdrive: plan=RunnablePlan {
        steps: [
            Mkdir {
                pathname: "/workspace",
            },
            Mkdir {
                pathname: "/workspace/artifacts",
            },
            TarExtract {
                archive: "/dev/vdc",
                directory: "/workspace/src",
            },
            TarExtract {
                archive: "/dev/vdf",
                directory: "/workspace/deps",
            },
            TarExtract {
                archive: "/dev/vde",
                directory: "/workspace/cache",
            },
            Spawn {
                argv: [
                    "find",
                    "/workspace",
                    "-maxdepth",
                    "2",
                    "-ls",
                ],
            },
            CargoFmt,
            CargoClippy,
            Shell {
                shell: "export DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n",
            },
            Deb,
            TarCreate {
                archive: "/dev/vde",
                directory: "/workspace/cache",
            },
            TarCreate {
                archive: "/dev/vdd",
                directory: "/workspace/artifacts",
            },
        ],
        executor_drive: Some(
            "/dev/vdb",
        ),
        source_drive: Some(
            "/dev/vdc",
        ),
        artifact_drive: Some(
            "/dev/vdd",
        ),
        cache_drive: Some(
            "/dev/vde",
        ),
        deps_drive: Some(
            "/dev/vdf",
        ),
        workspace_dir: Some(
            "/workspace",
        ),
        source_dir: Some(
            "/workspace/src",
        ),
        deps_dir: Some(
            "/workspace/deps",
        ),
        cache_dir: Some(
            "/workspace/cache",
        ),
        artifacts_dir: Some(
            "/workspace/artifacts",
        ),
    }
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] executor bin /usr/bin/ambient-execute-plan
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] copying /usr/bin/ambient-execute-plan to /home/_rad/tmp/.tmphnxBrP/ambient-execute-plan/run-ci
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] copy OK: true
[2025-09-11T13:15:49Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmphnxBrP/executor.tar
[2025-09-11T13:15:51Z DEBUG ambient_ci::project] removing run log file /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::project] statedir is /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo, exists? true
[2025-09-11T13:15:51Z DEBUG ambient_ci::project] creating run log file /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::project] created run log file /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log OK
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] with_hostname called: "ambient"
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] with_runcmd called: "echo xyzzy > /dev/ttyS1"
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] with_runcmd called: "\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n        echo \"EXIT CODE: 0\"\nelse\n        echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n"
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] with_runcmd called: "poweroff"
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] LocalDataStoreBuilder: LocalDataStoreBuilder {
        hostname: Some(
            "ambient",
        ),
        network: false,
        bootcmd: [],
        runcmd: [
            "echo xyzzy > /dev/ttyS1",
            "\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n        echo \"EXIT CODE: 0\"\nelse\n        echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n",
            "poweroff",
        ],
    }
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] run QEMU
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] create copy-on-write image and UEFI vars file
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu_utils] qemu-img create /home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/vm.qcow2 backing on /home/_rad/ambient.qcow2
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] create cloud-init ISO file
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] LocalDataStore: LocalDataStore {
        hostname: "ambient",
        network: false,
        bootcmd: [],
        runcmd: [
            "echo xyzzy > /dev/ttyS1",
            "\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n        echo \"EXIT CODE: 0\"\nelse\n        echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n",
            "poweroff",
        ],
    }
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpLyrdHI/meta-data
[2025-09-11T13:15:51Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpLyrdHI/user-data
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] set console log file to /home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/console.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::util] create file /home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/console.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] set run file to /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::util] create file /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log
[2025-09-11T13:15:51Z DEBUG ambient_ci::qemu] run QEMU: QemuArgs {
        args: [
            "-m",
            "11444",
            "-smp",
            "cpus=2",
            "-cpu",
            "kvm64",
            "-machine",
            "type=q35,accel=kvm,usb=off",
            "-uuid",
            "a85c9de7-edc0-4e54-bead-112e5733582c",
            "-boot",
            "strict=on",
            "-name",
            "ambient-ci-vm",
            "-rtc",
            "base=utc,driftfix=slew",
            "-display",
            "none",
            "-device",
            "virtio-rng-pci",
            "-serial",
            "file:/home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/console.log",
            "-serial",
            "file:/home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/run.log",
            "-drive",
            "if=pflash,format=raw,unit=0,file=/usr/share/ovmf/OVMF.fd,readonly=on",
            "-drive",
            "if=pflash,format=raw,unit=1,file=/home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/vars.fd",
            "-drive",
            "format=qcow2,if=virtio,file=/home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/vm.qcow2",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmphnxBrP/executor.tar,readonly=on",
            "-cdrom",
            "/home/_rad/tmp/.tmpf9xABG/.tmpUSXCKc/cloud_init.iso",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmphnxBrP/src.tar,readonly=on",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmphnxBrP/artifacts.tar",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmphnxBrP/cache.tar",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmphnxBrP/deps.tar,readonly=on",
            "-nodefaults",
            "-no-user-config",
        ],
    }
[2025-09-11T13:19:33Z DEBUG ambient_ci::qemu] QEMU finished OK
[2025-09-11T13:19:33Z DEBUG ambient_ci::qemu] run log:
    --------------------==========
    [2025-09-11T13:15:54Z TRACE ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T13:15:54Z DEBUG ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T13:15:54Z INFO  ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T13:15:54Z WARN  ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T13:15:54Z ERROR ambient_execute_plan] ambient-execute-plan starts
    RunnablePlan::from_file: filename=plan.yaml
    steps:
    - action: mkdir
      pathname: /workspace
    - action: mkdir
      pathname: /workspace/artifacts
    - action: tar_extract
      archive: /dev/vdc
      directory: /workspace/src
    - action: tar_extract
      archive: /dev/vdf
      directory: /workspace/deps
    - action: tar_extract
      archive: /dev/vde
      directory: /workspace/cache
    - action: spawn
      argv:
      - find
      - /workspace
      - '-maxdepth'
      - '2'
      - '-ls'
    - action: cargo_fmt
    - action: cargo_clippy
    - action: shell
      shell: |
        export DEBEMAIL=liw@liw.fi
        export DEBFULLNAME="Lars Wirzenius"
        export CARGO_TARGET_DIR=/workspace/cache
        export CARGO_HOME=/workspace/deps
        export HOME=/root
        export PATH="/root/.cargo/bin:$PATH"
    
        make OFFLINE="--offline"
    
        # Clean up after tests and documentation building.
        git reset --hard
        git clean -fdx
        git status --ignored
    
        V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
        T="$(date -u "+%Y%m%dT%H%M%S")"
        version="$V.ci$T-1"
        dch -v "$version" "CI build under Ambient."
        dch -r ''
    - action: deb
    - action: tar_create
      archive: /dev/vde
      directory: /workspace/cache
    - action: tar_create
      archive: /dev/vdd
      directory: /workspace/artifacts
    executor_drive: /dev/vdb
    source_drive: /dev/vdc
    artifact_drive: /dev/vdd
    cache_drive: /dev/vde
    deps_drive: /dev/vdf
    workspace_dir: /workspace
    source_dir: /workspace/src
    deps_dir: /workspace/deps
    cache_dir: /workspace/cache
    artifacts_dir: /workspace/artifacts
    
    
    RUN: Action Mkdir {
        pathname: "/workspace",
    }
    [2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
            pathname: "/workspace",
        }
    RUN: Action finished OK
    RUN: Action Mkdir {
        pathname: "/workspace/artifacts",
    }
    [2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
            pathname: "/workspace/artifacts",
        }
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
    [2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vdc",
            directory: "/workspace/src",
        }
    [2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
    [2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
    [2025-09-11T13:15:54Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vdf",
            directory: "/workspace/deps",
        }
    [2025-09-11T13:15:54Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
    [2025-09-11T13:15:56Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
    [2025-09-11T13:15:56Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vde",
            directory: "/workspace/cache",
        }
    [2025-09-11T13:15:56Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
    [2025-09-11T13:16:00Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
    [2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: Spawn {
            argv: [
                "find",
                "/workspace",
                "-maxdepth",
                "2",
                "-ls",
            ],
        }
    SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
           cwd=/workspace/src (exists? true)
           extra_env=[]
      2621441      4 drwxr-xr-x   6 root     root         4096 Sep 11 13:15 /workspace
      2621779      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/deps
      2641321      0 -rw-r--r--   1 root     root            0 Sep 11 13:09 /workspace/deps/.package-cache-mutate
      2621780      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:09 /workspace/deps/registry
      2641320    100 -rw-r--r--   1 root     root       102400 Sep 11 13:15 /workspace/deps/.global-cache
      2641322      0 -rw-r--r--   1 root     root            0 Sep 11 13:09 /workspace/deps/.package-cache
      2621443      4 drwxr-xr-x  15 root     root         4096 Sep 11 13:15 /workspace/src
      2621605      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/book
      2621449      4 -rw-r--r--   1 root     root         1568 Sep 11 13:15 /workspace/src/Cargo.toml
      2621618      8 -rw-r--r--   1 root     root         5176 Sep 11 13:15 /workspace/src/CONTRIBUTING.md
      2621447     20 -rw-r--r--   1 root     root        19936 Sep 11 13:15 /workspace/src/NEWS.md
      2621604      8 -rw-r--r--   1 root     root         5617 Sep 11 13:15 /workspace/src/build.rs
      2621626      4 drwxr-xr-x   8 root     root         4096 Sep 11 13:15 /workspace/src/.git
      2621617      4 -rw-r--r--   1 root     root         1366 Sep 11 13:15 /workspace/src/DCO-1-1.txt
      2621568      4 -rwxr-xr-x   1 root     root          489 Sep 11 13:15 /workspace/src/install-debian.sh
      2621616      8 -rw-r--r--   1 root     root         6501 Sep 11 13:15 /workspace/src/DECISIONS.md
      2621621      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/.gitlab
      2621505      4 -rw-r--r--   1 root     root         2648 Sep 11 13:15 /workspace/src/subplot.yaml
      2621512      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/src
      2621567      4 -rw-r--r--   1 root     root         1286 Sep 11 13:15 /workspace/src/reference.md
      2621446      4 -rw-r--r--   1 root     root         3761 Sep 11 13:15 /workspace/src/README.md
      2621506      4 -rw-r--r--   1 root     root          284 Sep 11 13:15 /workspace/src/subplot.subplot
      2621566      4 -rw-r--r--   1 root     root          689 Sep 11 13:15 /workspace/src/reference.py
      2621619      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/src/.radicle
      2621591      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/debian
      2621614      4 -rw-r--r--   1 root     root         3387 Sep 11 13:15 /workspace/src/RELEASE.md
      2621625      4 -rw-r--r--   1 root     root           10 Sep 11 13:15 /workspace/src/.envrc
      2621569      4 -rw-r--r--   1 root     root           56 Sep 11 13:15 /workspace/src/flake8.ini
      2621450     44 -rw-r--r--   1 root     root        44081 Sep 11 13:15 /workspace/src/Cargo.lock
      2621452      4 -rw-r--r--   1 root     root          136 Sep 11 13:15 /workspace/src/.gitignore
      2621451      4 -rw-r--r--   1 root     root          678 Sep 11 13:15 /workspace/src/.gitlab-ci.yml
      2621453      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/tests
      2621466      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/subplotlib
      2621564      4 -rw-r--r--   1 root     root          196 Sep 11 13:15 /workspace/src/reference.yaml
      2621570      4 -rw-r--r--   1 root     root         1385 Sep 11 13:15 /workspace/src/flake.lock
      2621508      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/subplot-build
      2621445      4 -rw-r--r--   1 root     root         1292 Sep 11 13:15 /workspace/src/flake.nix
      2621444      4 -rw-r--r--   1 root     root         3370 Sep 11 13:15 /workspace/src/subplot.py
      2621571      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/examples
      2621590      4 -rw-r--r--   1 root     root          295 Sep 11 13:15 /workspace/src/deny.toml
      2621499      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/subplotlib-derive
      2621615      4 -rw-r--r--   1 root     root         1325 Sep 11 13:15 /workspace/src/LICENSE.md
      2621507     96 -rw-r--r--   1 root     root        96042 Sep 11 13:15 /workspace/src/subplot.md
      2621448      8 -rw-r--r--   1 root     root         4131 Sep 11 13:15 /workspace/src/Makefile
      2621534      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:15 /workspace/src/share
      2621608      4 drwxr-xr-x   3 root     root         4096 Sep 11 13:15 /workspace/src/bin
      2621565      4 -rw-r--r--   1 root     root          273 Sep 11 13:15 /workspace/src/reference.subplot.disabled
      2621442      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:15 /workspace/artifacts
      2641323      4 drwxr-xr-x   5 root     root         4096 Sep 11 13:11 /workspace/cache
      2642763      4 drwxr-xr-x   7 root     root         4096 Sep 11 13:10 /workspace/cache/debug
      2642762      4 drwxr-xr-x   2 root     root         4096 Sep 11 13:09 /workspace/cache/tmp
      2641324      4 -rw-r--r--   1 root     root         1034 Sep 11 13:11 /workspace/cache/.rustc_info.json
      2641325      4 drwxr-xr-x   7 root     root         4096 Sep 11 13:13 /workspace/cache/release
    RUN: Action finished OK
    RUN: Action CargoFmt
    [2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: CargoFmt
    SPAWN: argv=["cargo", "fmt", "--check"]
           cwd=/workspace/src (exists? true)
           extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
    RUN: Action finished OK
    RUN: Action CargoClippy
    [2025-09-11T13:16:00Z DEBUG ambient_ci::action] Plan::execute: CargoClippy
    SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
           cwd=/workspace/src (exists? true)
           extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
       Compiling proc-macro2 v1.0.92
       Compiling unicode-ident v1.0.14
        Checking cfg-if v1.0.0
       Compiling memchr v2.7.4
       Compiling quote v1.0.37
       Compiling syn v2.0.91
       Compiling once_cell v1.20.2
       Compiling serde v1.0.216
       Compiling ahash v0.8.11
       Compiling thiserror v2.0.9
        Checking aho-corasick v1.1.3
       Compiling anyhow v1.0.95
        Checking bitflags v2.6.0
        Checking regex-automata v0.4.9
       Compiling libc v0.2.169
       Compiling libm v0.2.11
       Compiling zerocopy-derive v0.7.35
       Compiling serde_derive v1.0.216
       Compiling thiserror-impl v2.0.9
       Compiling rustix v0.38.42
       Compiling pest v2.7.15
       Compiling serde_json v1.0.134
       Compiling cc v1.2.5
       Compiling pest_meta v2.7.15
        Checking itoa v1.0.14
       Compiling pikchr v0.1.3
       Compiling pest_generator v2.7.15
       Compiling tracing-attributes v0.1.28
       Compiling pest_derive v2.7.15
       Compiling pulldown-cmark v0.12.2
        Checking regex v1.11.1
        Checking linux-raw-sys v0.4.14
       Compiling byteorder v1.5.0
       Compiling zerocopy v0.7.35
        Checking tempfile v3.14.0
        Checking ryu v1.0.18
       Compiling log v0.4.22
       Compiling time-core v0.1.2
       Compiling time-macros v0.2.19
       Compiling hashbrown v0.14.5
       Compiling getrandom v0.2.15
       Compiling subplot v0.12.0 (/workspace/src)
        Checking bstr v1.11.1
       Compiling unicode-width v0.1.14
       Compiling rand_core v0.6.4
       Compiling globset v0.4.15
       Compiling hashlink v0.9.1
       Compiling ppv-lite86 v0.2.20
       Compiling encoding_rs v0.8.35
       Compiling culpa-macros v1.0.2
       Compiling yaml-rust2 v0.9.0
       Compiling rand_chacha v0.3.1
       Compiling ignore v0.4.23
       Compiling serde_path_to_error v0.1.16
       Compiling deunicode v1.6.0
        Checking deranged v0.3.11
       Compiling textwrap v0.16.1
       Compiling humansize v2.1.3
       Compiling slug v0.1.6
       Compiling marked-yaml v0.7.2
       Compiling globwalk v0.9.1
       Compiling rand v0.8.5
       Compiling getopts v0.2.21
       Compiling tracing-core v0.1.33
       Compiling unicase v2.8.0
       Compiling pin-project-lite v0.2.15
       Compiling tera v1.20.0
       Compiling tracing v0.1.41
        Checking time v0.3.37
        Checking nix v0.29.0
       Compiling roadmap v0.7.0
        Checking culpa v1.0.2
        Checking cvt v0.1.2
        Checking fs_at v0.2.1
       Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
        Checking remove_dir_all v1.0.0
        Checking filetime v0.2.25
        Checking fs2 v0.4.3
       Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
        Checking anstyle-parse v0.2.6
        Checking anstyle-query v1.1.2
        Checking anstyle v1.0.10
        Checking colorchoice v1.0.3
        Checking anstream v0.6.18
        Checking clap_lex v0.7.4
        Checking clap_builder v4.5.23
       Compiling clap_derive v4.5.18
        Checking clap v4.5.23
       Compiling git-testament-derive v0.2.1
        Checking tracing-log v0.2.0
        Checking thread_local v1.1.8
        Checking smallvec v1.13.2
        Checking git-testament v0.2.6
        Checking tracing-subscriber v0.3.19
        Checking subplot-bin v0.12.0 (/workspace/src/bin)
        Checking subplot-build v0.12.0 (/workspace/src/subplot-build)
        Checking subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.90s
    RUN: Action finished OK
    RUN: Action Shell {
        shell: "export DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n",
    }
    [2025-09-11T13:16:39Z DEBUG ambient_ci::action] Plan::execute: Shell {
            shell: "export DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n",
        }
    SPAWN: argv=["/bin/bash", "-c", "set -xeuo pipefail\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\nmake OFFLINE=\"--offline\"\n\n# Clean up after tests and documentation building.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n\n"]
           cwd=/workspace/src (exists? true)
           extra_env=[]
    + export DEBEMAIL=liw@liw.fi
    + DEBEMAIL=liw@liw.fi
    + export 'DEBFULLNAME=Lars Wirzenius'
    + DEBFULLNAME='Lars Wirzenius'
    + export CARGO_TARGET_DIR=/workspace/cache
    + CARGO_TARGET_DIR=/workspace/cache
    + export CARGO_HOME=/workspace/deps
    + CARGO_HOME=/workspace/deps
    + export HOME=/root
    + HOME=/root
    + export PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + make OFFLINE=--offline
    which >/dev/null cargo 
    which >/dev/null dot
    which >/dev/null plantuml
    which >/dev/null python3
    which >/dev/null rustc
    which >/dev/null rustfmt
    which >/dev/null tidy
    if which shellcheck; then shellcheck *.sh; fi
    /usr/bin/shellcheck
    cargo clippy --locked --offline --workspace --all-targets -- -Dwarnings
       Compiling subplot v0.12.0 (/workspace/src)
       Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
       Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
        Checking subplot-bin v0.12.0 (/workspace/src/bin)
        Checking subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
        Checking subplot-build v0.12.0 (/workspace/src/subplot-build)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.06s
    cd examples/seq && cargo clippy --workspace --all-targets -- -Dwarnings
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s
    rm -rf "/workspace/src/inst"
    cargo install --locked --offline --path=bin --root="/workspace/src/inst" --debug
      Installing subplot-bin v0.12.0 (/workspace/src/bin)
       Compiling once_cell v1.20.2
       Compiling syn v2.0.91
       Compiling cfg-if v1.0.0
       Compiling memchr v2.7.4
       Compiling byteorder v1.5.0
       Compiling itoa v1.0.14
       Compiling libc v0.2.169
       Compiling aho-corasick v1.1.3
       Compiling regex-automata v0.4.9
       Compiling zerocopy-derive v0.7.35
       Compiling zerocopy v0.7.35
       Compiling thiserror-impl v2.0.9
       Compiling serde_derive v1.0.216
       Compiling thiserror v2.0.9
       Compiling bitflags v2.6.0
       Compiling log v0.4.22
       Compiling ahash v0.8.11
       Compiling pest v2.7.15
       Compiling hashbrown v0.14.5
       Compiling getrandom v0.2.15
       Compiling bstr v1.11.1
       Compiling serde v1.0.216
       Compiling unicode-width v0.1.14
       Compiling anstyle-parse v0.2.6
       Compiling globset v0.4.15
       Compiling rand_core v0.6.4
       Compiling hashlink v0.9.1
       Compiling pest_meta v2.7.15
       Compiling anyhow v1.0.95
       Compiling ppv-lite86 v0.2.20
       Compiling encoding_rs v0.8.35
       Compiling tracing-core v0.1.33
       Compiling anstyle-query v1.1.2
       Compiling anstyle v1.0.10
       Compiling time-core v0.1.2
       Compiling linux-raw-sys v0.4.14
       Compiling colorchoice v1.0.3
       Compiling rustix v0.38.42
       Compiling anstream v0.6.18
       Compiling time-macros v0.2.19
       Compiling deranged v0.3.11
       Compiling yaml-rust2 v0.9.0
       Compiling rand_chacha v0.3.1
       Compiling pest_generator v2.7.15
       Compiling serde_path_to_error v0.1.16
       Compiling ignore v0.4.23
       Compiling libm v0.2.11
       Compiling regex v1.11.1
       Compiling tracing-attributes v0.1.28
       Compiling pin-project-lite v0.2.15
       Compiling deunicode v1.6.0
       Compiling clap_lex v0.7.4
       Compiling ryu v1.0.18
       Compiling clap_derive v4.5.18
       Compiling tracing v0.1.41
       Compiling serde_json v1.0.134
       Compiling clap_builder v4.5.23
       Compiling tempfile v3.14.0
       Compiling slug v0.1.6
       Compiling textwrap v0.16.1
       Compiling marked-yaml v0.7.2
       Compiling globwalk v0.9.1
       Compiling humansize v2.1.3
       Compiling pest_derive v2.7.15
       Compiling rand v0.8.5
       Compiling time v0.3.37
       Compiling subplot v0.12.0 (/workspace/src)
       Compiling getopts v0.2.21
       Compiling unicase v2.8.0
       Compiling pulldown-cmark v0.12.2
       Compiling git-testament-derive v0.2.1
       Compiling tera v1.20.0
       Compiling pikchr v0.1.3
       Compiling roadmap v0.7.0
       Compiling clap v4.5.23
       Compiling tracing-log v0.2.0
       Compiling thread_local v1.1.8
       Compiling smallvec v1.13.2
       Compiling tracing-subscriber v0.3.19
       Compiling git-testament v0.2.6
       Compiling subplot-bin v0.12.0 (/workspace/src/bin)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 26.84s
      Installing /workspace/src/inst/bin/subplot
       Installed package `subplot-bin v0.12.0 (/workspace/src/bin)` (executable `subplot`)
    warning: be sure to add `/workspace/src/inst/bin` to your PATH to be able to run the installed binaries
    mv "/workspace/src/inst"/bin/* "/workspace/src/inst"
    rm -rf "/workspace/src/inst"/.crate*  "/workspace/src/inst"/bin
    cd share/python/template && python3 context_tests.py
    ............................
    ----------------------------------------------------------------------
    Ran 28 tests in 0.002s
    
    OK
    cd share/python/template && python3 encoding_tests.py
    ..
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    OK
    env SUBPLOT_DIR="/workspace/src/inst" cargo test --workspace
       Compiling zerocopy v0.7.35
       Compiling thiserror v2.0.9
       Compiling libc v0.2.169
       Compiling serde v1.0.216
       Compiling ppv-lite86 v0.2.20
       Compiling pest v2.7.15
       Compiling ahash v0.8.11
       Compiling pest_meta v2.7.15
       Compiling hashbrown v0.14.5
       Compiling hashlink v0.9.1
       Compiling pest_generator v2.7.15
       Compiling serde_json v1.0.134
       Compiling pest_derive v2.7.15
       Compiling yaml-rust2 v0.9.0
       Compiling serde_path_to_error v0.1.16
       Compiling marked-yaml v0.7.2
       Compiling getrandom v0.2.15
       Compiling roadmap v0.7.0
       Compiling rand_core v0.6.4
       Compiling globset v0.4.15
       Compiling ignore v0.4.23
       Compiling rand_chacha v0.3.1
       Compiling time-macros v0.2.19
       Compiling rand v0.8.5
       Compiling globwalk v0.9.1
       Compiling subplot v0.12.0 (/workspace/src)
       Compiling tracing-core v0.1.33
       Compiling tracing v0.1.41
       Compiling tera v1.20.0
       Compiling pikchr v0.1.3
       Compiling culpa v1.0.2
       Compiling nix v0.29.0
       Compiling cvt v0.1.2
       Compiling fs_at v0.2.1
       Compiling time v0.3.37
       Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
       Compiling remove_dir_all v1.0.0
       Compiling filetime v0.2.25
       Compiling fs2 v0.4.3
       Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
       Compiling clap v4.5.23
       Compiling git-testament-derive v0.2.1
       Compiling tracing-subscriber v0.3.19
       Compiling git-testament v0.2.6
       Compiling subplot-build v0.12.0 (/workspace/src/subplot-build)
       Compiling subplot-bin v0.12.0 (/workspace/src/bin)
       Compiling subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 30.16s
         Running unittests src/lib.rs (/workspace/cache/debug/deps/subplot-094668524162d5b8)
    
    running 108 tests
    test bindings::test_binding::creates_new ... ok
    test bindings::test_binding::case_sensitive_mismatch ... ok
    test bindings::test_binding::does_not_match_with_wrong_kind ... ok
    test bindings::test_binding::equal ... ok
    test bindings::test_binding::does_not_match_with_wrong_text ... ok
    test bindings::test_binding::match_with_fixed_pattern ... ok
    test bindings::test_binding::not_equal ... ok
    test bindings::test_bindings::add_from_yaml_notices_multiple_keywords ... ok
    test bindings::test_bindings::adds_binding ... ok
    test bindings::test_binding::match_with_regex ... ok
    test bindings::test_bindings::does_not_find_match_for_unmatching_kind ... ok
    test bindings::test_bindings::does_not_find_match_for_unmatching_pattern ... ok
    test bindings::test_bindings::finds_match_for_fixed_string_pattern ... ok
    test bindings::test_bindings::adds_from_yaml ... ok
    test bindings::test_bindings::has_no_bindings_initially ... ok
    test bindings::test_bindings::finds_match_for_regexp_pattern ... ok
    test bindings::test_bindings::two_matching_bindings ... ok
    test bindings::test_bindings::typemap_must_match_pattern ... ok
    test bindings::test_regex_from_simple_pattern::returns_boring_pattern_as_is ... ok
    test bindings::test_regex_from_simple_pattern::kindless_simple_pattern ... ok
    test bindings::test_regex_from_simple_pattern::returns_empty_string_as_is ... ok
    test bindings::test_regex_from_simple_pattern::returns_error_for_stray_closing_brace ... ok
    test bindings::test_regex_from_simple_pattern::returns_error_for_stray_closing_brace_before_capture ... ok
    test bindings::test_regex_from_simple_pattern::returns_error_for_stray_opening_brace ... ok
    test bindings::test_regex_from_simple_pattern::returns_error_for_stray_opening_brace_before_capture ... ok
    test bindings::test_regex_from_simple_pattern::returns_pattern_with_regexp_chars_escaped ... ok
    test bindings::test_regex_from_simple_pattern::simple_int_pattern ... ok
    test bindings::test_regex_from_simple_pattern::simple_text_pattern ... ok
    test bindings::test_regex_from_simple_pattern::simple_number_pattern ... ok
    test bindings::test_regex_from_simple_pattern::simple_word_pattern ... ok
    test bindings::test_regex_from_simple_pattern::typemap_and_pattern_kind_must_match ... ok
    test bindings::test_regex_from_simple_pattern::typemap_checked_on_pattern_parse_and_default_agrees ... ok
    test bindings::test_regex_from_simple_pattern::typemap_updated_on_pattern_parse_default ... ok
    test bindings::test_regex_from_simple_pattern::typemap_updated_on_pattern_parse_explicit ... ok
    test bindings::test_regex_from_simple_pattern::typemap_used_when_kind_not_present ... ok
    test blockattr::test::empty_braces ... ok
    test blockattr::test::empty_string ... ok
    test blockattr::test::just_word ... ok
    test blockattr::test::open_brace_without_close ... ok
    test blockattr::test::parse_one_dotted_word ... ok
    test blockattr::test::parse_one_id ... ok
    test blockattr::test::parse_one_kv ... ok
    test blockattr::test::parse_one_kv_with_double_quotes ... ok
    test blockattr::test::parse_one_kv_with_single_quotes ... ok
    test blockattr::test::parse_one_word ... ok
    test blockattr::test::two_ids ... ok
    test blockattr::test::two_words ... ok
    test codegen::test::verify_commentsafe_filter ... ok
    test codegen::test::verify_name_slugification ... ok
    test html::test_tag::can_self_close ... ok
    test html::test_tag::cannot_self_close ... ok
    test matches::test::returns_text ... ok
    test matches::test::returns_uncaptured ... ok
    test matches::test_partial_steps::different_captured_texts_dont_match ... ok
    test matches::test_partial_steps::different_uncaptured_texts_dont_match ... ok
    test matches::test_partial_steps::differently_captured_texts_dont_match ... ok
    test matches::test_partial_steps::differently_named_captured_texts_dont_match ... ok
    test matches::test_partial_steps::identical_captured_texts_match ... ok
    test matches::test_partial_steps::identical_uncaptured_texts_match ... ok
    test md::test::finds_block_classes ... ok
    test md::test::finds_embedded_files ... ok
    test md::test::finds_images ... ok
    test md::test::finds_no_blocks_in_empty_doc ... ok
    test md::test::finds_no_classes_when_no_blocks_have_them ... ok
    test md::test::finds_no_embedded_files_in_empty_doc ... ok
    test md::test::finds_no_images_in_empty_doc ... ok
    test md::test::finds_no_scenarios_in_empty_doc ... ok
    test md::test::finds_scenarios ... ok
    test md::test::loads_empty_doc ... ok
    test md::test::parses_auto_as_auto ... ok
    test md::test::parses_empty_as_error ... ok
    test md::test::parses_garbage_as_error ... ok
    test md::test::parses_no_as_no ... ok
    test md::test::parses_no_auto_newline_as_auto ... ok
    test md::test::parses_yes_as_yes ... ok
    test md::test_extract::returns_error_if_scenario_has_no_title ... ok
    test md::test_extract::returns_nothing_if_there_is_no_scenario ... ok
    test md::test_extract::returns_parent_section_with_scenario_snippet ... ok
    test md::test_extract::returns_scenario_if_there_is_one ... ok
    test md::test_extract::skips_scenarioless_deeper_headings ... ok
    test md::test_extract::skips_scenarioless_parent_heading ... ok
    test md::test_extract::skips_scenarioless_section_in_favour_of_same_level ... ok
    test metadata::test::full_meta ... ok
    test scenarios::filtertest::exclude_slow ... ok
    test scenarios::filtertest::exclude_unimportant_slow ... ok
    test scenarios::filtertest::include_all ... ok
    test scenarios::filtertest::include_fast ... ok
    test scenarios::filtertest::include_none ... ok
    test scenarios::test::adds_step ... ok
    test scenarios::test::has_no_steps_initially ... ok
    test scenarios::test::has_title ... ok
    test steps::test::fails_to_parse_and ... ok
    test steps::test::parses_and ... ok
    test steps::test::parses_given ... ok
    test steps::test::parses_given_with_extra_spaces ... ok
    test steps::test::parses_then ... ok
    test steps::test::parses_when ... ok
    test steps::test_steps_parser::empty_string ... ok
    test steps::test_steps_parser::preserve_nonascii_whitespace ... ok
    test steps::test_steps_parser::simple ... ok
    test steps::test_steps_parser::two_simple ... ok
    test templatespec::test::new_from_yaml ... ok
    test toc::test_numberer::numbering ... ok
    test toc::test_slugs::short_and_simple ... ok
    test toc::test_slugs::unique_for_identical_simple_headings ... ok
    test toc::test_toc::iterate ... ok
    test toc::test_toc::uses_given_slug ... ok
    test bindings::test_regex_from_simple_pattern::simple_uint_pattern ... ok
    
    test result: ok. 108 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
    
         Running tests/bindings-ubm.rs (/workspace/cache/debug/deps/bindings_ubm-d0f6bc72cfbb7793)
    
    running 1 test
    test bindings_microbenchmark ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s
    
         Running unittests src/subplot.rs (/workspace/cache/debug/deps/subplot-5f1e2e98cf42a9e2)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running unittests src/lib.rs (/workspace/cache/debug/deps/subplot_build-6b2dd467b72efad4)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/seq.rs (/workspace/cache/debug/deps/seq-7ec92c4715a5f2cc)
    
    running 4 tests
    test more_than_one_number ... ok
    test no_arguments ... ok
    test not_a_number ... ok
    test one_number ... ok
    
    test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
    
         Running unittests src/lib.rs (/workspace/cache/debug/deps/subplotlib-e06c73a79c36ff5c)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/files.rs (/workspace/cache/debug/deps/files-4f8862c0f10e9faf)
    
    running 7 tests
    test create_on_disk_files_from_embedded_files ... ok
    test directories ... ok
    test file_and_directory_removal ... ok
    test file_equality ... ok
    test file_metadata ... ok
    test file_modification_time ... ok
    test file_contents ... ok
    
    test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/runcmd.rs (/workspace/cache/debug/deps/runcmd-2695413f9701aad6)
    
    running 21 tests
    test check_stderr_doesn_t_contain_sub_string ... ok
    test check_stderr_doesn_t_match_regular_expressions ... ok
    test check_stderr_is_exactly_as_wanted ... ok
    test check_stderr_is_not_exactly_something ... ok
    test check_stderr_using_regular_expressions ... ok
    test check_stderr_using_sub_string_search ... ok
    test check_stdout_doesn_t_contain_sub_string ... ok
    test check_stdout_doesn_t_match_regular_expression ... ok
    test check_stdout_is_exactly_as_wanted ... ok
    test check_stdout_is_not_exactly_something ... ok
    test check_stdout_using_regular_expressions ... ok
    test check_stdout_using_sub_string_search ... ok
    test check_we_can_prepend_to__path ... ok
    test execution_in_a_sub_directory_does_not_affect_home ... ok
    test failed_execution ... ok
    test failed_execution_in_a_sub_directory ... ok
    test stdin_comes_from_a_named_file ... ok
    test stdin_contains_exactly ... ok
    test setting_and_clearing_of_environment_variables ... ok
    test successful_execution_in_a_sub_directory ... ok
    test successful_execution ... ok
    
    test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
    
         Running tests/subplot-codegen.rs (/workspace/cache/debug/deps/subplot_codegen-decbcd508a05ce8d)
    
    running 29 tests
    test capture_using_regular_expressions ... ok
    test all_the_keywords ... ok
    test cleanup_functions_get_called_on_failure__python_ ... ok
    test capture_using_simple_patterns ... ok
    test code_generator_gives_an_error_if_input_document_lacks_title ... ok
    test embedded_file_name_didn_t_match ... ok
    test cleanup_functions_gets_called_on_success__python_ ... ok
    test examples_are_not_files ... ok
    test empty_lines_in_scenarios ... ok
    test files_not_in_current_working_directory ... ok
    test missing_functions_file ... ok
    test misuse_of_continuation_keywords ... ok
    test lowest_level_heading_is_name_of_scenario ... ok
    test next_heading_at_higher_level_starts_new_scenario ... ok
    test no_scenarios_means_codegen_fails ... ok
    test no_template_means_you_can_docgen_but_not_codegen ... ok
    test next_heading_at_same_level_starts_new_scenario ... ok
    test running_only_chosen_scenarios_with_python ... ok
    test recall_values_for_use_in_later_steps ... ok
    test simple_patterns_with_regex_metacharacters__allowed_case ... ok
    test simple_patterns_with_regex_metacharacters__forbidden_case ... ok
    test set_environment_variables_in_generated_test_programs ... ok
    test smoke_test ... ok
    test steps_which_do_not_case_sensitively_match_sensitive_bindings_do_not_work ... ok
    test steps_which_do_not_match_bindings_do_not_work ... ok
    test steps_which_match_more_than_one_binding_do_not_work ... ok
    test subplot_accepts_title_and_headings_with_inline_markup ... ok
    test subheadings_don_t_start_new_scenario ... ok
    test temporary_files_in_scenarios_in_python ... ok
    
    test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
    
         Running tests/subplot-diagrams.rs (/workspace/cache/debug/deps/subplot_diagrams-67310fca0207b7c1)
    
    running 4 tests
    test pikchr ... ok
    test dot ... ok
    test roadmap ... ok
    test plantuml ... ok
    
    test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s
    
         Running tests/subplot-docgen.rs (/workspace/cache/debug/deps/subplot_docgen-982ace7143619b16)
    
    running 30 tests
    test attempt_to_use_definition_list ... ok
    test bad__add_newline__value ... ok
    test bindings_file_strictness___given_when_then ... ok
    test bindings_file_strictness___unknown_field ... ok
    test class_name_validation ... ok
    test date_given_in_metadata ... ok
    test css_urls ... ok
    test date_given_on_command_line ... ok
    test document_generator_gives_an_error_if_input_document_lacks_title ... ok
    test embedded_css ... ok
    test dot ... ok
    test examples_may_be_unused ... ok
    test extract_embedded_file ... ok
    test fail_if_embedded_file_isn_t_used ... ok
    test fail_if_two_filenames_only_differ_in_case ... ok
    test files_not_in_current_working_directory ... ok
    test empty_lines_in_scenarios ... ok
    test indented_scenario_steps_are_not_allowed ... ok
    test missing_bindings_file ... ok
    test multiple_markdown_files ... ok
    test no_date_anywhere ... ok
    test named_code_blocks_must_have_an_appropriate_class ... ok
    test no_template_means_you_can_docgen_but_not_codegen ... ok
    test pikchr ... ok
    test roadmap ... ok
    test scenario_before_the_first_heading ... ok
    test smoke_test ... ok
    test subplot_accepts_title_and_headings_with_inline_markup ... ok
    test title_markup ... ok
    test plantuml ... ok
    
    test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.67s
    
         Running tests/subplot-extract.rs (/workspace/cache/debug/deps/subplot_extract-0a24e984e5369783)
    
    running 1 test
    test extract_embedded_files ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/subplot-metadata.rs (/workspace/cache/debug/deps/subplot_metadata-fc973d179d8fda50)
    
    running 5 tests
    test duplicate_scenario_titles ... ok
    test extracting_metadata_from_a_document ... ok
    test list_embedded_files ... ok
    test scenario_titles ... ok
    test files_not_in_current_working_directory ... ok
    
    test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
    
         Running tests/subplot-others.rs (/workspace/cache/debug/deps/subplot_others-6c333d2778882353)
    
    running 68 tests
    test attempt_to_use_definition_list ... ok
    test bad__add_newline__value ... ok
    test bindings_file_strictness___given_when_then ... ok
    test bindings_file_strictness___unknown_field ... ok
    test all_the_keywords ... ok
    test capture_using_regular_expressions ... ok
    test class_name_validation ... ok
    test capture_using_simple_patterns ... ok
    test cleanup_functions_get_called_on_failure__python_ ... ok
    test code_generator_gives_an_error_if_input_document_lacks_title ... ok
    test css_urls ... ok
    test date_given_in_metadata ... ok
    test date_given_on_command_line ... ok
    test document_generator_gives_an_error_if_input_document_lacks_title ... ok
    test cleanup_functions_gets_called_on_success__python_ ... ok
    test dot ... ok
    test duplicate_scenario_titles ... ok
    test embedded_file_name_didn_t_match ... ok
    test embedded_css ... ok
    test examples_are_not_files ... ok
    test examples_may_be_unused ... ok
    test extract_embedded_file ... ok
    test extract_embedded_file__automatically_add_missing_newline ... ok
    test extract_embedded_file__by_default_add_missing_newline ... ok
    test extract_embedded_file__by_default_do_not_add_a_second_newline ... ok
    test extract_embedded_file__do_not_add_missing_newline ... ok
    test extract_embedded_file__do_not_automatically_add_second_newline ... ok
    test extract_embedded_file__explicitly_add_missing_newline ... ok
    test extract_embedded_file__explicitly_add_second_newline ... ok
    test extract_embedded_files ... ok
    test extracting_metadata_from_a_document ... ok
    test fail_if_embedded_file_isn_t_used ... ok
    test fail_if_the_same_filename_is_used_twice ... ok
    test fail_if_two_filenames_only_differ_in_case ... ok
    test empty_lines_in_scenarios ... ok
    test indented_scenario_steps_are_not_allowed ... ok
    test list_embedded_files ... ok
    test files_not_in_current_working_directory ... ok
    test missing_bindings_file ... ok
    test missing_functions_file ... ok
    test misuse_of_continuation_keywords ... ok
    test lowest_level_heading_is_name_of_scenario ... ok
    test multiple_markdown_files ... ok
    test named_code_blocks_must_have_an_appropriate_class ... ok
    test next_heading_at_higher_level_starts_new_scenario ... ok
    test no_date_anywhere ... ok
    test no_scenarios_means_codegen_fails ... ok
    test next_heading_at_same_level_starts_new_scenario ... ok
    test pikchr ... ok
    test no_template_means_you_can_docgen_but_not_codegen ... ok
    test recall_values_for_use_in_later_steps ... ok
    test roadmap ... ok
    test running_only_chosen_scenarios_with_python ... ok
    test scenario_before_the_first_heading ... ok
    test scenario_titles ... ok
    test set_environment_variables_in_generated_test_programs ... ok
    test simple_patterns_with_regex_metacharacters__allowed_case ... ok
    test simple_patterns_with_regex_metacharacters__forbidden_case ... ok
    test smoke_test ... ok
    test steps_which_do_not_case_sensitively_match_sensitive_bindings_do_not_work ... ok
    test steps_which_do_not_match_bindings_do_not_work ... ok
    test steps_which_match_more_than_one_binding_do_not_work ... ok
    test subheadings_don_t_start_new_scenario ... ok
    test subplot_accepts_title_and_headings_with_inline_markup ... ok
    test temporary_files_in_scenarios_in_python ... ok
    test title_markup ... ok
    test use_embedded_file ... ok
    test plantuml ... ok
    
    test result: ok. 68 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s
    
         Running tests/subplotlib.rs (/workspace/cache/debug/deps/subplotlib-a59c162523207849)
    
    running 3 tests
    test embedded_files ... ok
    test data_directory ... ok
    test fundamentals ... ok
    
    test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running unittests src/lib.rs (/workspace/cache/debug/deps/subplotlib_derive-66a581f537cf88f5)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
       Doc-tests subplot
    
    running 6 tests
    test src/bindings.rs - bindings::BindingImpl::cleanup (line 163) ... ignored
    test src/bindings.rs - bindings::BindingImpl::function (line 151) ... ignored
    test src/bindings.rs - bindings::BindingImpl::new (line 137) ... ignored
    test src/diagrams.rs - diagrams::PikchrMarkup (line 116) ... ok
    test src/diagrams.rs - diagrams::DotMarkup (line 149) ... ok
    test src/diagrams.rs - diagrams::PlantumlMarkup (line 198) ... ok
    
    test result: ok. 3 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2.50s
    
       Doc-tests subplot_build
    
    running 1 test
    test subplot-build/src/lib.rs - codegen (line 27) ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.48s
    
       Doc-tests subplotlib
    
    running 70 tests
    test subplotlib/src/file.rs - file::SubplotDataFile (line 20) ... ok
    test subplotlib/src/file.rs - file::SubplotDataFile::data (line 120) ... ok
    test subplotlib/src/file.rs - file::SubplotDataFile::name (line 105) ... ok
    test subplotlib/src/prelude.rs - prelude (line 6) ... ok
    test subplotlib/src/prelude.rs - prelude::step (line 100) ... ok
    test subplotlib/src/file.rs - file::SubplotDataFile::new (line 76) ... ok
    test subplotlib/src/prelude.rs - prelude::step (line 73) ... ok
    test subplotlib/src/prelude.rs - prelude::throws (line 26) ... ok
    test subplotlib/src/prelude.rs - prelude::throws (line 39) ... ok
    test subplotlib/src/step.rs - step::ScenarioStep (line 24) ... ok
    test subplotlib/src/scenario.rs - scenario::Scenario (line 305) ... ok
    test subplotlib/src/steplibrary/datadir.rs - steplibrary::datadir::datadir_has_enough_space::call (line 160) ... ignored
    test subplotlib/src/steplibrary/datadir.rs - steplibrary::datadir::datadir_has_enough_space_megabytes::call (line 171) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_embedded::call (line 55) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_embedded_with_other_name::call (line 68) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::create_from_text::call (line 131) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_and_embedded_file_do_not_match::call (line 380) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_and_embedded_file_match::call (line 354) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_contains::call (line 252) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_do_not_match::call (line 328) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_does_not_exist::call (line 207) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_doesnt_contain::call (line 268) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_exists::call (line 187) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_match::call (line 301) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::file_matches_regex::call (line 285) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::has_different_metadata::call (line 455) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::has_remembered_metadata::call (line 416) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::make_directory::call (line 520) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::mtime_is_ancient::call (line 504) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::mtime_is_recent::call (line 488) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::only_these_exist::call (line 233) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_does_not_exist::call (line 570) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_exists::call (line 553) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_is_empty::call (line 589) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::path_is_not_empty::call (line 607) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::remember_metadata::call (line 142) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_directory::call (line 530) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_empty_directory::call (line 541) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::remove_file::call (line 92) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::touch::call (line 166) ... ignored
    test subplotlib/src/steplibrary/files.rs - steplibrary::files::touch_with_timestamp::call (line 104) ... ignored
    test subplotlib/src/steplibrary.rs - steplibrary (line 10) ... ok
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is::call (line 403) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_nonzero::call (line 442) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_not::call (line 419) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::exit_code_is_zero::call (line 431) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::helper_script::call (line 227) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::helper_srcdir_path::call (line 241) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::run::call (line 254) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::run_in::call (line 271) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::set_environment_variable::call (line 677) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_contains::call (line 594) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_doesnt_contain::call (line 607) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_doesnt_match_regex::call (line 663) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_is::call (line 542) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_isnt::call (line 555) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stderr_matches_regex::call (line 649) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdin_from_file::call (line 480) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdin_is::call (line 502) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_contains::call (line 568) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_doesnt_contain::call (line 581) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_doesnt_match_regex::call (line 635) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_is::call (line 516) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_isnt::call (line 529) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::stdout_matches_regex::call (line 621) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::try_to_run::call (line 285) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::try_to_run_in::call (line 298) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::unset_environment_variable::call (line 691) ... ignored
    test subplotlib/src/steplibrary/runcmd.rs - steplibrary::runcmd::Runcmd::join_paths (line 155) ... ok
    test subplotlib/src/utils.rs - utils::base64_decode (line 9) ... ok
    
    test result: ok. 14 passed; 0 failed; 56 ignored; 0 measured; 0 filtered out; finished in 2.34s
    
       Doc-tests subplotlib_derive
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    /workspace/src/inst/subplot --resources /workspace/src/share codegen subplot.subplot -o test.py --template python
     INFO Starting Subplot
     INFO Subplot finished successfully
    rm -f test.log
    python3 test.py --log test.log --env SUBPLOT_DIR=/workspace/src/inst
    srcdir /workspace/src
    datadir /tmp/tmpjxp4lji4
    scenario: Extract embedded file, automatically add missing newline
      step: given file auto-without-newline.txt
      step: then auto-without-newline.txt ends in one newline
    scenario: No date anywhere
      step: given file dateless.subplot
      step: given file dateless.md
      step: given file dateless.md has modification time 2020-02-26 07:53:17
      step: given an installed subplot
      step: when I run subplot docgen dateless.subplot -o mtime.html
      step: then file mtime.html exists
      step: then file mtime.html contains "<title>The Fabulous Title</title>"
      step: then file mtime.html contains "Alfred Pennyworth"
      step: then file mtime.html contains "Geoffrey Butler"
      step: then file mtime.html contains "2020-02-26 07:53"
      cleanup: given an installed subplot
    scenario: Smoke test
      step: given file simple.subplot
      step: given file simple.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot docgen simple.subplot -o simple.html
      step: then file simple.html exists
      step: when I run subplot codegen --run simple.subplot -o test.py
      step: then scenario "Simple" was run
      step: then step "given precondition foo" was run
      step: then step "when I do bar" was run
      step: then step "then bar was done" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Roadmap
      step: given file roadmap.subplot
      step: given file roadmap.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I run subplot docgen roadmap.subplot -o roadmap.html
      step: then file roadmap.html matches regex /src="data:image/svg\\+xml;base64,/
      cleanup: given an installed subplot
    scenario: Steps which match more than one binding do not work
      step: given file twobindings.subplot
      step: given file twobindings.md
      step: given file twobindings.yaml
      step: given file a_function.py
      step: given an installed subplot
      step: when I try to run subplot codegen --run twobindings.subplot -o test.py
      step: then command fails
      step: then stderr contains "xyzzy"
      step: then stderr contains "plugh"
      cleanup: given an installed subplot
    scenario: Temporary files in scenarios in Python
      step: given file tmpdir.subplot
      step: given file tmpdir.md
      step: given file tmpdir.yaml
      step: given file tmpdir.py
      step: given an installed subplot
      step: when I run subplot codegen --run tmpdir.subplot -o test.py
      step: then command is successful
      step: then scenario "TMPDIR" was run
      step: then step "then TMPDIR is set" was run
      cleanup: given an installed subplot
    scenario: All the keywords
      step: given file allkeywords.subplot
      step: given file allkeywords.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen --run allkeywords.subplot -o test.py
      step: then scenario "All keywords" was run
      step: then step "given precondition foo" was run
      step: then step "when I do bar" was run
      step: then step "then bar was done" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: No scenarios means codegen fails
      step: given file noscenarios.subplot
      step: given file noscenarios.md
      step: given an installed subplot
      step: when I try to run subplot codegen noscenarios.subplot -o test.py
      step: then command fails
      step: then stderr contains "no scenarios were found"
      cleanup: given an installed subplot
    scenario: Subplot accepts title and headings with inline markup
      step: given file fancytitle.subplot
      step: given file fancytitle.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I try to run subplot docgen fancytitle.subplot -o foo.md
      step: then command is successful
      step: when I try to run subplot codegen fancytitle.subplot -o foo.md
      step: then command is successful
      cleanup: given an installed subplot
    scenario: CSS URLs
      step: given file css-urls.subplot
      step: given file css-urls.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I run subplot docgen css-urls.subplot -o foo.html
      step: then file foo.html contains "https://example.com/flushing.css"
      cleanup: given an installed subplot
    scenario: Embedded file name didn't match
      step: given file badfilename.subplot
      step: given file badfilename.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I try to run subplot codegen --run badfilename.md -o test.py
      step: then command fails
      cleanup: given an installed subplot
    scenario: PlantUML
      step: given file plantuml.subplot
      step: given file plantuml.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I run subplot docgen plantuml.subplot -o plantuml.html
      step: then file plantuml.html matches regex /src="data:image/svg\\+xml;base64,/
      cleanup: given an installed subplot
    scenario: Extract embedded file
      step: given file embedded.subplot
      step: given file embedded.md
      step: given an installed subplot
      step: when I run subplot docgen --merciful embedded.subplot -o foo.html
      step: then file foo.html exists
      step: then file foo.html matches regex /embedded\\.txt/
      cleanup: given an installed subplot
    scenario: Simple patterns with regex metacharacters: forbidden case
      step: given file confusedpattern.subplot
      step: given file confusedpattern.md
      step: given file confusedpattern.yaml
      step: given file capture.py
      step: given an installed subplot
      step: when I try to run subplot codegen --run confusedpattern.subplot -o test.py
      step: then command fails
      step: then stderr contains "simple pattern contains regex"
      cleanup: given an installed subplot
    scenario: Attempt to use definition list
      step: given an installed subplot
      step: given file dl.subplot
      step: given file dl.md
      step: when I try to run subplot docgen dl.subplot -o /dev/null
      step: then command fails
      step: then stderr contains "ERROR dl.md:3:1: attempt to use definition lists in Markdown"
      cleanup: given an installed subplot
    scenario: Empty lines in scenarios
      step: given file emptylines.subplot
      step: given file emptylines.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot docgen emptylines.subplot -o emptylines.html
      step: then file emptylines.html exists
      step: when I run subplot codegen --run emptylines.subplot -o test.py
      step: then scenario "Simple" was run
      step: then step "given precondition foo" was run
      step: then step "when I do bar" was run
      step: then step "then bar was done" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Fail if the same filename is used twice
      step: given file onefiletwice.md
      step: given an installed subplot
      step: when I try to run subplot docgen onefiletwice.md -o onefiletwice.html
      step: then command fails
      step: then file onefiletwice.html does not exist
      cleanup: given an installed subplot
    scenario: Bad "add-newline" value
      step: given an installed subplot
      step: given file add-newline.subplot
      step: given file add-newline.md
      step: when I try to run subplot docgen add-newline.subplot -o /dev/null
      step: then command fails
      step: then stderr contains "ERROR add-newline.md:1:1: value of add-newline attribute is not understood: xyzzy"
      cleanup: given an installed subplot
    scenario: Capture using regular expressions
      step: given file regex.subplot
      step: given file regex.md
      step: given file regex.yaml
      step: given file capture.py
      step: given an installed subplot
      step: when I run subplot codegen --run regex.subplot -o test.py
      step: then scenario "Regex" was run
      step: then step "given I am Tomjon" was run
      step: then stdout contains "function got argument name as Tomjon"
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Date given on command line
      step: given file dateless.subplot
      step: given file dateless.md
      step: given an installed subplot
      step: when I run subplot docgen dateless.subplot -o dateoption.html --date=FANCYDATE
      step: then file dateoption.html exists
      step: then file dateoption.html contains "<title>The Fabulous Title</title>"
      step: then file dateoption.html contains "Alfred Pennyworth"
      step: then file dateoption.html contains "Geoffrey Butler"
      step: then file dateoption.html contains "FANCYDATE"
      cleanup: given an installed subplot
    scenario: Running only chosen scenarios with Python
      step: given file twoscenarios-python.subplot
      step: given file twoscenarios-python.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen twoscenarios-python.subplot -o test.py
      step: when I run python3 test.py on
      step: then scenario "One" was run
      step: then scenario "Two" was not run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Scenario before the first heading
      step: given an installed subplot
      step: given file scenario-before-heading.subplot
      step: given file scenario-before-heading.md
      step: when I try to run subplot docgen scenario-before-heading.subplot -o /dev/null
      step: then command fails
      step: then stderr contains "ERROR scenario-before-heading.md:1:1: first scenario is before first heading"
      cleanup: given an installed subplot
    scenario: Extracting metadata from a document
      step: given file images.subplot
      step: given file images.md
      step: given file b.yaml
      step: given file other.yaml
      step: given file f.py
      step: given file other.py
      step: given file expected.json
      step: given an installed subplot
      step: when I run subplot metadata images.subplot
      step: then stdout contains "source: images.md"
      step: then stdout contains "source: b.yaml"
      step: then stdout contains "source: other.yaml"
      step: then stdout contains "source: f.py"
      step: then stdout contains "source: other.py"
      step: then stdout contains "source: image.gif"
      step: then stdout contains "bindings: b.yaml"
      step: then stdout contains "bindings: other.yaml"
      step: then stdout contains "functions[python]: f.py"
      step: when I run subplot metadata images.subplot -o json
      step: then JSON output matches expected.json
      cleanup: given an installed subplot
    scenario: Extract embedded file, do not automatically add second newline
      step: given file auto-has-newline.txt
      step: then auto-has-newline.txt ends in one newline
    scenario: Embedded CSS
      step: given file embedded-css.subplot
      step: given file embedded-css.md
      step: given file embedded-css.css
      step: given file b.yaml
      step: given an installed subplot
      step: when I run subplot docgen embedded-css.subplot -o foo.html
      step: then file foo.html contains "silly: property;"
      cleanup: given an installed subplot
    scenario: Steps which do not case-sensitively match sensitive bindings do not work
      step: given file casemismatch.subplot
      step: given file casemismatch.md
      step: given file badbindings.yaml
      step: given an installed subplot
      step: when I try to run subplot codegen --run casemismatch.subplot -o test.py
      step: then command fails
      cleanup: given an installed subplot
    scenario: Fail if two filenames only differ in case
      step: given file casediff.md
      step: given an installed subplot
      step: when I try to run subplot docgen casediff.md -o casediff.html
      step: then command fails
      step: then file casediff.html does not exist
      cleanup: given an installed subplot
    scenario: Use embedded file
      step: given file numbered-lines.txt
      step: given file not-numbered-lines.txt
    scenario: Next heading at higher level starts new scenario
      step: given file higherisnewscenario.subplot
      step: given file higherisnewscenario.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen --run higherisnewscenario.subplot -o test.py
      step: then scenario "heading 1.1.1" was run
      step: then scenario "heading 1.2" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Subheadings don't start new scenario
      step: given file subisnotnewscenario.subplot
      step: given file subisnotnewscenario.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen --run subisnotnewscenario.subplot -o test.py
      step: then scenario "heading 1.1a" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Files not in current working directory
      step: given file x/simple.subplot from simple.subplot
      step: given file x/simple.md from simple.md
      step: given file x/b.yaml from b.yaml
      step: given file x/f.py from f.py
      step: given an installed subplot
      step: when I run subplot metadata x/simple.subplot
      step: then command is successful
      step: when I run subplot codegen x/simple.subplot -o test.py
      step: then file test.py exists
      step: when I run subplot docgen x/simple.subplot -o simple.html
      step: then file simple.html exists
      cleanup: given an installed subplot
    scenario: Misuse of continuation keywords
      step: given file continuationmisuse.subplot
      step: given file continuationmisuse.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I try to run subplot codegen --run continuationmisuse.subplot -o test.py
      step: then command fails
      cleanup: given an installed subplot
    scenario: Simple patterns with regex metacharacters: allowed case
      step: given file confusedbutok.subplot
      step: given file confusedbutok.md
      step: given file confusedbutok.yaml
      step: given file capture.py
      step: given an installed subplot
      step: when I run subplot codegen --run confusedbutok.subplot -o test.py
      step: then command is successful
      cleanup: given an installed subplot
    scenario: List embedded files
      step: given file two-embedded.subplot
      step: given file two-embedded.md
      step: given an installed subplot
      step: when I run subplot metadata --merciful two-embedded.subplot
      step: then stdout contains "foo.txt"
      step: then stdout contains "bar.yaml"
      cleanup: given an installed subplot
    scenario: Pikchr
      step: given file pikchr.subplot
      step: given file pikchr.md
      step: given an installed subplot
      step: when I run subplot docgen pikchr.subplot -o pikchr.html
      step: then file pikchr.html matches regex /src="data:image/svg\\+xml;base64,/
      cleanup: given an installed subplot
    scenario: Fail if embedded file isn't used
      step: given file unusedfile.subplot
      step: given file unusedfile.md
      step: given an installed subplot
      step: when I try to run subplot docgen --merciful unusedfile.subplot -o unusedfile.html
      step: then command is successful
      step: then file unusedfile.html exists
      step: then stderr contains "thisisnotused.txt"
      cleanup: given an installed subplot
    scenario: Class name validation
      step: given file unknown-class-name.subplot
      step: given file unknown-class-name.md
      step: given file known-class-name.subplot
      step: given file known-class-name.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I try to run subplot docgen unknown-class-name.subplot -o unknown-class-name.html
      step: then command fails
      step: then file unknown-class-name.html does not exist
      step: then stderr contains "Unknown classes found in the document: foobar"
      step: when I run subplot docgen known-class-name.subplot -o known-class-name.html
      step: then file known-class-name.html exists
      cleanup: given an installed subplot
    scenario: Missing bindings file
      step: given file missing-binding.subplot
      step: given file missing-binding.md
      step: given an installed subplot
      step: when I try to run subplot docgen missing-binding.subplot -o foo.html
      step: then command fails
      step: then stderr contains "could not be found"
      step: then stderr contains "missing-binding.yaml"
      cleanup: given an installed subplot
    scenario: Next heading at same level starts new scenario
      step: given file samelevelisnewscenario.subplot
      step: given file samelevelisnewscenario.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen --run samelevelisnewscenario.subplot -o test.py
      step: then scenario "heading 1.1.1" was run
      step: then scenario "heading 1.1.2" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Missing functions file
      step: given file missing-functions.subplot
      step: given file missing-functions.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I try to run subplot codegen --run missing-functions.subplot -o foo.py
      step: then command fails
      step: then stderr contains "could not be found"
      step: then stderr contains "missing-functions.py"
      cleanup: given an installed subplot
    scenario: Code generator gives an error if input document lacks title
      step: given file notitle.subplot
      step: given file notitle.md
      step: given an installed subplot
      step: when I try to run subplot codegen --run notitle.subplot -o test.py
      step: then command fails
      cleanup: given an installed subplot
    scenario: Extract embedded file, explicitly add second newline
      step: given file add-has-newline.txt
      step: then add-has-newline.txt ends in two newlines
    scenario: Multiple markdown files
      step: given file multimd.subplot
      step: given file md1.md
      step: given file md2.md
      step: given an installed subplot
      step: when I run subplot docgen multimd.subplot -o multimd.html
      step: when I run cat multimd.html
      step: then file multimd.html exists
      step: then file multimd.html contains "<title>The Fabulous Title</title>"
      step: then file multimd.html contains "First markdown file."
      step: then file multimd.html contains "Second markdown file."
      cleanup: given an installed subplot
    scenario: Steps which do not match bindings do not work
      step: given file nobinding.subplot
      step: given file nobinding.md
      step: given file badbindings.yaml
      step: given an installed subplot
      step: when I try to run subplot codegen --run nobinding.subplot -o test.py
      step: then command fails
      cleanup: given an installed subplot
    scenario: Document generator gives an error if input document lacks title
      step: given file notitle.subplot
      step: given file notitle.md
      step: given an installed subplot
      step: when I try to run subplot docgen notitle.subplot -o foo.md
      step: then command fails
      cleanup: given an installed subplot
    scenario: Duplicate scenario titles
      step: given file duplicate-scenario-titles.subplot
      step: given file duplicate-scenario-titles.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I try to run subplot metadata duplicate-scenario-titles.subplot
      step: then command fails
      step: then stderr contains "duplicate"
      cleanup: given an installed subplot
    scenario: Title markup
      step: given file title-markup.subplot
      step: given file title-markup.md
      step: given an installed subplot
      step: when I run subplot docgen title-markup.subplot -o foo.html
      step: then file foo.html exists
      cleanup: given an installed subplot
    scenario: Lowest level heading is name of scenario
      step: given file scenarioislowest.subplot
      step: given file scenarioislowest.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot codegen --run scenarioislowest.subplot -o test.py
      step: then scenario "heading 1.1.1" was run
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Extract embedded files
      step: given file embedded-file.subplot
      step: given file embedded-file.md
      step: given file expected.txt
      step: given an installed subplot
      step: when I run subplot extract --merciful embedded-file.subplot foo.txt -d .
      step: then files foo.txt and expected.txt match
      cleanup: given an installed subplot
    scenario: Named code blocks must have an appropriate class
      step: given file named-code-blocks-appropriate.subplot
      step: given file named-code-blocks-appropriate.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I try to run subplot docgen named-code-blocks-appropriate.subplot -o foo.html
      step: then command fails
      step: then stderr contains "#example-1 at named-code-blocks-appropriate.md:7:1"
      step: then stderr doesn't contain "example-2"
      step: then stderr doesn't contain "example-3"
      cleanup: given an installed subplot
    scenario: Extract embedded file, by default do not add a second newline
      step: given file default-has-newline.txt
      step: then default-has-newline.txt ends in one newline
    scenario: Scenario titles
      step: given file scenario-titles.subplot
      step: given file scenario-titles.md
      step: given file b.yaml
      step: given file f.py
      step: given an installed subplot
      step: when I run subplot metadata scenario-titles.subplot
      step: then stdout contains "My fun scenario title"
      cleanup: given an installed subplot
    scenario: Extract embedded file, explicitly add missing newline
      step: given file add-without-newline.txt
      step: then add-without-newline.txt ends in one newline
    scenario: Recall values for use in later steps
      step: given file values.subplot
      step: given file values.md
      step: given file values.yaml
      step: given file values.py
      step: given an installed subplot
      step: when I run subplot codegen values.subplot -o test.py
      step: when I run python3 test.py
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Extract embedded file, by default add missing newline
      step: given file default-without-newline.txt
      step: then default-without-newline.txt ends in one newline
    scenario: Date given in metadata
      step: given file metadate.subplot
      step: given file metadate.md
      step: given an installed subplot
      step: when I run subplot docgen metadate.subplot -o metadate.html
      step: when I run cat metadate.html
      step: then file metadate.html exists
      step: then file metadate.html contains "<title>The Fabulous Title</title>"
      step: then file metadate.html contains "Alfred Pennyworth"
      step: then file metadate.html contains "Geoffrey Butler"
      step: then file metadate.html contains "WIP"
      cleanup: given an installed subplot
    scenario: Examples are not files
      step: given file examplesnotfiles.subplot
      step: given file examplesnotfiles.md
      step: given an installed subplot
      step: when I try to run subplot codegen examplesnotfiles.subplot -t python -o examplesnotfiles.html
      step: then command fails
      step: then file examplesnotfiles.html does not exist
      step: then stderr contains "thisisanexample.txt"
      cleanup: given an installed subplot
    scenario: Bindings file strictness - unknown field
      step: given file badbindingsuf.subplot
      step: given file badbindingsuf.md
      step: given file badbindingsuf.yaml
      step: given an installed subplot
      step: when I try to run subplot docgen --output ignored.html badbindingsuf.subplot
      step: then command fails
      step: then stderr contains "Unknown field `function`"
      cleanup: given an installed subplot
    scenario: Capture using simple patterns
      step: given file simplepattern.subplot
      step: given file simplepattern.md
      step: given file simplepattern.yaml
      step: given file capture.py
      step: given an installed subplot
      step: when I run subplot codegen --run simplepattern.subplot -o test.py
      step: then scenario "Simple pattern" was run
      step: then step "given I am Tomjon" was run
      step: then stdout contains "function got argument name as Tomjon"
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Bindings file strictness - given when then
      step: given file badbindingsgwt.subplot
      step: given file badbindingsgwt.md
      step: given file badbindingsgwt.yaml
      step: given an installed subplot
      step: when I try to run subplot docgen --output ignored.html badbindingsgwt.subplot
      step: then command fails
      step: then stderr contains "binding has more than one keyword"
      cleanup: given an installed subplot
    scenario: No template means you can docgen but not codegen
      step: given file notemplate.subplot
      step: given file notemplate.md
      step: given an installed subplot
      step: when I run subplot docgen notemplate.subplot -o notemplate.html
      step: then file notemplate.html exists
      step: when I try to run subplot codegen notemplate.subplot -o test.py
      step: then command fails
      step: then stderr contains "document has no template"
      cleanup: given an installed subplot
    scenario: Set environment variables in generated test programs
      step: given file env.subplot
      step: given file env.md
      step: given file env.yaml
      step: given file env.py
      step: given an installed subplot
      step: when I run subplot codegen env.subplot -o test.py
      step: when I try to run python3 test.py
      step: then command fails
      step: when I try to run python3 test.py --env FOO=foo
      step: then command fails
      step: when I try to run python3 test.py --env FOO=bar
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Examples may be unused
      step: given file unusedexample.subplot
      step: given file unusedexample.md
      step: given an installed subplot
      step: when I try to run subplot docgen --merciful unusedexample.subplot -o unusedexample.html
      step: then command is successful
      step: then file unusedexample.html exists
      step: then stderr doesn't contain "thisisnotused.txt"
      cleanup: given an installed subplot
    scenario: Dot
      step: given file dot.subplot
      step: given file dot.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I run subplot docgen dot.subplot -o dot.html
      step: then file dot.html matches regex /src="data:image/svg\\+xml;base64,/
      cleanup: given an installed subplot
    scenario: Extract embedded file, do not add missing newline
      step: given file no-adding-without-newline.txt
      step: then no-adding-without-newline.txt does not end in a newline
    scenario: Cleanup functions gets called on success (Python)
      step: given file cleanup-success-python.subplot
      step: given file cleanup-success-python.md
      step: given file cleanup.yaml
      step: given file cleanup.py
      step: given an installed subplot
      step: when I run subplot codegen --run cleanup-success-python.subplot -o test.py
      step: then scenario "Cleanup" was run
      step: then step "given foo" was run, and then step "given bar"
      step: then cleanup for "given bar" was run, and then for "given foo"
      step: then command is successful
      cleanup: given an installed subplot
    scenario: Cleanup functions get called on failure (Python)
      step: given file cleanup-fail-python.subplot
      step: given file cleanup-fail-python.md
      step: given file cleanup.yaml
      step: given file cleanup.py
      step: given an installed subplot
      step: when I try to run subplot codegen --run cleanup-fail-python.subplot -o test.py
      step: then scenario "Cleanup" was run
      step: then step "given foo" was run, and then step "given bar"
      step: then cleanup for "given bar" was run, and then for "given foo"
      step: then cleanup for "given failure" was not run
      step: then command fails
      cleanup: given an installed subplot
    scenario: Indented scenario steps are not allowed
      step: given file indented-step.subplot
      step: given file indented-step.md
      step: given file b.yaml
      step: given an installed subplot
      step: when I try to run subplot docgen indented-step.subplot -o foo.html
      step: then command fails
      step: then stderr contains "indented"
      cleanup: given an installed subplot
    OK, all scenarios finished successfully
    cd examples/muck && /workspace/src/inst/subplot --resources /workspace/src/share codegen muck.subplot --run --output test.py
     INFO Starting Subplot
    srcdir /workspace/src/examples/muck
    datadir /tmp/tmpspm7fxqx
    scenario: Updating someone else's data
      step: given a fresh Muck server
      step: given I am Tomjon
      step: when I do POST /res with {"foo": "bar"}
      step: then header Muck-Id is ID
      step: then header Muck-Revision is REV1
      step: given I am Verence
      step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
      step: then response code is 404
    scenario: Accessing someone else's data
      step: given a fresh Muck server
      step: given I am Tomjon
      step: when I do POST /res with {"foo": "bar"}
      step: then header Muck-Id is ID
      step: then header Muck-Revision is REV1
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 200
      step: then header Muck-Revision matches {REV1}
      step: then body matches {"foo": "bar"}
      step: given I am Verence
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 404
    scenario: Deleting someone else's data
      step: given a fresh Muck server
      step: given I am Tomjon
      step: when I do POST /res with {"foo": "bar"}
      step: then header Muck-Id is ID
      step: then header Muck-Revision is REV1
      step: given I am Verence
      step: when I do DELETE /res with Muck-Id: {ID}
      step: then response code is 404
    scenario: Restarting Muck
      step: given a fresh Muck server
      step: given I am Tomjon, with super capability
      step: when I do POST /res with {"foo": "bar"}
      step: then header Muck-Id is ID
      step: then header Muck-Revision is REV1
      step: when I restart Muck
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 200
      step: then header Muck-Revision matches {REV1}
      step: then body matches {"foo": "bar"}
    scenario: Basic object handling
      step: given a fresh Muck server
      step: given I am Tomjon
      step: when I do POST /res with {"foo": "bar"}
      step: then response code is 201
      step: then header Muck-Id is ID
      step: then header Muck-Revision is REV1
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 200
      step: then header Muck-Revision matches {REV1}
      step: then body matches {"foo": "bar"}
      step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
      step: then response code is 200
      step: then header Muck-Revision is {REV2}
      step: then revisions {REV1} and {REV2} are different
      step: when I do PUT /res with Muck-Id: {ID}, Muck-Revision: {REV1}, and body {"foo":"yo"}
      step: then response code is 409
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 200
      step: then header Muck-Revision matches {REV2}
      step: then body matches {"foo": "yo"}
      step: when I do DELETE /res with Muck-Id: {ID}
      step: then response code is 200
      step: when I do GET /res with Muck-Id: {ID}
      step: then response code is 404
    OK, all scenarios finished successfully
     INFO Subplot finished successfully
    if [ "--offline" = "" ] ; then cd examples/website && /workspace/src/inst/subplot --resources /workspace/src/share codegen website.subplot --run --output test.py; fi
    cd examples/seq && cargo test
       Compiling thiserror v2.0.9
       Compiling serde v1.0.216
       Compiling ahash v0.8.11
       Compiling regex-automata v0.4.9
       Compiling pest v2.7.15
       Compiling anyhow v1.0.95
       Compiling hashbrown v0.14.5
       Compiling getrandom v0.2.15
       Compiling libm v0.2.11
       Compiling globset v0.4.15
       Compiling rand_core v0.6.4
       Compiling pest_meta v2.7.15
       Compiling hashlink v0.9.1
       Compiling encoding_rs v0.8.35
       Compiling serde_json v1.0.134
       Compiling rand_chacha v0.3.1
       Compiling yaml-rust2 v0.9.0
       Compiling ignore v0.4.23
       Compiling pest_generator v2.7.15
       Compiling serde_path_to_error v0.1.16
       Compiling humansize v2.1.3
       Compiling pulldown-cmark v0.12.2
       Compiling marked-yaml v0.7.2
       Compiling pikchr v0.1.3
       Compiling pest_derive v2.7.15
       Compiling globwalk v0.9.1
       Compiling rand v0.8.5
       Compiling tempfile v3.14.0
       Compiling subplot v0.12.0 (/workspace/src)
       Compiling regex v1.11.1
       Compiling memchr v2.7.4
       Compiling tera v1.20.0
       Compiling aho-corasick v1.1.3
       Compiling roadmap v0.7.0
       Compiling time-macros v0.2.19
       Compiling once_cell v1.20.2
       Compiling subplotlib-derive v0.12.0 (/workspace/src/subplotlib-derive)
       Compiling time v0.3.37
       Compiling subplotlib v0.12.0 (/workspace/src/subplotlib)
       Compiling subplot-seq-example v0.1.0 (/workspace/src/examples/seq)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 16.22s
         Running tests/seq.rs (/workspace/cache/debug/deps/seq-47f93f949e8064e0)
    
    running 4 tests
    test no_arguments ... ok
    test more_than_one_number ... ok
    test not_a_number ... ok
    test one_number ... ok
    
    test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    /workspace/src/inst/subplot --resources /workspace/src/share docgen subplot.subplot -o subplot.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    /workspace/src/inst/subplot --resources /workspace/src/share docgen tests/subplots/common/files.subplot -o tests/subplots/common/files.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    /workspace/src/inst/subplot --resources /workspace/src/share docgen tests/subplots/common/runcmd.subplot -o tests/subplots/common/runcmd.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    cd examples/muck && /workspace/src/inst/subplot --resources /workspace/src/share/subplot docgen muck.subplot -o muck.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    cd examples/website && /workspace/src/inst/subplot --resources /workspace/src/share docgen website.subplot -o website.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    cd examples/seq && /workspace/src/inst/subplot --resources /workspace/src/share docgen seq.subplot -o seq.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    /workspace/src/inst/subplot --resources /workspace/src/share libdocgen lib/runcmd.yaml --output share/common/lib/runcmd.md
     INFO Starting Subplot
     INFO Subplot finished successfully
    if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/runcmd"  --output share/common/lib/runcmd.html share/common/lib/runcmd.md; fi
    /workspace/src/inst/subplot --resources /workspace/src/share libdocgen lib/files.yaml --output share/common/lib/files.md
     INFO Starting Subplot
     INFO Subplot finished successfully
    if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/files"  --output share/common/lib/files.html share/common/lib/files.md; fi
    /workspace/src/inst/subplot --resources /workspace/src/share libdocgen python/lib/daemon.yaml --output share/python/lib/daemon.md
     INFO Starting Subplot
     INFO Subplot finished successfully
    if which pandoc>/dev/null; then pandoc --toc --standalone --self-contained --metadata "title=lib/daemon"  --output share/python/lib/daemon.html share/python/lib/daemon.md; fi
    /workspace/src/inst/subplot --resources /workspace/src/share docgen book/user-guide.subplot --output book/user-guide.html
     INFO Starting Subplot
     INFO Subplot finished successfully
    mkdir -p doc/libdocs
    for x in subplot.html tests/subplots/common/*.html examples/*/*.html book/*.html; do if [ -e "$x" ]; then mv "$x" doc; fi; done
    for x in share/common/lib/*.html share/python/lib/*.html; do if [ -e "$x" ]; then mv "$x" doc; fi; done
    + git reset --hard
    HEAD is now at 9c2306d fix: drop check that shellcheck is installed
    + git clean -fdx
    Removing doc/
    Removing examples/muck/test.py
    Removing inst/
    Removing share/common/lib/files.md
    Removing share/common/lib/runcmd.md
    Removing share/python/lib/daemon.md
    Removing share/python/template/__pycache__/
    Removing test.log
    Removing test.py
    + git status --ignored
    HEAD detached at 9c2306d
    nothing to commit, working tree clean
    ++ dpkg-parsechangelog -SVersion
    ++ sed 's/-[^-]*$//'
    + V=0.12.0
    ++ date -u +%Y%m%dT%H%M%S
    + T=20250911T131814
    + version=0.12.0.ci20250911T131814-1
    + dch -v 0.12.0.ci20250911T131814-1 'CI build under Ambient.'
    dch warning: Previous package version was Debian native whilst new version is not
    + dch -r ''
    RUN: Action finished OK
    RUN: Action Deb
    [2025-09-11T13:18:14Z DEBUG ambient_ci::action] Plan::execute: Deb
    SPAWN: argv=["/bin/bash", "-c", "#!/bin/bash\nset -xeuo pipefail\n\necho \"PATH at start: $PATH\"\nexport PATH=\"/root/.cargo/bin:$PATH\"\nexport CARGO_HOME=/workspace/deps\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\n/bin/env\n\ncommand -v cargo\ncommand -v rustc\n\ncargo --version\nrustc --version\n\n# Get name and version of source package.\nname=\"$(dpkg-parsechangelog -SSource)\"\nversion=\"$(dpkg-parsechangelog -SVersion)\"\n\n# Get upstream version: everything before the last dash.\nuv=\"$(echo \"$version\" | sed 's/-[^-]*$//')\"\n\n# Files that will be created.\narch=\"$(dpkg --print-architecture)\"\norig=\"../${name}_${uv}.orig.tar.xz\"\ndeb=\"../${name}_${version}_${arch}.deb\"\nchanges=\"../${name}_${version}_${arch}.changes\"\n\n# Create \"upstream tarball\".\ngit archive HEAD | xz >\"$orig\"\n\n# Build package.\ndpkg-buildpackage -us -uc\n\n# Dump some information to make it easier to visually verify\n# everything looks OK. Also, test the package with the lintian tool.\n\nls -l ..\nfor x in ../*.deb; do dpkg -c \"$x\"; done\n# FIXME: disabled while this prevents radicle-native-ci deb from being built.\n# lintian -i --allow-root --fail-on warning ../*.changes\n\n# Move files to artifacts directory.\nmv ../*_* /workspace/artifacts\n        "]
           cwd=/workspace/src (exists? true)
           extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
    + echo 'PATH at start: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
    PATH at start: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + export PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + export CARGO_HOME=/workspace/deps
    + CARGO_HOME=/workspace/deps
    + export DEBEMAIL=liw@liw.fi
    + DEBEMAIL=liw@liw.fi
    + export 'DEBFULLNAME=Lars Wirzenius'
    + DEBFULLNAME='Lars Wirzenius'
    + /bin/env
    DEBFULLNAME=Lars Wirzenius
    CARGO_TARGET_DIR=/workspace/cache
    PWD=/workspace/src
    SYSTEMD_EXEC_PID=276
    LANG=C.UTF-8
    CARGO_HOME=/workspace/deps
    DEBEMAIL=liw@liw.fi
    INVOCATION_ID=65fa2dfaba9f4ef5904e7801a16f0ee3
    SHLVL=2
    JOURNAL_STREAM=8:13165
    PATH=/root/.cargo/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    OLDPWD=/
    _=/bin/env
    + command -v cargo
    /root/.cargo/bin/cargo
    + command -v rustc
    /root/.cargo/bin/rustc
    + cargo --version
    cargo 1.88.0 (873a06493 2025-05-10)
    + rustc --version
    rustc 1.88.0 (6b00bc388 2025-06-23)
    ++ dpkg-parsechangelog -SSource
    + name=subplot
    ++ dpkg-parsechangelog -SVersion
    + version=0.12.0.ci20250911T131814-1
    ++ echo 0.12.0.ci20250911T131814-1
    ++ sed 's/-[^-]*$//'
    + uv=0.12.0.ci20250911T131814
    ++ dpkg --print-architecture
    + arch=amd64
    + orig=../subplot_0.12.0.ci20250911T131814.orig.tar.xz
    + deb=../subplot_0.12.0.ci20250911T131814-1_amd64.deb
    + changes=../subplot_0.12.0.ci20250911T131814-1_amd64.changes
    + git archive HEAD
    + xz
    + dpkg-buildpackage -us -uc
    dpkg-buildpackage: info: source package subplot
    dpkg-buildpackage: info: source version 0.12.0.ci20250911T131814-1
    dpkg-buildpackage: info: source distribution unstable
    dpkg-buildpackage: info: source changed by Lars Wirzenius <liw@liw.fi>
    dpkg-buildpackage: info: host architecture amd64
     dpkg-source --before-build .
     debian/rules clean
    dh clean
       dh_auto_clean
       dh_clean
     dpkg-source -b .
    dpkg-source: info: using source format '3.0 (quilt)'
    dpkg-source: info: building subplot using existing ./subplot_0.12.0.ci20250911T131814.orig.tar.xz
    dpkg-source: info: building subplot in subplot_0.12.0.ci20250911T131814-1.debian.tar.xz
    dpkg-source: info: building subplot in subplot_0.12.0.ci20250911T131814-1.dsc
     debian/rules build
    dh build
       dh_update_autotools_config
       dh_autoreconf
       dh_auto_configure
       debian/rules override_dh_auto_build
    make[1]: Entering directory '/workspace/src'
    true
    make[1]: Leaving directory '/workspace/src'
       debian/rules override_dh_auto_test
    make[1]: Entering directory '/workspace/src'
    echo disabled
    disabled
    make[1]: Leaving directory '/workspace/src'
       create-stamp debian/debhelper-build-stamp
     debian/rules binary
    dh binary
       dh_testroot
       dh_prep
       debian/rules override_dh_auto_install
    make[1]: Entering directory '/workspace/src'
    cargo install --path=bin --root=debian/subplot --offline --locked
      Installing subplot-bin v0.12.0 (/workspace/src/bin)
       Compiling proc-macro2 v1.0.92
       Compiling unicode-ident v1.0.14
       Compiling cfg-if v1.0.0
       Compiling memchr v2.7.4
       Compiling quote v1.0.37
       Compiling syn v2.0.91
       Compiling once_cell v1.20.2
       Compiling thiserror v2.0.9
       Compiling byteorder v1.5.0
       Compiling libc v0.2.169
       Compiling ahash v0.8.11
       Compiling aho-corasick v1.1.3
       Compiling zerocopy-derive v0.7.35
       Compiling zerocopy v0.7.35
       Compiling thiserror-impl v2.0.9
       Compiling anyhow v1.0.95
       Compiling serde v1.0.216
       Compiling regex-automata v0.4.9
       Compiling serde_derive v1.0.216
       Compiling itoa v1.0.14
       Compiling bitflags v2.6.0
       Compiling log v0.4.22
       Compiling pest v2.7.15
       Compiling hashbrown v0.14.5
       Compiling getrandom v0.2.15
       Compiling bstr v1.11.1
       Compiling time-core v0.1.2
       Compiling unicode-width v0.1.14
       Compiling rustix v0.38.42
       Compiling libm v0.2.11
       Compiling pest_meta v2.7.15
       Compiling time-macros v0.2.19
       Compiling cc v1.2.5
       Compiling anstyle-parse v0.2.6
       Compiling globset v0.4.15
       Compiling rand_core v0.6.4
       Compiling hashlink v0.9.1
       Compiling ppv-lite86 v0.2.20
       Compiling tracing-core v0.1.33
       Compiling encoding_rs v0.8.35
       Compiling linux-raw-sys v0.4.14
       Compiling anstyle-query v1.1.2
       Compiling anstyle v1.0.10
       Compiling serde_json v1.0.134
       Compiling colorchoice v1.0.3
       Compiling anstream v0.6.18
       Compiling yaml-rust2 v0.9.0
       Compiling deranged v0.3.11
       Compiling rand_chacha v0.3.1
       Compiling ignore v0.4.23
       Compiling pikchr v0.1.3
       Compiling pest_generator v2.7.15
       Compiling serde_path_to_error v0.1.16
       Compiling regex v1.11.1
       Compiling tracing-attributes v0.1.28
       Compiling clap_lex v0.7.4
       Compiling deunicode v1.6.0
       Compiling pin-project-lite v0.2.15
       Compiling pulldown-cmark v0.12.2
       Compiling ryu v1.0.18
       Compiling clap_derive v4.5.18
       Compiling clap_builder v4.5.23
       Compiling textwrap v0.16.1
       Compiling time v0.3.37
       Compiling tracing v0.1.41
       Compiling slug v0.1.6
       Compiling tempfile v3.14.0
       Compiling marked-yaml v0.7.2
       Compiling humansize v2.1.3
       Compiling pest_derive v2.7.15
       Compiling globwalk v0.9.1
       Compiling subplot v0.12.0 (/workspace/src)
       Compiling rand v0.8.5
       Compiling getopts v0.2.21
       Compiling unicase v2.8.0
       Compiling tera v1.20.0
       Compiling git-testament-derive v0.2.1
       Compiling roadmap v0.7.0
       Compiling clap v4.5.23
       Compiling tracing-log v0.2.0
       Compiling thread_local v1.1.8
       Compiling smallvec v1.13.2
       Compiling tracing-subscriber v0.3.19
       Compiling git-testament v0.2.6
       Compiling subplot-bin v0.12.0 (/workspace/src/bin)
        Finished `release` profile [optimized] target(s) in 1m 04s
      Installing debian/subplot/bin/subplot
       Installed package `subplot-bin v0.12.0 (/workspace/src/bin)` (executable `subplot`)
    warning: be sure to add `debian/subplot/bin` to your PATH to be able to run the installed binaries
    rm -f debian/subplot/.crates.toml
    rm -f debian/subplot/.crates2.json
    dh_lintian
    make[1]: Leaving directory '/workspace/src'
       dh_install
       dh_installdocs
       dh_installchangelogs
    dh_installchangelogs: warning: Could not parse timestamp '15 April 2022 15:00:00 +0100'. debian/changelog will not be trimmed.
    dh_installchangelogs: warning: debian/changelog could not be trimmed. The full changelog will be installed.
       dh_lintian
       dh_perl
       dh_link
       dh_strip_nondeterminism
       dh_compress
       dh_fixperms
       dh_missing
       dh_strip
       dh_makeshlibs
       dh_shlibdeps
       dh_installdeb
       dh_gencontrol
    dpkg-gencontrol: warning: Built-Using field of package subplot: substitution variable ${cargo:Built-Using} used, but is not defined
    dpkg-gencontrol: warning: Built-Using field of package subplot: substitution variable ${cargo:Built-Using} used, but is not defined
       dh_md5sums
       dh_builddeb
    dpkg-deb: building package 'subplot-dbgsym' in '../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb'.
    dpkg-deb: building package 'subplot' in '../subplot_0.12.0.ci20250911T131814-1_amd64.deb'.
     dpkg-genbuildinfo -O../subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo
     dpkg-genchanges -O../subplot_0.12.0.ci20250911T131814-1_amd64.changes
    dpkg-genchanges: info: including full source code in upload
     dpkg-source --after-build .
    dpkg-buildpackage: info: full upload (original source is included)
    + ls -l ..
    total 2356
    drwxr-xr-x  2 root root    4096 Sep 11 13:15 artifacts
    drwxr-xr-x  5 root root    4096 Sep 11 13:11 cache
    drwxr-xr-x  3 root root    4096 Sep 11 13:15 deps
    drwxr-xr-x 15 root root    4096 Sep 11 13:18 src
    -rw-r--r--  1 root root  271164 Sep 11 13:19 subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb
    -rw-r--r--  1 root root    2376 Sep 11 13:18 subplot_0.12.0.ci20250911T131814-1.debian.tar.xz
    -rw-r--r--  1 root root    1018 Sep 11 13:18 subplot_0.12.0.ci20250911T131814-1.dsc
    -rw-r--r--  1 root root   10151 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo
    -rw-r--r--  1 root root    2388 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.changes
    -rw-r--r--  1 root root 1948112 Sep 11 13:19 subplot_0.12.0.ci20250911T131814-1_amd64.deb
    -rw-r--r--  1 root root  147276 Sep 11 13:18 subplot_0.12.0.ci20250911T131814.orig.tar.xz
    + for x in ../*.deb
    + dpkg -c ../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/.build-id/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/lib/debug/.build-id/23/
    -rw-r--r-- root/root   1785520 2025-09-11 13:18 ./usr/lib/debug/.build-id/23/0b9931d5df6bb55a61d1697a02be8adc81944d.debug
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/
    lrwxrwxrwx root/root         0 2025-09-11 13:18 ./usr/share/doc/subplot-dbgsym -> subplot
    + for x in ../*.deb
    + dpkg -c ../subplot_0.12.0.ci20250911T131814-1_amd64.deb
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./bin/
    -rwxr-xr-x root/root   8048048 2025-09-11 13:18 ./bin/subplot
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/doc/subplot/
    -rw-r--r-- root/root      3761 2025-09-11 13:15 ./usr/share/doc/subplot/README.md
    -rw-r--r-- root/root       635 2025-09-11 13:18 ./usr/share/doc/subplot/changelog.Debian.gz
    -rw-r--r-- root/root      1394 2025-09-11 13:15 ./usr/share/doc/subplot/copyright
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/lintian/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/lintian/overrides/
    -rw-r--r-- root/root       103 2025-09-11 13:15 ./usr/share/lintian/overrides/subplot
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/
    drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/common/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/common/lib/
    -rw-r--r-- root/root      9355 2025-09-11 13:15 ./usr/share/subplot/common/lib/files.yaml
    -rw-r--r-- root/root      8470 2025-09-11 13:15 ./usr/share/subplot/common/lib/runcmd.yaml
    drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/python/
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/python/lib/
    -rw-r--r-- root/root     10415 2025-09-11 13:15 ./usr/share/subplot/python/lib/daemon.py
    -rw-r--r-- root/root      4434 2025-09-11 13:15 ./usr/share/subplot/python/lib/daemon.yaml
    -rw-r--r-- root/root      7272 2025-09-11 13:15 ./usr/share/subplot/python/lib/files.py
    -rw-r--r-- root/root      8657 2025-09-11 13:15 ./usr/share/subplot/python/lib/runcmd.py
    drwxr-xr-x root/root         0 2025-09-11 13:18 ./usr/share/subplot/python/template/
    -rw-r--r-- root/root      1275 2025-09-11 13:15 ./usr/share/subplot/python/template/asserts.py
    -rw-r--r-- root/root      2457 2025-09-11 13:15 ./usr/share/subplot/python/template/context.py
    -rw-r--r-- root/root      4611 2025-09-11 13:15 ./usr/share/subplot/python/template/context_tests.py
    -rw-r--r-- root/root       201 2025-09-11 13:15 ./usr/share/subplot/python/template/encoding.py
    -rw-r--r-- root/root       474 2025-09-11 13:15 ./usr/share/subplot/python/template/encoding_tests.py
    -rw-r--r-- root/root       412 2025-09-11 13:15 ./usr/share/subplot/python/template/files.py
    -rw-r--r-- root/root      4557 2025-09-11 13:15 ./usr/share/subplot/python/template/main.py
    -rw-r--r-- root/root      2660 2025-09-11 13:15 ./usr/share/subplot/python/template/scenarios.py
    -rw-r--r-- root/root      2529 2025-09-11 13:15 ./usr/share/subplot/python/template/template.py.tera
    -rw-r--r-- root/root       137 2025-09-11 13:15 ./usr/share/subplot/python/template/template.yaml
    drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/
    drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/lib/
    -rw-r--r-- root/root       788 2025-09-11 13:15 ./usr/share/subplot/rust/lib/datadir.yaml
    drwxr-xr-x root/root         0 2025-09-11 13:15 ./usr/share/subplot/rust/template/
    -rw-r--r-- root/root      1429 2025-09-11 13:15 ./usr/share/subplot/rust/template/macros.rs.tera
    -rw-r--r-- root/root      1175 2025-09-11 13:15 ./usr/share/subplot/rust/template/template.rs.tera
    -rw-r--r-- root/root        71 2025-09-11 13:15 ./usr/share/subplot/rust/template/template.yaml
    -rw-r--r-- root/root      2103 2025-09-11 13:15 ./usr/share/subplot/subplot.css
    + mv ../subplot-dbgsym_0.12.0.ci20250911T131814-1_amd64.deb ../subplot_0.12.0.ci20250911T131814-1.debian.tar.xz ../subplot_0.12.0.ci20250911T131814-1.dsc ../subplot_0.12.0.ci20250911T131814-1_amd64.buildinfo ../subplot_0.12.0.ci20250911T131814-1_amd64.changes ../subplot_0.12.0.ci20250911T131814-1_amd64.deb ../subplot_0.12.0.ci20250911T131814.orig.tar.xz /workspace/artifacts
    RUN: Action finished OK
    RUN: Action TarCreate {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
    [2025-09-11T13:19:24Z DEBUG ambient_ci::action] Plan::execute: TarCreate {
            archive: "/dev/vde",
            directory: "/workspace/cache",
        }
    [2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] creating virtual drive (tar archive): VirtualDriveBuilder {
            filename: Some(
                "/dev/vde",
            ),
            root: Some(
                "/workspace/cache",
            ),
            size: None,
        }
    [2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] tar archive to be created: /dev/vde; exists? true
    [2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] create archive file /dev/vde
    [2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] directory /workspace/cache exists? true
    [2025-09-11T13:19:24Z TRACE ambient_ci::vdrive] add contents of /workspace/cache as .
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] created virtual drive /dev/vde
    RUN: Action finished OK
    RUN: Action TarCreate {
        archive: "/dev/vdd",
        directory: "/workspace/artifacts",
    }
    [2025-09-11T13:19:30Z DEBUG ambient_ci::action] Plan::execute: TarCreate {
            archive: "/dev/vdd",
            directory: "/workspace/artifacts",
        }
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] creating virtual drive (tar archive): VirtualDriveBuilder {
            filename: Some(
                "/dev/vdd",
            ),
            root: Some(
                "/workspace/artifacts",
            ),
            size: None,
        }
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] tar archive to be created: /dev/vdd; exists? true
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] create archive file /dev/vdd
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] directory /workspace/artifacts exists? true
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] add contents of /workspace/artifacts as .
    [2025-09-11T13:19:30Z TRACE ambient_ci::vdrive] created virtual drive /dev/vdd
    RUN: Action finished OK
    ambient-execute-plan ends
    EXIT CODE: 0
    
    ====================
[2025-09-11T13:19:34Z DEBUG ambient_ci::qemu] QEMU exit code 0
[2025-09-11T13:19:34Z DEBUG ambient_ci::run] remove old cache
[2025-09-11T13:19:34Z DEBUG ambient_ci::run] extract cache
[2025-09-11T13:19:37Z DEBUG ambient_ci::run] Executing post-plan steps
[2025-09-11T13:19:37Z DEBUG ambient_ci::project] write project state to /home/_rad/ambient-state/rad:zjxyd2A1A7FnxtC69qDfoAajfTHo/meta.yaml
[2025-09-11T13:19:38Z INFO  ambient] ambient ends successfully

Ambient stderr

<empty log>