trivial-84f0e0f2-4600

job succeeded

starting new job...


→ running command: cd /etc/byggsteg/job-clone/maak/trunk && sudo guix time-machine --channels=channels.scm -- shell -f guix.scm -- maak test

substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
looking for substitutes on 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/kj75scrpmp3qwcc9cxn1ybbbc59cyx8y-maak-dev.drv

0.2 MB will be downloaded
.
building /gnu/store/kj75scrpmp3qwcc9cxn1ybbbc59cyx8y-maak-dev.drv...
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
10.3 MB will be downloaded
.
looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
4.1 MB will be downloaded
.
looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
substitute: looking for substitutes on 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/qjrhn8zk23iadhk421lbx3i4ddr6blwb-profile.drv

0.1 MB will be downloaded
..
building CA certificate bundle...
listing Emacs sub-directories...
building fonts directory...
building directory of Info manuals...
building profile with 1 package...
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
16.8 MB will be downloaded
..
.
.
.
..
..
.
.
.
..
..
..
.
..
.
..
..
.
..
.
..
.
.
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
2.6 MB will be downloaded
.
looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
0.3 MB will be downloaded
..

scanning directories for unit tests...
scanning present working directory for unit tests...

shuffled the files with seed 617052707 (replay with VERITAS_SEED=617052707)

found unit tests: (errors.scm net.scm guix.scm git.scm cli.scm niri.scm container.scm shell.scm elevation.scm commands.scm tasks.scm docstrings.scm dsl.scm archive.scm integration.scm)


running unit tests from file: errors.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Messages of caught errors
  [🧪 test] an error message is reported as it stands
    ✅ got: boom
  [🧪 test] an unbound variable is named
    ✅ got: Unbound variable: no-such-binding
  [🧪 test] a primitive failure explains itself
    ✅ got: expecting pair
  [🧪 test] a primitive failure is not named by the procedure
    ✅ got: #f
  [🧪 test] a missing module is named the way Guile names it
    ✅ got: no code for module (no such module)
  [🧪 test] the irritants of a user error are shown
    ✅ got: custom a b
  [🧪 test] a template that cannot be filled is shown as it stands
    ✅ got: thrown ~S here
+----------------------------------------------+
[📑 suite] Reporting to the user
  [🧪 test] a maak error is labelled
    ✅ got: maak: error:
  [🧪 test] a maak error prints its message
    ✅ got: Unknown task: nope
  [🧪 test] a maak error prints its hint
    ✅ got: hint: Available tasks: build, test
  [🧪 test] a maak error prints no backtrace
    ✅ got: #f
  [🧪 test] a maak error without a hint prints its message
    ✅ got: nope
  [🧪 test] a maak error without a hint prints no hint
    ✅ got: #f
  [🧪 test] an unexpected error prints what went wrong
    ✅ got: boom
  [🧪 test] an unexpected error points at the debug switch
    ✅ got: MAAK_DEBUG=1
  [🧪 test] an unexpected error prints no backtrace
    ✅ got: #f
  [🧪 test] a missing module names the module
    ✅ got: no code for module (no such module)
  [🧪 test] a missing module points at the load path switch
    ✅ got: -L/--load-path
  [🧪 test] a missing module names the load path variable
    ✅ got: MAAK_LOAD_PATH
  [🧪 test] an unbound variable is named
    ✅ got: no-such-binding
  [🧪 test] an unbound variable says where it is not bound
    ✅ got: is not bound here
  [🧪 test] an unbound variable explains the import rule
    ✅ got: resolve-module
ℹ️ info - ran 2 tasks in: 0 seconds, 3933 microseconds

running unit tests from file: net.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-net-both-7010'
removed '/tmp/maak-test-net-both-7010/curl'
removed '/tmp/maak-test-net-both-7010/wget'
removed directory '/tmp/maak-test-net-both-7010'
mkdir: created directory '/tmp/maak-test-net-wget-only-7010'
removed '/tmp/maak-test-net-wget-only-7010/wget'
removed directory '/tmp/maak-test-net-wget-only-7010'
mkdir: created directory '/tmp/maak-test-net-empty-path-7010'
removed directory '/tmp/maak-test-net-empty-path-7010'
mkdir: created directory '/tmp/maak-test-net-preferred-7010'
removed '/tmp/maak-test-net-preferred-7010/curl'
removed directory '/tmp/maak-test-net-preferred-7010'
mkdir: created directory '/tmp/maak-test-net-empty-preference-7010'
removed '/tmp/maak-test-net-empty-preference-7010/wget'
removed directory '/tmp/maak-test-net-empty-preference-7010'
mkdir: created directory '/tmp/maak-test-net-available-7010'
removed '/tmp/maak-test-net-available-7010/wget'
removed directory '/tmp/maak-test-net-available-7010'
mkdir: created directory '/tmp/maak-test-net-unavailable-7010'
removed directory '/tmp/maak-test-net-unavailable-7010'

+----------------------------------------------+
[📑 suite] Fetch command detection
  [🧪 test] curl is preferred when both are installed
    ✅ got: curl
  [🧪 test] wget is the fallback when curl is missing
    ✅ got: wget
  [🧪 test] curl is the fallback when nothing is installed
    ✅ got: curl
  [🧪 test] an explicit preference wins
    ✅ got: wget
  [🧪 test] an empty preference is ignored
    ✅ got: wget
  [🧪 test] the default fetch command is a non-empty string
    ✅ got: #t
  [🧪 test] fetch-available? looks for the chosen program
    ✅ got: #t
  [🧪 test] fetch-available? is false for a missing program
    ✅ got: #f
+----------------------------------------------+
[📑 suite] curl commands
  [🧪 test] the generic builder is just curl and its arguments
    ✅ got: (curl --version)
  [🧪 test] the generic runner prints its command
    ✅ got: curl --version
  [🧪 test] curl-output returns nothing in a dry run
    ✅ got: 
  [🧪 test] a get has task-safe defaults
    ✅ got: (curl --location --fail --silent --show-error --compressed https://example.org/file)
  [🧪 test] a get carries every option in a stable order
    ✅ got: (curl --location --fail --silent --show-error --compressed --output out.bin --output-dir dist --create-dirs --continue-at - --header X-A: 1 --header X-B: 2 --user me:secret --user-agent maak-test --max-time 30 --retry 3 --insecure --cookie cookies.txt --cookie-jar jar.txt --http1.1 https://example.org/file)
  [🧪 test] a head request is a HEAD without the body
    ✅ got: (curl --location --fail --silent --show-error --compressed --head https://example.org/file)
  [🧪 test] a status request discards the body and prints only the code
    ✅ got: (curl --location --silent --compressed --output /dev/null --write-out %{http_code} https://example.org/file)
  [🧪 test] a status in a dry run has no code to answer
    ✅ got: #f
  [🧪 test] a JSON post sends --json
    ✅ got: (curl --location --fail --silent --show-error --compressed --request POST --json {"ok":true} https://example.org/api)
  [🧪 test] a data post sends --data
    ✅ got: (curl --location --fail --silent --show-error --compressed --request POST --data a=1&b=2 https://example.org/api)
  [🧪 test] a file post sends --data-binary with an @ path
    ✅ got: (curl --location --fail --silent --show-error --compressed --request POST --data-binary @body.json https://example.org/api)
  [🧪 test] a form post sends each field
    ✅ got: (curl --location --fail --silent --show-error --compressed --request POST --form a=1 --form b=2 https://example.org/api)
  [🧪 test] a post can use another method, or imply it
    ✅ got: (curl --location --fail --silent --show-error --compressed --request PATCH --data x https://example.org/api)
    ✅ got: #f
  [🧪 test] a download without an output keeps the remote name
    ✅ got: (curl --location --fail --silent --show-error --compressed --create-dirs --remote-name https://example.org/file)
  [🧪 test] a download can name a file and resume it
    ✅ got: (curl --location --fail --silent --show-error --compressed --output file --output-dir dist --create-dirs --continue-at - https://example.org/file)
  [🧪 test] an upload is a PUT with --upload-file
    ✅ got: (curl --location --fail --silent --show-error --compressed --request PUT --upload-file artifact.bin https://example.org/artifact.bin)
  [🧪 test] text names the URL after the common options
    ✅ got: (curl --location --fail --silent --show-error --compressed https://example.org/file)
  [🧪 test] text returns nothing in a dry run
    ✅ got: 
  [🧪 test] an empty URL is refused
    ✅ success catching error: %exception: (#<&maak-error message: "curl-text expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl-download expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl-get expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl-upload expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl-status expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
  [🧪 test] a header list must be a list of strings
    ✅ success catching error: %exception: (#<&maak-error message: "curl expects #:headers to be a list of strings, got \"X: 1\"" hint: "Write the values as separate strings, for example (list \"a\" \"b\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl expects #:headers to be a list of strings, got (1)" hint: "Write the values as separate strings, for example (list \"a\" \"b\").">)
  [🧪 test] a timeout must be a non-negative integer
    ✅ success catching error: %exception: (#<&maak-error message: "curl expects #:timeout to be a non-negative integer, got \"30\"" hint: "Write a non-negative integer, such as 30 or 3.">)
    ✅ success catching error: %exception: (#<&maak-error message: "curl expects #:timeout to be a non-negative integer, got -1" hint: "Write a non-negative integer, such as 30 or 3.">)
  [🧪 test] a post without a body is refused
    ✅ success catching error: %exception: (#<&maak-error message: "curl-post expects a body: data, json, data-file or form" hint: "Write (curl-post url #:json \"{\\\"ok\\\":true}\").">)
  [🧪 test] an upload without a file is refused
    ✅ success catching error: %exception: (#<&maak-error message: "curl-upload expects the file to upload" hint: "Write (curl-upload url \"artifact.tar.gz\").">)
  [🧪 test] a generic call refuses arguments that are not strings
    ✅ success catching error: %exception: (#<&maak-error message: "curl expects #:arguments to be a list of strings, got (\"--version\" 3)" hint: "Write the values as separate strings, for example (list \"a\" \"b\").">)
+----------------------------------------------+
[📑 suite] wget commands
  [🧪 test] the generic builder is just wget and its arguments
    ✅ got: (wget --version)
  [🧪 test] the generic runner prints its command
    ✅ got: wget --version
  [🧪 test] wget-output returns nothing in a dry run
    ✅ got: 
  [🧪 test] a bare download is wget and the URL
    ✅ got: (wget https://example.org/file)
  [🧪 test] a download carries every option in a stable order
    ✅ got: (wget --quiet --continue --output-document file --directory-prefix dist --timestamping --no-clobber --header X-A: 1 --user me --password secret --timeout 10 --tries 2 --user-agent maak-test --no-check-certificate https://example.org/file)
  [🧪 test] a mirror stays under the URL by default
    ✅ got: (wget --recursive --no-parent --no-host-directories https://example.org/docs)
  [🧪 test] a mirror can take the whole page and cut path components
    ✅ got: (wget --quiet --directory-prefix site --recursive --no-parent --page-requisites --convert-links --cut-dirs=2 --no-host-directories https://example.org/docs)
  [🧪 test] a text fetch writes the body to standard output
    ✅ got: (wget --quiet --output-document=- https://example.org/file)
  [🧪 test] text returns nothing in a dry run
    ✅ got: 
  [🧪 test] an empty URL is refused
    ✅ success catching error: %exception: (#<&maak-error message: "wget-mirror expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "wget-text expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
    ✅ success catching error: %exception: (#<&maak-error message: "wget-download expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
  [🧪 test] a header list must be a list of strings
    ✅ success catching error: %exception: (#<&maak-error message: "wget expects #:headers to be a list of strings, got (\"X: 1\" 2)" hint: "Write the values as separate strings, for example (list \"a\" \"b\").">)
  [🧪 test] a timeout and a try count must be non-negative integers
    ✅ success catching error: %exception: (#<&maak-error message: "wget expects #:timeout to be a non-negative integer, got -1" hint: "Write a non-negative integer, such as 30 or 3.">)
    ✅ success catching error: %exception: (#<&maak-error message: "wget expects #:tries to be a non-negative integer, got \"3\"" hint: "Write a non-negative integer, such as 30 or 3.">)
  [🧪 test] a generic call refuses arguments that are not strings
    ✅ success catching error: %exception: (#<&maak-error message: "wget expects #:arguments to be a list of strings, got (\"--version\" 3)" hint: "Write the values as separate strings, for example (list \"a\" \"b\").">)
+----------------------------------------------+
[📑 suite] Choosing a downloader
  [🧪 test] download uses curl by default
    ✅ got: curl --location --fail --silent --show-error --compressed --output file --create-dirs https://example.org/file
  [🧪 test] download can use wget
    ✅ got: wget --quiet --output-document file https://example.org/file
  [🧪 test] download reads the fetch-command parameter
    ✅ got: wget --quiet --output-document file https://example.org/file
  [🧪 test] download turns a user and password into curl's --user
    ✅ got: --user me:secret
  [🧪 test] download passes wget's user and password separately
    ✅ got: --user me --password secret
  [🧪 test] a password without a user is refused
    ✅ success catching error: %exception: (#<&maak-error message: "download expects a user when a password is given" hint: "Pass #:user too, or put the credentials in the URL.">)
  [🧪 test] an unknown downloader is refused
    ✅ success catching error: %exception: (#<&maak-error message: "download expects curl or wget, got \"fetch\"" hint: "Set MAAK_FETCH to curl or wget.">)
  [🧪 test] download refuses an empty URL
    ✅ success catching error: %exception: (#<&maak-error message: "download expects a URL" hint: "Write (curl-get \"https://example.org/file\").">)
ℹ️ info - ran 4 tasks in: 0 seconds, 15072 microseconds

running unit tests from file: guix.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-guix-7010'
removed '/tmp/maak-test-guix-7010/channels.scm'
removed directory '/tmp/maak-test-guix-7010'
mkdir: created directory '/tmp/maak-test-guix-7010'
removed '/tmp/maak-test-guix-7010/channels.scm'
removed directory '/tmp/maak-test-guix-7010'
mkdir: created directory '/tmp/maak-test-guix-7010'
removed '/tmp/maak-test-guix-7010/guix'
removed directory '/tmp/maak-test-guix-7010'
mkdir: created directory '/tmp/maak-test-guix-7010'
removed '/tmp/maak-test-guix-7010/guix'
removed directory '/tmp/maak-test-guix-7010'
mkdir: created directory '/tmp/maak-test-guix-7010'
removed '/tmp/maak-test-guix-7010/channels.scm'
removed directory '/tmp/maak-test-guix-7010'

+----------------------------------------------+
[📑 suite] Guix values
  [🧪 test] guix-available? answers with a boolean
    ✅ got: #t
  [🧪 test] a missing channels file is named in the error
    ✅ got: #t
  [🧪 test] a package name cannot be empty
    ✅ got: #t
  [🧪 test] a pinned revision has to be a commit
    ✅ got: #t
  [🧪 test] guix-program refuses arguments that are not a list
    ✅ success catching error: %exception: (#<&maak-error message: "guix-program expects its arguments as a list of strings" hint: "Write (guix-program \"hello\" '(--version)).">)
  [🧪 test] a query without Guix says how to get it
    ✅ got: #t
  [🧪 test] guix-channels reads the pins of a channels file
    ✅ got: 40
  [🧪 test] a query removes the file it ran
    ✅ got: #t
  [🧪 test] a failed query keeps the file it ran, and names it
    ✅ got: #t
  [🧪 test] a dry run prints the query instead of asking Guix
    ✅ got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 1247 microseconds

running unit tests from file: git.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-git-init-7010'
removed '/tmp/maak-test-git-init-7010/.git/description'
removed '/tmp/maak-test-git-init-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-init-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-init-7010/.git/hooks'
removed '/tmp/maak-test-git-init-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-init-7010/.git/info'
removed directory '/tmp/maak-test-git-init-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-init-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-init-7010/.git/refs'
removed '/tmp/maak-test-git-init-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-init-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-init-7010/.git/objects/info'
removed directory '/tmp/maak-test-git-init-7010/.git/objects'
removed '/tmp/maak-test-git-init-7010/.git/config'
removed directory '/tmp/maak-test-git-init-7010/.git'
removed directory '/tmp/maak-test-git-init-7010'
mkdir: created directory '/tmp/maak-test-git-add-7010'
removed '/tmp/maak-test-git-add-7010/.git/description'
removed '/tmp/maak-test-git-add-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-add-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-add-7010/.git/hooks'
removed '/tmp/maak-test-git-add-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-add-7010/.git/info'
removed directory '/tmp/maak-test-git-add-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-add-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-add-7010/.git/refs'
removed '/tmp/maak-test-git-add-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-add-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-add-7010/.git/objects/info'
removed '/tmp/maak-test-git-add-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-add-7010/.git/objects/43'
removed directory '/tmp/maak-test-git-add-7010/.git/objects'
removed '/tmp/maak-test-git-add-7010/.git/config'
removed '/tmp/maak-test-git-add-7010/.git/index'
removed directory '/tmp/maak-test-git-add-7010/.git'
removed '/tmp/maak-test-git-add-7010/a.txt'
removed directory '/tmp/maak-test-git-add-7010'
mkdir: created directory '/tmp/maak-test-git-commit-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-commit-7010/.git/description'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-commit-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-commit-7010/.git/hooks'
removed '/tmp/maak-test-git-commit-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-commit-7010/.git/info'
removed '/tmp/maak-test-git-commit-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-commit-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-commit-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-commit-7010/.git/refs'
removed '/tmp/maak-test-git-commit-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects/info'
removed '/tmp/maak-test-git-commit-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects/43'
removed '/tmp/maak-test-git-commit-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects/07'
removed '/tmp/maak-test-git-commit-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-commit-7010/.git/objects'
removed '/tmp/maak-test-git-commit-7010/.git/config'
removed '/tmp/maak-test-git-commit-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-commit-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-commit-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-commit-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-commit-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-commit-7010/.git/logs'
removed '/tmp/maak-test-git-commit-7010/.git/index'
removed directory '/tmp/maak-test-git-commit-7010/.git'
removed '/tmp/maak-test-git-commit-7010/a.txt'
removed directory '/tmp/maak-test-git-commit-7010'
mkdir: created directory '/tmp/maak-test-git-revision-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-revision-7010/.git/description'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-revision-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-revision-7010/.git/hooks'
removed '/tmp/maak-test-git-revision-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-revision-7010/.git/info'
removed '/tmp/maak-test-git-revision-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-revision-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-revision-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-revision-7010/.git/refs'
removed '/tmp/maak-test-git-revision-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects/info'
removed '/tmp/maak-test-git-revision-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects/43'
removed '/tmp/maak-test-git-revision-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects/07'
removed '/tmp/maak-test-git-revision-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-revision-7010/.git/objects'
removed '/tmp/maak-test-git-revision-7010/.git/config'
removed '/tmp/maak-test-git-revision-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-revision-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-revision-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-revision-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-revision-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-revision-7010/.git/logs'
removed '/tmp/maak-test-git-revision-7010/.git/index'
removed directory '/tmp/maak-test-git-revision-7010/.git'
removed '/tmp/maak-test-git-revision-7010/a.txt'
removed directory '/tmp/maak-test-git-revision-7010'
mkdir: created directory '/tmp/maak-test-git-dirty-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-dirty-7010/.git/description'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-dirty-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-dirty-7010/.git/hooks'
removed '/tmp/maak-test-git-dirty-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-dirty-7010/.git/info'
removed '/tmp/maak-test-git-dirty-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-dirty-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-dirty-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-dirty-7010/.git/refs'
removed '/tmp/maak-test-git-dirty-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects/info'
removed '/tmp/maak-test-git-dirty-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects/43'
removed '/tmp/maak-test-git-dirty-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects/07'
removed '/tmp/maak-test-git-dirty-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-dirty-7010/.git/objects'
removed '/tmp/maak-test-git-dirty-7010/.git/config'
removed '/tmp/maak-test-git-dirty-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-dirty-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-dirty-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-dirty-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-dirty-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-dirty-7010/.git/logs'
removed '/tmp/maak-test-git-dirty-7010/.git/index'
removed directory '/tmp/maak-test-git-dirty-7010/.git'
removed '/tmp/maak-test-git-dirty-7010/a.txt'
removed directory '/tmp/maak-test-git-dirty-7010'
mkdir: created directory '/tmp/maak-test-git-clean-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-clean-7010/.git/description'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-clean-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-clean-7010/.git/hooks'
removed '/tmp/maak-test-git-clean-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-clean-7010/.git/info'
removed '/tmp/maak-test-git-clean-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clean-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-clean-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-clean-7010/.git/refs'
removed '/tmp/maak-test-git-clean-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects/info'
removed '/tmp/maak-test-git-clean-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects/43'
removed '/tmp/maak-test-git-clean-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects/07'
removed '/tmp/maak-test-git-clean-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-clean-7010/.git/objects'
removed '/tmp/maak-test-git-clean-7010/.git/config'
removed '/tmp/maak-test-git-clean-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-clean-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-clean-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clean-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-clean-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-clean-7010/.git/logs'
removed '/tmp/maak-test-git-clean-7010/.git/index'
removed directory '/tmp/maak-test-git-clean-7010/.git'
removed '/tmp/maak-test-git-clean-7010/a.txt'
removed directory '/tmp/maak-test-git-clean-7010'
mkdir: created directory '/tmp/maak-test-git-tag-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-tag-7010/.git/description'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-tag-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-tag-7010/.git/hooks'
removed '/tmp/maak-test-git-tag-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-tag-7010/.git/info'
removed '/tmp/maak-test-git-tag-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-tag-7010/.git/refs/heads'
removed '/tmp/maak-test-git-tag-7010/.git/refs/tags/v1'
removed directory '/tmp/maak-test-git-tag-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-tag-7010/.git/refs'
removed '/tmp/maak-test-git-tag-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/info'
removed '/tmp/maak-test-git-tag-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/43'
removed '/tmp/maak-test-git-tag-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/07'
removed '/tmp/maak-test-git-tag-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/19'
removed '/tmp/maak-test-git-tag-7010/.git/objects/dc/74a4e9fedc1e0655f61bd859afdbba17ee5742'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects/dc'
removed directory '/tmp/maak-test-git-tag-7010/.git/objects'
removed '/tmp/maak-test-git-tag-7010/.git/config'
removed '/tmp/maak-test-git-tag-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-tag-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-tag-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-tag-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-tag-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-tag-7010/.git/logs'
removed '/tmp/maak-test-git-tag-7010/.git/index'
removed directory '/tmp/maak-test-git-tag-7010/.git'
removed '/tmp/maak-test-git-tag-7010/a.txt'
removed directory '/tmp/maak-test-git-tag-7010'
mkdir: created directory '/tmp/maak-test-git-describe-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-describe-7010/.git/description'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-describe-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-describe-7010/.git/hooks'
removed '/tmp/maak-test-git-describe-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-describe-7010/.git/info'
removed '/tmp/maak-test-git-describe-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-describe-7010/.git/refs/heads'
removed '/tmp/maak-test-git-describe-7010/.git/refs/tags/v2'
removed directory '/tmp/maak-test-git-describe-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-describe-7010/.git/refs'
removed '/tmp/maak-test-git-describe-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects/info'
removed '/tmp/maak-test-git-describe-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects/43'
removed '/tmp/maak-test-git-describe-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects/07'
removed '/tmp/maak-test-git-describe-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-describe-7010/.git/objects'
removed '/tmp/maak-test-git-describe-7010/.git/config'
removed '/tmp/maak-test-git-describe-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-describe-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-describe-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-describe-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-describe-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-describe-7010/.git/logs'
removed '/tmp/maak-test-git-describe-7010/.git/index'
removed directory '/tmp/maak-test-git-describe-7010/.git'
removed '/tmp/maak-test-git-describe-7010/a.txt'
removed directory '/tmp/maak-test-git-describe-7010'
mkdir: created directory '/tmp/maak-test-git-switch-7010'
[trunk (root-commit) 190e5b4] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
Switched to branch 'feature'
removed '/tmp/maak-test-git-switch-7010/.git/description'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-switch-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-switch-7010/.git/hooks'
removed '/tmp/maak-test-git-switch-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-switch-7010/.git/info'
removed '/tmp/maak-test-git-switch-7010/.git/refs/heads/trunk'
removed '/tmp/maak-test-git-switch-7010/.git/refs/heads/feature'
removed directory '/tmp/maak-test-git-switch-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-switch-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-switch-7010/.git/refs'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects/info'
removed '/tmp/maak-test-git-switch-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects/43'
removed '/tmp/maak-test-git-switch-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects/07'
removed '/tmp/maak-test-git-switch-7010/.git/objects/19/0e5b4c4b8da13e7f2966b2ad8ce78f9ed502b0'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects/19'
removed directory '/tmp/maak-test-git-switch-7010/.git/objects'
removed '/tmp/maak-test-git-switch-7010/.git/config'
removed '/tmp/maak-test-git-switch-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-switch-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-switch-7010/.git/logs/refs/heads/trunk'
removed '/tmp/maak-test-git-switch-7010/.git/logs/refs/heads/feature'
removed directory '/tmp/maak-test-git-switch-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-switch-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-switch-7010/.git/logs'
removed '/tmp/maak-test-git-switch-7010/.git/index'
removed '/tmp/maak-test-git-switch-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-switch-7010/.git'
removed '/tmp/maak-test-git-switch-7010/a.txt'
removed directory '/tmp/maak-test-git-switch-7010'
mkdir: created directory '/tmp/maak-test-git-detached-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
HEAD is now at cbd3c52 first
removed '/tmp/maak-test-git-detached-7010/.git/description'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-detached-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-detached-7010/.git/hooks'
removed '/tmp/maak-test-git-detached-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-detached-7010/.git/info'
removed '/tmp/maak-test-git-detached-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-detached-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-detached-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-detached-7010/.git/refs'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects/info'
removed '/tmp/maak-test-git-detached-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects/43'
removed '/tmp/maak-test-git-detached-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects/07'
removed '/tmp/maak-test-git-detached-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-detached-7010/.git/objects'
removed '/tmp/maak-test-git-detached-7010/.git/config'
removed '/tmp/maak-test-git-detached-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-detached-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-detached-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-detached-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-detached-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-detached-7010/.git/logs'
removed '/tmp/maak-test-git-detached-7010/.git/index'
removed '/tmp/maak-test-git-detached-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-detached-7010/.git'
removed '/tmp/maak-test-git-detached-7010/a.txt'
removed directory '/tmp/maak-test-git-detached-7010'
mkdir: created directory '/tmp/maak-test-git-remote-7010'
removed '/tmp/maak-test-git-remote-7010/.git/description'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-remote-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-remote-7010/.git/hooks'
removed '/tmp/maak-test-git-remote-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-remote-7010/.git/info'
removed directory '/tmp/maak-test-git-remote-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-remote-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-remote-7010/.git/refs'
removed '/tmp/maak-test-git-remote-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-remote-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-remote-7010/.git/objects/info'
removed directory '/tmp/maak-test-git-remote-7010/.git/objects'
removed '/tmp/maak-test-git-remote-7010/.git/config'
removed directory '/tmp/maak-test-git-remote-7010/.git'
removed directory '/tmp/maak-test-git-remote-7010'
mkdir: created directory '/tmp/maak-test-git-remotes-7010'
removed '/tmp/maak-test-git-remotes-7010/.git/description'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-remotes-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-remotes-7010/.git/hooks'
removed '/tmp/maak-test-git-remotes-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-remotes-7010/.git/info'
removed directory '/tmp/maak-test-git-remotes-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-remotes-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-remotes-7010/.git/refs'
removed '/tmp/maak-test-git-remotes-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-remotes-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-remotes-7010/.git/objects/info'
removed directory '/tmp/maak-test-git-remotes-7010/.git/objects'
removed '/tmp/maak-test-git-remotes-7010/.git/config'
removed directory '/tmp/maak-test-git-remotes-7010/.git'
removed directory '/tmp/maak-test-git-remotes-7010'
mkdir: created directory '/tmp/maak-test-git-diff-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-diff-7010/.git/description'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-diff-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-diff-7010/.git/hooks'
removed '/tmp/maak-test-git-diff-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-diff-7010/.git/info'
removed '/tmp/maak-test-git-diff-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-diff-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-diff-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-diff-7010/.git/refs'
removed '/tmp/maak-test-git-diff-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects/info'
removed '/tmp/maak-test-git-diff-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects/43'
removed '/tmp/maak-test-git-diff-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects/07'
removed '/tmp/maak-test-git-diff-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-diff-7010/.git/objects'
removed '/tmp/maak-test-git-diff-7010/.git/config'
removed '/tmp/maak-test-git-diff-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-diff-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-diff-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-diff-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-diff-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-diff-7010/.git/logs'
removed '/tmp/maak-test-git-diff-7010/.git/index'
removed directory '/tmp/maak-test-git-diff-7010/.git'
removed '/tmp/maak-test-git-diff-7010/a.txt'
removed directory '/tmp/maak-test-git-diff-7010'
mkdir: created directory '/tmp/maak-test-git-stash-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
Saved working directory and index state WIP on trunk: cbd3c52 first
On branch trunk
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (7d0a5807ae8fd26c3e75351ae06880b7d7e7772e)
removed '/tmp/maak-test-git-stash-7010/.git/description'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-stash-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-stash-7010/.git/hooks'
removed '/tmp/maak-test-git-stash-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-stash-7010/.git/info'
removed '/tmp/maak-test-git-stash-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-stash-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-stash-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-stash-7010/.git/refs'
removed '/tmp/maak-test-git-stash-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/info'
removed '/tmp/maak-test-git-stash-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/43'
removed '/tmp/maak-test-git-stash-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/07'
removed '/tmp/maak-test-git-stash-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/cb'
removed '/tmp/maak-test-git-stash-7010/.git/objects/f3/bacef85c14d48b3cfc172774d31d74a896eec7'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/f3'
removed '/tmp/maak-test-git-stash-7010/.git/objects/64/c5e5885a4b06010b3a0c20edb7900dd0311025'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/64'
removed '/tmp/maak-test-git-stash-7010/.git/objects/aa/d2fe6de7e85e540a89abff48edc7e6e61584b6'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/aa'
removed '/tmp/maak-test-git-stash-7010/.git/objects/7d/0a5807ae8fd26c3e75351ae06880b7d7e7772e'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects/7d'
removed directory '/tmp/maak-test-git-stash-7010/.git/objects'
removed '/tmp/maak-test-git-stash-7010/.git/config'
removed '/tmp/maak-test-git-stash-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-stash-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-stash-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-stash-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-stash-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-stash-7010/.git/logs'
removed '/tmp/maak-test-git-stash-7010/.git/ORIG_HEAD'
removed '/tmp/maak-test-git-stash-7010/.git/AUTO_MERGE'
removed '/tmp/maak-test-git-stash-7010/.git/index'
removed directory '/tmp/maak-test-git-stash-7010/.git'
removed '/tmp/maak-test-git-stash-7010/a.txt'
removed directory '/tmp/maak-test-git-stash-7010'
mkdir: created directory '/tmp/maak-test-git-clean-file-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
Removing junk.txt
removed '/tmp/maak-test-git-clean-file-7010/.git/description'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-clean-file-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/hooks'
removed '/tmp/maak-test-git-clean-file-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/info'
removed '/tmp/maak-test-git-clean-file-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/refs'
removed '/tmp/maak-test-git-clean-file-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects/info'
removed '/tmp/maak-test-git-clean-file-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects/43'
removed '/tmp/maak-test-git-clean-file-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects/07'
removed '/tmp/maak-test-git-clean-file-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/objects'
removed '/tmp/maak-test-git-clean-file-7010/.git/config'
removed '/tmp/maak-test-git-clean-file-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-clean-file-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-clean-file-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-clean-file-7010/.git/logs'
removed '/tmp/maak-test-git-clean-file-7010/.git/index'
removed directory '/tmp/maak-test-git-clean-file-7010/.git'
removed '/tmp/maak-test-git-clean-file-7010/a.txt'
removed directory '/tmp/maak-test-git-clean-file-7010'
mkdir: created directory '/tmp/maak-test-git-output-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-output-7010/.git/description'
removed '/tmp/maak-test-git-output-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-output-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-output-7010/.git/hooks'
removed '/tmp/maak-test-git-output-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-output-7010/.git/info'
removed '/tmp/maak-test-git-output-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-output-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-output-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-output-7010/.git/refs'
removed '/tmp/maak-test-git-output-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-output-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-output-7010/.git/objects/info'
removed '/tmp/maak-test-git-output-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-output-7010/.git/objects/43'
removed '/tmp/maak-test-git-output-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-output-7010/.git/objects/07'
removed '/tmp/maak-test-git-output-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-output-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-output-7010/.git/objects'
removed '/tmp/maak-test-git-output-7010/.git/config'
removed '/tmp/maak-test-git-output-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-output-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-output-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-output-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-output-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-output-7010/.git/logs'
removed '/tmp/maak-test-git-output-7010/.git/index'
removed directory '/tmp/maak-test-git-output-7010/.git'
removed '/tmp/maak-test-git-output-7010/a.txt'
removed directory '/tmp/maak-test-git-output-7010'
mkdir: created directory '/tmp/maak-test-git-failure-7010'
fatal: Needed a single revision
removed '/tmp/maak-test-git-failure-7010/.git/description'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-failure-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-failure-7010/.git/hooks'
removed '/tmp/maak-test-git-failure-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-failure-7010/.git/info'
removed directory '/tmp/maak-test-git-failure-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-failure-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-failure-7010/.git/refs'
removed '/tmp/maak-test-git-failure-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-failure-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-failure-7010/.git/objects/info'
removed directory '/tmp/maak-test-git-failure-7010/.git/objects'
removed '/tmp/maak-test-git-failure-7010/.git/config'
removed directory '/tmp/maak-test-git-failure-7010/.git'
removed directory '/tmp/maak-test-git-failure-7010'
mkdir: created directory '/tmp/maak-test-git-archive-tar-7010'
mkdir: created directory '/tmp/maak-test-git-archive-out-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-archive-tar-7010/.git/description'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-archive-tar-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/hooks'
removed '/tmp/maak-test-git-archive-tar-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/info'
removed '/tmp/maak-test-git-archive-tar-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/refs'
removed '/tmp/maak-test-git-archive-tar-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects/info'
removed '/tmp/maak-test-git-archive-tar-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects/43'
removed '/tmp/maak-test-git-archive-tar-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects/07'
removed '/tmp/maak-test-git-archive-tar-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/objects'
removed '/tmp/maak-test-git-archive-tar-7010/.git/config'
removed '/tmp/maak-test-git-archive-tar-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-archive-tar-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-archive-tar-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git/logs'
removed '/tmp/maak-test-git-archive-tar-7010/.git/index'
removed directory '/tmp/maak-test-git-archive-tar-7010/.git'
removed '/tmp/maak-test-git-archive-tar-7010/a.txt'
removed directory '/tmp/maak-test-git-archive-tar-7010'
removed '/tmp/maak-test-git-archive-out-7010/p.tar.gz'
removed directory '/tmp/maak-test-git-archive-out-7010'
mkdir: created directory '/tmp/maak-test-git-archive-zip-7010'
mkdir: created directory '/tmp/maak-test-git-archive-zip-out-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
removed '/tmp/maak-test-git-archive-zip-7010/.git/description'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-archive-zip-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/hooks'
removed '/tmp/maak-test-git-archive-zip-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/info'
removed '/tmp/maak-test-git-archive-zip-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/refs'
removed '/tmp/maak-test-git-archive-zip-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects/info'
removed '/tmp/maak-test-git-archive-zip-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects/43'
removed '/tmp/maak-test-git-archive-zip-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects/07'
removed '/tmp/maak-test-git-archive-zip-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/objects'
removed '/tmp/maak-test-git-archive-zip-7010/.git/config'
removed '/tmp/maak-test-git-archive-zip-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-archive-zip-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-archive-zip-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git/logs'
removed '/tmp/maak-test-git-archive-zip-7010/.git/index'
removed directory '/tmp/maak-test-git-archive-zip-7010/.git'
removed '/tmp/maak-test-git-archive-zip-7010/a.txt'
removed directory '/tmp/maak-test-git-archive-zip-7010'
removed '/tmp/maak-test-git-archive-zip-out-7010/p.zip'
removed directory '/tmp/maak-test-git-archive-zip-out-7010'
mkdir: created directory '/tmp/maak-test-git-clone-source-7010'
mkdir: created directory '/tmp/maak-test-git-clone-parent-7010'
[trunk (root-commit) cbd3c52] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
Cloning into '/tmp/maak-test-git-clone-parent-7010/target'...
done.
removed '/tmp/maak-test-git-clone-source-7010/.git/description'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-clone-source-7010/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/hooks'
removed '/tmp/maak-test-git-clone-source-7010/.git/info/exclude'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/info'
removed '/tmp/maak-test-git-clone-source-7010/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/refs/heads'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/refs/tags'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/refs'
removed '/tmp/maak-test-git-clone-source-7010/.git/HEAD'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects/pack'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects/info'
removed '/tmp/maak-test-git-clone-source-7010/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects/43'
removed '/tmp/maak-test-git-clone-source-7010/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects/07'
removed '/tmp/maak-test-git-clone-source-7010/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects/cb'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/objects'
removed '/tmp/maak-test-git-clone-source-7010/.git/config'
removed '/tmp/maak-test-git-clone-source-7010/.git/COMMIT_EDITMSG'
removed '/tmp/maak-test-git-clone-source-7010/.git/logs/HEAD'
removed '/tmp/maak-test-git-clone-source-7010/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/logs/refs'
removed directory '/tmp/maak-test-git-clone-source-7010/.git/logs'
removed '/tmp/maak-test-git-clone-source-7010/.git/index'
removed directory '/tmp/maak-test-git-clone-source-7010/.git'
removed '/tmp/maak-test-git-clone-source-7010/a.txt'
removed directory '/tmp/maak-test-git-clone-source-7010'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/description'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/applypatch-msg.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/commit-msg.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/fsmonitor-watchman.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/post-update.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-applypatch.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-commit.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-merge-commit.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-push.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-rebase.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/pre-receive.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/prepare-commit-msg.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/push-to-checkout.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/sendemail-validate.sample'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks/update.sample'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/hooks'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/info/exclude'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/info'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/pack'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/info'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/43/dd47ea691c90a5fa7827892c70241913351963'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/43'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/07/74631921416916f52abe96497a247055976283'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/07'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/cb/d3c52ad41838a8ed932972bf6cbf7c0046f65c'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects/cb'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/objects'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/heads'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/tags'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/remotes/origin/HEAD'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/remotes/origin'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/refs/remotes'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/refs'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/packed-refs'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs/remotes/origin/HEAD'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs/remotes/origin'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs/remotes'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs/heads/trunk'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs/heads'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/refs'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/logs/HEAD'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git/logs'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/HEAD'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/config'
removed '/tmp/maak-test-git-clone-parent-7010/target/.git/index'
removed directory '/tmp/maak-test-git-clone-parent-7010/target/.git'
removed '/tmp/maak-test-git-clone-parent-7010/target/a.txt'
removed directory '/tmp/maak-test-git-clone-parent-7010/target'
removed directory '/tmp/maak-test-git-clone-parent-7010'

+----------------------------------------------+
[📑 suite] Git argument lists
  [🧪 test] git-argv names the checkout with -C
    ✅ got: (git -C /tmp/repo status)
  [🧪 test] git-argv defaults to the current directory
    ✅ got: (git -C . status)
  [🧪 test] a clone puts the destination last
    ✅ got: git clone --branch main --depth 1 https://example.org/p.git vendor/p
  [🧪 test] a bare clone asks for --bare
    ✅ got: git clone --bare ../other
  [🧪 test] switching can create the branch
    ✅ got: git -C . switch -c feature
  [🧪 test] a commit keeps its message as one argument
    ✅ got: git -C . commit --all -m
  [🧪 test] a commit can amend an empty tree
    ✅ got: commit --all --amend --allow-empty -m
  [🧪 test] an annotated tag passes its message
    ✅ got: git -C . tag --annotate -m
  [🧪 test] log has its usual default shape
    ✅ got: git -C . log --oneline --graph --decorate -n 20
  [🧪 test] log passes explicit arguments through
    ✅ got: git -C . log --oneline --graph --decorate -5 --all
  [🧪 test] the subcommand wrappers reach git
    ✅ got: (git -C . rebase --interactive HEAD~2)
  [🧪 test] a remote is added with its own subcommand
    ✅ got: git -C . remote add origin url
  [🧪 test] an archive names format, prefix and output
    ✅ got: git -C . archive --format=zip --prefix=p/ -o /tmp/p.zip v1.0
  [🧪 test] an empty commit message is refused
    ✅ success catching error: %exception: (#<&maak-error message: "git-commit expects a commit message" hint: "Write (git-commit \"feat: add the report\").">)
  [🧪 test] an empty archive name is refused
    ✅ success catching error: %exception: (#<&maak-error message: "git-archive expects the archive file to write" hint: "Write (git-archive \"project-1.0.tar.gz\" #:prefix \"project-1.0/\").">)
  [🧪 test] an empty branch name is refused
    ✅ success catching error: %exception: (#<&maak-error message: "git-switch expects a branch name" hint: "Write (git-switch \"trunk\").">)
  [🧪 test] an empty clone URL is refused
    ✅ success catching error: %exception: (#<&maak-error message: "git-clone expects the URL of the repository to clone" hint: "Write (git-clone \"https://example.org/project.git\").">)
+----------------------------------------------+
[📑 suite] Git repositories
  [🧪 test] git-init creates a repository
    ✅ got: #t
  [🧪 test] git-add stages an untracked file
    ✅ got: A  a.txt
  [🧪 test] git-commit records the tree, and the branch reads back
    ✅ got: trunk
  [🧪 test] git-current-revision is a full hash
    ✅ got: 40
  [🧪 test] git-dirty? notices a modified file
    ✅ got: #t
  [🧪 test] git-dirty? is false after a commit
    ✅ got: #f
  [🧪 test] git-tag and git-tags agree
    ✅ got: (v1)
  [🧪 test] git-describe-tag finds the release tag
    ✅ got: v2
  [🧪 test] a branch can be created and switched to
    ✅ got: feature
  [🧪 test] a detached HEAD answers with its revision
    ✅ got: 40
  [🧪 test] a remote can be added and read back
    ✅ got: https://example.org/p.git
  [🧪 test] git-remotes lists what was added
    ✅ got: (origin)
  [🧪 test] git-diff reports a modified file when failures are allowed
    ✅ got: #f
  [🧪 test] a stash can be made and popped
    ✅ got: #t
  [🧪 test] git-clean removes an untracked file
    ✅ got: #t
  [🧪 test] git-output reads a value rather than printing it
    ✅ got: trunk
  [🧪 test] a failed command raises unless failure is allowed
    ✅ got: #f
  [🧪 test] git-archive-tar writes the tracked files
    ✅ got: p/a.txt
  [🧪 test] git-archive-zip writes the tracked files
    ✅ got: p/a.txt
  [🧪 test] git-clone copies a repository
    ✅ got: #t
ℹ️ info - ran 2 tasks in: 0 seconds, 3174 microseconds

running unit tests from file: cli.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Command line switches
  [🧪 test] the environment switch understands the usual negatives
    ✅ got: #f
    ✅ got: #t
    ✅ got: #t
    ✅ got: #f
    ✅ got: #f
    ✅ got: #f
    ✅ got: #f
  [🧪 test] the banner is on unless something turns it off
    ✅ got: #t
    ✅ got: #t
    ✅ got: #f
  [🧪 test] MAAK_NO_BANNER turns the banner off and --banner wins over it
    ✅ got: #f
    ✅ got: #f
    ✅ got: #t
  [🧪 test] environment files come from the flag, the environment, or the file
    ✅ got: (test/maak/fixtures/.env)
    ✅ got: ()
    ✅ got: (one.env two.env)
    ✅ got: (a.env b.env)
+----------------------------------------------+
[📑 suite] Banner and listing
  [🧪 test] the banner greets and names the Maak file
    ✅ got: the infinitely extensible
    ✅ got: 0
    ✅ got: test/maak/fixtures/cli.scm
    ✅ got: ok-task-ran
  [🧪 test] --no-banner keeps the task output
    ✅ got: #f
    ✅ got: ok-task-ran
    ✅ got: 0
    ✅ got: #f
  [🧪 test] MAAK_NO_BANNER is honoured by the run, not only by the switch
    ✅ got: 0
    ✅ got: #f
  [🧪 test] --list shows every task with its docstring
    ✅ got: boom: Fail the way a task is supposed to fail.
    ✅ got: 0
    ✅ got: ok: Print a line and succeed.
+----------------------------------------------+
[📑 suite] A task that fails
  [🧪 test] a task error prints one line with its hint and no backtrace
    ✅ got: #f
    ✅ got: maak: error: no artefact for cli-test
    ✅ got: hint: Run `maak ok' first.
    ✅ got: 1
    ✅ got: #f
  [🧪 test] an unknown task lists the tasks that do exist
    ✅ got: Available tasks: boom, ok
    ✅ got: Unknown task: nope
    ✅ got: 1
+----------------------------------------------+
[📑 suite] Environment files at the command line
  [🧪 test] --env-file is read before the tasks run
    ✅ got: 0
    ✅ got: TAG=from-env-file
  [🧪 test] MAAK_ENV_FILE is read when no flag is given
    ✅ got: TAG=from-env-file
  [🧪 test] a .env beside the Maak file is read by default
    ✅ got: DEFAULT=from-default-env
  [🧪 test] --no-env-file reads nothing at all
    ✅ got: DEFAULT=unset
  [🧪 test] the environment beats the file for a name it already has
    ✅ got: TAG=from-the-environment
+----------------------------------------------+
[📑 suite] Several tasks in one run
  [🧪 test] a failure stops the tasks after it by default
    ✅ got: first-pass-ran
    ✅ got: 1
    ✅ got: no artefact for second-fail
    ✅ got: #f
  [🧪 test] --keep-going runs the tasks after a failure and fails at the end
    ✅ got: last-pass-ran
    ✅ got: maak: error (task second-fail):
    ✅ got: 2 tasks failed: second-fail, third-fail
    ✅ got: first-pass-ran
    ✅ got: 1
    ✅ got: (task third-fail):
    ✅ got: no artefact for second-fail
  [🧪 test] --ignore-errors keeps going and still exits 0
    ✅ got: 0
    ✅ got: last-pass-ran
    ✅ got: maak: warning: 1 task failed and --ignore-errors was given: second-fail
    ✅ got: no artefact for second-fail
+----------------------------------------------+
[📑 suite] Changing directory before anything else
  [🧪 test] --directory reads the Maak file of the directory it entered
    ✅ got: 0
    ✅ got: subdir-marker-ran
    ✅ got: Entering directory
  [🧪 test] a directory that is not there is an error, not a silent fallback
    ✅ got: 1
    ✅ got: no such directory: no/such/directory
    ✅ got: #t
    ✅ got: #t
  [🧪 test] the directory entered is reported by default
    ✅ got: #t
  [🧪 test] --no-print-directory leaves the report out
    ✅ got: #f
  [🧪 test] --quiet asks for silence as well
    ✅ got: #f
  [🧪 test] --no-print-directory runs the same task without the line
    ✅ got: subdir-marker-ran
    ✅ got: #f
    ✅ got: 0
+----------------------------------------------+
[📑 suite] The arguments a run passes on
  [🧪 test] the words after `--' reach the task that was named
    ✅ got: args=one,two
  [🧪 test] a task that takes no arguments is handed none
    ✅ got: 0
  [🧪 test] the arity failure is still the one Guile raised
    ✅ got: Wrong number of arguments
  [🧪 test] a word that names a task is pointed out as an argument
    ✅ got: `beta' names a task of this Maak file
  [🧪 test] the hint spells out the run that was probably meant
    ✅ got: To run several tasks, name them in one comma separated list (`maak alpha,beta') or one word each after `--' (`maak -- alpha beta')
  [🧪 test] a word that names no task leaves the arity error alone
    ✅ got: #f
  [🧪 test] the hint is printed where a run keeps going as well
    ✅ got: `beta' names a task of this Maak file
ℹ️ info - ran 7 tasks in: 0 seconds, 9691 microseconds

running unit tests from file: niri.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-niri-niri-available-7010'
removed '/tmp/maak-test-niri-niri-available-7010/niri'
removed directory '/tmp/maak-test-niri-niri-available-7010'
mkdir: created directory '/tmp/maak-test-niri-niri-unavailable-7010'
removed directory '/tmp/maak-test-niri-niri-unavailable-7010'

+----------------------------------------------+
[📑 suite] niri argument lists
  [🧪 test] the program and subcommand come first
    ✅ got: (niri msg outputs)
  [🧪 test] JSON is a flag of msg, before the subcommand
    ✅ got: (niri msg --json windows)
  [🧪 test] an action is its own subcommand
    ✅ got: (niri msg action close-window)
  [🧪 test] an output names the output before the action
    ✅ got: (niri msg output DP-1 mode 1920x1080@60)
  [🧪 test] the generic runner prints the command
    ✅ got: niri msg action close-window
  [🧪 test] capture returns nothing in a dry run
    ✅ got: 
+----------------------------------------------+
[📑 suite] niri queries
  [🧪 test] every query reaches its subcommand
    ✅ got: (niri msg version niri msg outputs niri msg workspaces niri msg windows niri msg layers niri msg keyboard-layouts niri msg focused-output niri msg focused-window niri msg pick-window niri msg pick-color niri msg overview-state niri msg casts niri msg request-error)
  [🧪 test] a query can ask for JSON
    ✅ got: niri msg --json workspaces
  [🧪 test] niri-available? finds niri on PATH
    ✅ got: #t
  [🧪 test] niri-available? is false when niri is not on PATH
    ✅ got: #f
+----------------------------------------------+
[📑 suite] niri actions
  [🧪 test] the argument-free actions are plain subcommands
    ✅ got: (niri msg action close-window niri msg action fullscreen-window niri msg action toggle-windowed-fullscreen niri msg action toggle-overview niri msg action focus-workspace-previous niri msg action focus-window-previous niri msg action screenshot niri msg action screenshot-screen niri msg action screenshot-window niri msg action power-off-monitors niri msg action power-on-monitors niri msg action unset-workspace-name)
  [🧪 test] a workspace can be focused by reference
    ✅ got: niri msg action focus-workspace 2
  [🧪 test] a workspace name stays one argument
    ✅ got: niri msg action focus-workspace 'my space'
  [🧪 test] a column and a window take their index
    ✅ got: (niri msg action focus-column 1 niri msg action focus-window 42)
  [🧪 test] a monitor is named as it is
    ✅ got: niri msg action focus-monitor DP-1
  [🧪 test] moving a window carries its id and focus decision
    ✅ got: niri msg action move-window-to-workspace --window-id 7 --focus false 3
  [🧪 test] moving a column names the workspace
    ✅ got: niri msg action move-column-to-workspace 4
  [🧪 test] windows and columns move to a monitor
    ✅ got: (niri msg action move-window-to-monitor HDMI-A-1 niri msg action move-column-to-monitor HDMI-A-1)
  [🧪 test] width changes carry their optional id
    ✅ got: (niri msg action set-window-width --id 5 +10% niri msg action set-column-width 50%)
  [🧪 test] a workspace can be named and unnamed
    ✅ got: niri msg action set-workspace-name web
  [🧪 test] spawn separates niri's flags from the program
    ✅ got: niri msg action spawn -- foot -e htop
  [🧪 test] spawn-sh keeps the line for the shell
    ✅ got: niri msg action spawn-sh -- 'echo hi'
  [🧪 test] quit skips the confirmation by default
    ✅ got: niri msg action quit --skip-confirmation
  [🧪 test] spawn refuses an empty program list
    ✅ success catching error: %exception: (#<&maak-error message: "niri-spawn expects a non-empty list of strings, starting with the program" hint: "Write (niri-spawn (list \"foot\")).">)
  [🧪 test] spawn refuses arguments that are not strings
    ✅ success catching error: %exception: (#<&maak-error message: "niri-spawn expects a non-empty list of strings, starting with the program" hint: "Write (niri-spawn (list \"foot\")).">)
+----------------------------------------------+
[📑 suite] niri outputs
  [🧪 test] turning an output on and off
    ✅ got: (niri msg output DP-1 on niri msg output DP-1 off)
  [🧪 test] an output mode is passed through
    ✅ got: niri msg output DP-1 mode 1920x1080@60
  [🧪 test] scale, transform and position reach the right actions
    ✅ got: (niri msg output DP-1 scale 1.5 niri msg output DP-1 transform 90 niri msg output DP-1 position 0 1080)
ℹ️ info - ran 4 tasks in: 0 seconds, 2869 microseconds

running unit tests from file: container.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-container-empty-path-7010'
removed directory '/tmp/maak-test-container-empty-path-7010'
mkdir: created directory '/tmp/maak-test-container-docker-only-7010'
removed '/tmp/maak-test-container-docker-only-7010/docker'
removed directory '/tmp/maak-test-container-docker-only-7010'
mkdir: created directory '/tmp/maak-test-container-both-7010'
removed '/tmp/maak-test-container-both-7010/docker'
removed '/tmp/maak-test-container-both-7010/podman'
removed directory '/tmp/maak-test-container-both-7010'
mkdir: created directory '/tmp/maak-test-container-preferred-7010'
removed '/tmp/maak-test-container-preferred-7010/podman'
removed directory '/tmp/maak-test-container-preferred-7010'
mkdir: created directory '/tmp/maak-test-container-empty-preference-7010'
removed '/tmp/maak-test-container-empty-preference-7010/docker'
removed directory '/tmp/maak-test-container-empty-preference-7010'
mkdir: created directory '/tmp/maak-test-container-podman-compose-7010'
removed '/tmp/maak-test-container-podman-compose-7010/podman-compose'
removed directory '/tmp/maak-test-container-podman-compose-7010'
mkdir: created directory '/tmp/maak-test-container-podman-compose-fallback-7010'
removed directory '/tmp/maak-test-container-podman-compose-fallback-7010'
mkdir: created directory '/tmp/maak-test-container-available-7010'
removed '/tmp/maak-test-container-available-7010/podman'
removed directory '/tmp/maak-test-container-available-7010'
mkdir: created directory '/tmp/maak-test-container-unavailable-7010'
removed directory '/tmp/maak-test-container-unavailable-7010'
mkdir: created directory '/tmp/maak-test-container-compose-available-7010'
removed '/tmp/maak-test-container-compose-available-7010/podman-compose'
removed directory '/tmp/maak-test-container-compose-available-7010'
mkdir: created directory '/tmp/maak-test-container-compose-unavailable-7010'
removed directory '/tmp/maak-test-container-compose-unavailable-7010'

+----------------------------------------------+
[📑 suite] Container engine detection
  [🧪 test] an empty search path falls back to podman
    ✅ got: podman
  [🧪 test] docker is found when podman is not
    ✅ got: docker
  [🧪 test] podman wins when both are installed
    ✅ got: podman
  [🧪 test] an explicit preference wins
    ✅ got: docker
  [🧪 test] an empty preference is ignored
    ✅ got: docker
  [🧪 test] docker compose is the docker program plus its subcommand
    ✅ got: (docker compose)
  [🧪 test] podman-compose is preferred for podman
    ✅ got: (podman-compose)
  [🧪 test] podman compose is the fallback
    ✅ got: (podman compose)
  [🧪 test] a compose preference is split into words
    ✅ got: (podman-compose --ansi never)
  [🧪 test] a compose preference splits on any whitespace
    ✅ got: (podman-compose --ansi never)
  [🧪 test] the default engine is a non-empty string
    ✅ got: #t
  [🧪 test] container-available? looks on PATH
    ✅ got: #t
  [🧪 test] container-available? is false for a missing engine
    ✅ got: #f
  [🧪 test] compose-available? looks for the first word
    ✅ got: #t
  [🧪 test] compose-available? is false for a missing program
    ✅ got: #f
  [🧪 test] an empty engine is refused
    ✅ success catching error: %exception: (#<&maak-error message: "container engine must be a non-empty string, got \"\"" hint: "Set MAAK_CONTAINER_ENGINE to podman or docker.">)
+----------------------------------------------+
[📑 suite] Container commands
  [🧪 test] the engine is the first word
    ✅ got: (docker ps --all)
  [🧪 test] run carries every option in a stable order
    ✅ got: (podman run --detach --rm --interactive --tty --privileged --name db --workdir /app --entrypoint /bin/sh --network host --user 1000 --platform linux/amd64 --pull always --env A=1 --publish 8080:80 --volume v:/data --mount type=bind --label role=db postgres postgres -c x)
  [🧪 test] run removes the container by default
    ✅ got: (podman run --rm alpine)
  [🧪 test] build carries tags, files, args and labels
    ✅ got: (docker build --tag p:dev --file Containerfile --target runtime --platform linux/arm64 --network host --no-cache --pull --quiet --build-arg VERSION=1 --label a=b .)
  [🧪 test] ps can include stopped containers
    ✅ got: (podman ps --all)
  [🧪 test] images passes extra arguments through
    ✅ got: (docker images --quiet)
  [🧪 test] stop names every container
    ✅ got: (podman stop a b)
  [🧪 test] rm forces and removes volumes
    ✅ got: (podman rm --force --volumes db)
  [🧪 test] exec passes environment and user
    ✅ got: (docker exec --interactive --tty --workdir /app --user postgres --env PGPASSWORD=x db psql -c select 1)
  [🧪 test] logs can follow, tail and filter by time
    ✅ got: (podman logs --follow --tail 50 --since 1h db)
  [🧪 test] pull is a plain subcommand
    ✅ got: (docker pull img)
  [🧪 test] push is a plain subcommand
    ✅ got: (docker push img)
  [🧪 test] tag names the source and the new name
    ✅ got: (docker tag a b)
  [🧪 test] inspect can format a field
    ✅ got: (podman inspect --format {{.State.Status}} --type container db)
  [🧪 test] the generic runner prints the engine command
    ✅ got: docker volume ls
  [🧪 test] capture returns nothing in a dry run
    ✅ got: 
  [🧪 test] an empty image is refused
    ✅ success catching error: %exception: (#<&maak-error message: "container-run expects the image to run" hint: "Write (container-run image #:command (list program argument)).">)
  [🧪 test] an empty context is refused
    ✅ success catching error: %exception: (#<&maak-error message: "container-build expects a build context" hint: "Write (container-build build-context #:tag image-name).">)
+----------------------------------------------+
[📑 suite] Compose commands
  [🧪 test] global options come before the subcommand
    ✅ got: (docker compose --file compose.yml --project-name p --env-file .env --profile dev ps)
  [🧪 test] up detaches, builds and waits
    ✅ got: (podman-compose up --detach --build --force-recreate --remove-orphans --wait web)
  [🧪 test] up can avoid starting the services
    ✅ got: (docker compose up --detach --remove-orphans --no-start)
  [🧪 test] down can remove volumes and images
    ✅ got: (docker compose down --volumes --remove-orphans --rmi all --timeout 10 db)
  [🧪 test] build passes no-cache and pull
    ✅ got: (docker compose build --no-cache --pull web)
  [🧪 test] logs can follow and drop colour
    ✅ got: (docker compose logs --follow --tail 20 --no-color web)
  [🧪 test] ps can list everything and format it
    ✅ got: (docker compose ps --all --format json web)
  [🧪 test] exec allocates no terminal by default
    ✅ got: (docker compose exec -T --user root web id)
  [🧪 test] exec can allocate a terminal when asked
    ✅ got: (docker compose exec --tty --index 2 web sh)
  [🧪 test] tty wins over the default -T
    ✅ got: (docker compose exec --tty web sh)
  [🧪 test] run uses a one-off container
    ✅ got: (docker compose run --rm --no-deps --workdir /app --user root web make)
  [🧪 test] pull and restart take service names
    ✅ got: (docker compose pull --ignore-pull-failures web)
    ✅ got: (docker compose restart --timeout 5 web)
  [🧪 test] config can validate without printing
    ✅ got: (docker compose config -q --services)
  [🧪 test] the generic runner prints the compose command
    ✅ got: docker compose --file compose.yml top
  [🧪 test] capture returns nothing in a dry run
    ✅ got: 
  [🧪 test] an empty program is refused
    ✅ success catching error: %exception: (#<&maak-error message: "compose expects a non-empty program list" hint: "Set MAAK_COMPOSE, or use container-compose-command.">)
ℹ️ info - ran 3 tasks in: 0 seconds, 12066 microseconds

running unit tests from file: shell.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-files-7010'
removed '/tmp/maak-test-files-7010/a.txt'
removed directory '/tmp/maak-test-files-7010'
mkdir: created directory '/tmp/maak-test-parents-7010'
mkdir: created directory '/tmp/maak-test-parents-7010/deep'
mkdir: created directory '/tmp/maak-test-parents-7010/deep/nested'
removed '/tmp/maak-test-parents-7010/deep/nested/a.txt'
removed directory '/tmp/maak-test-parents-7010/deep/nested'
removed directory '/tmp/maak-test-parents-7010/deep'
removed directory '/tmp/maak-test-parents-7010'
mkdir: created directory '/tmp/maak-test-append-7010'
removed '/tmp/maak-test-append-7010/a.txt'
removed directory '/tmp/maak-test-append-7010'
mkdir: created directory '/tmp/maak-test-missing-7010'
mkdir: created directory '/tmp/maak-test-touch-7010'
removed '/tmp/maak-test-touch-7010/touched'
removed directory '/tmp/maak-test-touch-7010'
mkdir: created directory '/tmp/maak-test-spaces-7010'
mkdir: created directory '/tmp/maak-test-spaces-7010/a b'
removed directory '/tmp/maak-test-spaces-7010/a b'
removed directory '/tmp/maak-test-spaces-7010'
mkdir: created directory '/tmp/maak-test-touch-space-7010'
removed '/tmp/maak-test-touch-space-7010/a b.txt'
removed directory '/tmp/maak-test-touch-space-7010'
mkdir: created directory '/tmp/maak-test-cp-space-7010'
removed '/tmp/maak-test-cp-space-7010/a b.txt'
removed '/tmp/maak-test-cp-space-7010/c d.txt'
removed directory '/tmp/maak-test-cp-space-7010'
mkdir: created directory '/tmp/maak-test-mv-space-7010'
renamed '/tmp/maak-test-mv-space-7010/a b.txt' -> '/tmp/maak-test-mv-space-7010/c d.txt'
removed '/tmp/maak-test-mv-space-7010/c d.txt'
removed directory '/tmp/maak-test-mv-space-7010'
mkdir: created directory '/tmp/maak-test-ln-space-7010'
removed '/tmp/maak-test-ln-space-7010/a b.txt'
removed '/tmp/maak-test-ln-space-7010/c d.txt'
removed directory '/tmp/maak-test-ln-space-7010'
mkdir: created directory '/tmp/maak-test-chmod-space-7010'
removed '/tmp/maak-test-chmod-space-7010/a b.sh'
removed directory '/tmp/maak-test-chmod-space-7010'
mkdir: created directory '/tmp/maak-test-rm-space-7010'
mkdir: created directory '/tmp/maak-test-rm-space-7010/a b'
removed directory '/tmp/maak-test-rm-space-7010/a b'
removed directory '/tmp/maak-test-rm-space-7010'
mkdir: created directory '/tmp/maak-test-expand-rm-7010'
removed '/tmp/maak-test-expand-rm-7010/a b.txt'
removed '/tmp/maak-test-expand-rm-7010/c.txt'
removed '/tmp/maak-test-expand-rm-7010/keep.log'
removed directory '/tmp/maak-test-expand-rm-7010'
mkdir: created directory '/tmp/maak-test-expand-cp-7010'
mkdir: created directory '/tmp/maak-test-expand-cp-7010/dest'
removed '/tmp/maak-test-expand-cp-7010/a b.txt'
removed '/tmp/maak-test-expand-cp-7010/c.txt'
removed '/tmp/maak-test-expand-cp-7010/dest/a b.txt'
removed '/tmp/maak-test-expand-cp-7010/dest/c.txt'
removed directory '/tmp/maak-test-expand-cp-7010/dest'
removed directory '/tmp/maak-test-expand-cp-7010'
mkdir: created directory '/tmp/maak-test-expand-chmod-7010'
removed '/tmp/maak-test-expand-chmod-7010/a.txt'
removed '/tmp/maak-test-expand-chmod-7010/b.txt'
removed directory '/tmp/maak-test-expand-chmod-7010'

+----------------------------------------------+
[📑 suite] Shell quoting and lookup
  [🧪 test] shell-quote wraps in single quotes
    ✅ got: 'a b'
    ✅ got: ''
  [🧪 test] shell-quote escapes embedded single quotes
    ✅ got: 'it'\''s'
  [🧪 test] which finds a program that exists
    ✅ got: #t
  [🧪 test] which returns #f for a missing program
    ✅ got: #f
  [🧪 test] command-exists? mirrors which
    ✅ got: #t
    ✅ got: #f
  [🧪 test] require-command returns the path it found
    ✅ got: #t
  [🧪 test] require-command raises for a missing program
    ✅ success catching error: %exception: (#<&maak-error message: "required command not found on PATH: definitely-not-a-real-command-maak-test" hint: "Install `definitely-not-a-real-command-maak-test', or add it to PATH.">)
+----------------------------------------------+
[📑 suite] File helpers
  [🧪 test] write-file then read-file round-trips
    ✅ got: hello
  [🧪 test] write-file creates parent directories
    ✅ got: deep
  [🧪 test] write-file appends when asked
    ✅ got: onetwo
  [🧪 test] read-file returns its default for a missing file
    ✅ got: fallback
  [🧪 test] read-file of a missing file is #f without a default
    ✅ got: #f
  [🧪 test] touch creates a file
    ✅ got: #t
  [🧪 test] with-directory changes the directory
    ✅ got: #t
  [🧪 test] with-directory restores the directory
    ✅ got: /etc/byggsteg/job-clone/maak/trunk
+----------------------------------------------+
[📑 suite] Capturing output
  [🧪 test] capture returns the output of a successful command
    ✅ got: fine

  [🧪 test] capture raises when the command fails
    ✅ success catching error: %exception: (#<&maak-error message: "command failed (exit code 3): exit 3" hint: "Fix the command above, or run `maak --dry-run' to inspect it first.">)
  [🧪 test] capture keeps partial output only when allowed to fail
    ✅ got: partial

  [🧪 test] capture includes standard error when asked
    ✅ got: oops

+----------------------------------------------+
[📑 suite] File helpers keep paths with spaces whole
  [🧪 test] mkdir-p creates one directory, not a directory per word
    ✅ got: #t
  [🧪 test] touch creates a file whose name has a space
    ✅ got: #t
  [🧪 test] cp copies paths whose names have spaces
    ✅ got: #t
  [🧪 test] mv moves paths whose names have spaces
    ✅ got: #t
  [🧪 test] ln-s links a path whose name has a space
    ✅ got: #t
  [🧪 test] chmod-file changes the mode of a path with a space
    ✅ got: 448
  [🧪 test] delete-file-recursively removes a directory with a space
    ✅ got: #t
+----------------------------------------------+
[📑 suite] Shell expansion when asked for
  [🧪 test] delete-file-recursively expands a wildcard when asked
    ✅ got: #t
  [🧪 test] cp expands a wildcard when asked
    ✅ got: #t
  [🧪 test] chmod-file expands a wildcard when asked
    ✅ got: (384 384)
+----------------------------------------------+
[📑 suite] Environment helpers
  [🧪 test] home-dir and tmp-dir return strings
    ✅ got: #t
    ✅ got: #t
  [🧪 test] env-set! then env-get round-trips
    ✅ got: value
  [🧪 test] env-unset! removes the variable
    ✅ got: #f
  [🧪 test] env-get falls back to its default
    ✅ got: default
  [🧪 test] with-env sets and restores the variable
    ✅ got: inner
    ✅ got: #f
  [🧪 test] with-env restores an existing value
    ✅ got: outer
  [🧪 test] with-env-vars sets every pair
    ✅ got: (1 2)
+----------------------------------------------+
[📑 suite] Environment files
  [🧪 test] the assignments are read in the order they are written
    ✅ got: ((CI . 1) (MAAK_SMOKE . hello) (MAAK_SMOKE_QUOTED . quoted value) (SINGLE . single quoted) (EMPTY . ) (DATABASE_URL . postgres://localhost/dev?sslmode=disable) (INDENTED . spaced))
  [🧪 test] environment files skip lines without an =
    ✅ got: #f
  [🧪 test] environment files skip comments
    ✅ got: #f
  [🧪 test] a file that does not exist has no assignments
    ✅ got: ()
  [🧪 test] loading sets the names and reports them
    ✅ got: hello
    ✅ got: (CI MAAK_SMOKE MAAK_SMOKE_QUOTED SINGLE EMPTY DATABASE_URL INDENTED)
    ✅ got: quoted value
  [🧪 test] the environment keeps a name it already has
    ✅ got: from-the-environment
  [🧪 test] overriding is possible when asked for
    ✅ got: hello
  [🧪 test] loading a file that is not there changes nothing
    ✅ got: ()
ℹ️ info - ran 7 tasks in: 0 seconds, 18714 microseconds

running unit tests from file: elevation.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-elevation-fallback-7010'
removed directory '/tmp/maak-test-elevation-fallback-7010'
mkdir: created directory '/tmp/maak-test-elevation-doas-7010'
removed '/tmp/maak-test-elevation-doas-7010/doas'
removed directory '/tmp/maak-test-elevation-doas-7010'
mkdir: created directory '/tmp/maak-test-elevation-both-7010'
removed '/tmp/maak-test-elevation-both-7010/doas'
removed '/tmp/maak-test-elevation-both-7010/sudo'
removed directory '/tmp/maak-test-elevation-both-7010'
mkdir: created directory '/tmp/maak-test-elevation-preferred-7010'
removed '/tmp/maak-test-elevation-preferred-7010/doas'
removed directory '/tmp/maak-test-elevation-preferred-7010'
mkdir: created directory '/tmp/maak-test-elevation-not-executable-7010'
removed '/tmp/maak-test-elevation-not-executable-7010/doas'
removed directory '/tmp/maak-test-elevation-not-executable-7010'

+----------------------------------------------+
[📑 suite] Choosing the escalation command
  [🧪 test] sudo is the fallback
    ✅ got: sudo
  [🧪 test] doas is chosen when it is installed
    ✅ got: doas
  [🧪 test] doas wins over sudo when both are installed
    ✅ got: doas
  [🧪 test] an explicit preference wins
    ✅ got: my-escalator
  [🧪 test] a file that is not executable is not a command
    ✅ got: sudo
  [🧪 test] the default is a non-empty string
    ✅ got: #t
+----------------------------------------------+
[📑 suite] Using the escalation command
  [🧪 test] dollar puts the chosen command first
    ✅ got: doas echo hi
  [🧪 test] dollar keeps the decoration order
    ✅ got: doas env A=1 echo hi >/dev/null 2>&1
  [🧪 test] run puts the chosen command in its argv
    ✅ got: doas env A=1 echo hi
  [🧪 test] a pipeline stage uses the chosen command
    ✅ got: doas env A=1 true
  [🧪 test] the escalation command may carry options
    ✅ got: doas -n echo hi
  [🧪 test] options may be separated by any whitespace
    ✅ got: doas -n echo hi
  [🧪 test] an empty escalation command turns the request off
    ✅ got: echo hi
  [🧪 test] an empty escalation command runs for real too
    ✅ got: #t
  [🧪 test] decorate-command is the single place the choice is applied
    ✅ got: doas env A=1 true
  [🧪 test] without the request nothing is added
    ✅ got: true
ℹ️ info - ran 2 tasks in: 0 seconds, 1487 microseconds

running unit tests from file: commands.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-i18n-7010'
mkdir: created directory '/tmp/maak-test-i18n-7010/sources'

Executing: sleep 3

Executing: sleep 3

+----------------------------------------------+
[📑 suite] Guix command construction
  [🧪 test] guix-shell lists its packages
    ✅ got: guix shell guile coreutils -- echo hi
  [🧪 test] guix-shell can be pure and use a manifest
    ✅ got: guix shell --pure -m manifest.scm -- maak test
  [🧪 test] guix-container isolates with a container
    ✅ got: guix shell --container -m manifest.scm --network -S /home/joe -- echo hi
  [🧪 test] guix-pack builds a docker image
    ✅ got: guix pack --file=guix.scm --format=docker --image-tag=maak -S /bin=bin bash
+----------------------------------------------+
[📑 suite] Nix command construction
  [🧪 test] nix-shell runs the command it is given
    ✅ got: --run 'echo hi'
  [🧪 test] nix-shell passes packages
    ✅ got: --packages python3
  [🧪 test] nix-shell names itself
    ✅ got: nix-shell
  [🧪 test] nix-shell can be pure
    ✅ got: --pure
  [🧪 test] nix-shell can be file based
    ✅ got: --file shell.nix
  [🧪 test] nix-develop runs a flake's shell
    ✅ got: nix develop . --command make test
  [🧪 test] nix-build builds a file
    ✅ got: nix-build default.nix
  [🧪 test] nix-flake-build selects an attribute
    ✅ got: nix build .#packages.x86_64-linux.maak
  [🧪 test] nix-flake-check checks all systems
    ✅ got: nix flake check --all-systems .
  [🧪 test] nix-run runs an app of a flake
    ✅ got: nix run .#maak -- --version
+----------------------------------------------+
[📑 suite] i18n helpers
  [🧪 test] the catalogue paths follow the gettext layout
    ✅ got: po/nl_NL/LC_MESSAGES
    ✅ got: po/nl_NL/LC_MESSAGES/maak.mo
    ✅ got: po/maak.pot
    ✅ got: po/nl_NL/LC_MESSAGES/messages.po
  [🧪 test] the directory and its trailing slash are handled
    ✅ got: sys/i18n/locale/translate.pot
    ✅ got: sys/i18n/locale/nl_NL/LC_MESSAGES
  [🧪 test] source globs keep the directories that exist
    ✅ got: (src/*.scm)
  [🧪 test] source globs skip directories that do not exist
    ✅ got: #f
  [🧪 test] i18n-compile builds a msgfmt command
    ✅ got: msgfmt -v -o po/nl_NL/LC_MESSAGES/messages.mo
  [🧪 test] i18n-compile names the catalogue it compiles
    ✅ got: po/nl_NL/LC_MESSAGES/messages.po
  [🧪 test] i18n-merge builds a msgmerge command
    ✅ got: msgmerge -U
  [🧪 test] i18n-init builds a msginit command
    ✅ got: msginit -l nl_NL.UTF8
  [🧪 test] i18n-init asks for no translator
    ✅ got: --no-translator
  [🧪 test] a first extraction runs xgettext
    ✅ got: xgettext
  [🧪 test] a first extraction knows it is reading Scheme
    ✅ got: --language=Scheme
  [🧪 test] a first extraction collects the translated strings
    ✅ got: --keyword=G_
  [🧪 test] the first extraction does not join an existing template
    ✅ got: #f
  [🧪 test] i18n-language is a language
    ✅ got: #t
  [🧪 test] i18n-language strips the encoding
    ✅ got: #f
  [🧪 test] i18n-language strips the modifier
    ✅ got: #f
+----------------------------------------------+
[📑 suite] Command decorations
  [🧪 test] an environment is handed over through env
    ✅ got: env A=1 B=2 make
    ✅ got: env CI=1 make
    ✅ got: env ONLY=1 make
  [🧪 test] the decorations come in the order a shell would want
    ✅ got: sudo env CI=1 systemctl daemon-reload >/dev/null 2>&1
  [🧪 test] a backgrounded command is started, not waited for
    ✅ got: make -j &
  [🧪 test] an allowed failure still runs the command it was given
    ✅ got: make failing-target
  [🧪 test] an allowed failure is not turned into a `|| true' shell
    ✅ got: #f
  [🧪 test] the Guix shells forward the decorations
    ✅ got: env A=1 guix time-machine --channels=channels.scm -- shell -f guix.scm
    ✅ got: env CI=1 guix shell -m manifest.scm -- maak test
    ✅ got: env A=1 guix time-machine --channels=channels.scm -- guix build hello
    ✅ got: env A=1 guix time-machine --channels=channels.scm -- shell -m manifest.scm
    ✅ got: env A=1 guix shell -f guix.scm -- x
  [🧪 test] a container and a pack forward the decorations
    ✅ got: env CI=1 guix shell --container -m manifest.scm -- maak test >/dev/null 2>&1
    ✅ got: env A=1 guix pack --file=guix.scm
  [🧪 test] the Nix helpers forward the decorations
    ✅ got: env NIX=1 nix-shell --packages gcc --run 'make test'
    ✅ got: env A=1 nix flake check .
    ✅ got: env A=1 nix develop . --command make
  [🧪 test] the shells honour the join separator they are given
    ✅ got: a && b
+----------------------------------------------+
[📑 suite] Running decorated commands
  [🧪 test] a failing command stops a task
    ✅ success catching error: %exception: (#<&maak-error message: "command failed (exit code 3): exit 3" hint: "Fix the command above, or run `maak --dry-run' to inspect it first.">)
    ✅ success catching error: %exception: (#<&maak-error message: "command failed (exit code 1): false" hint: "Fix the command above, or run `maak --dry-run' to inspect it first.">)
  [🧪 test] a failure that is allowed is reported, not raised
    ✅ got: #t
    ✅ got: #f
    ✅ got: #f
  [🧪 test] a backgrounded command reports a job with a pid
    ✅ got: #t
  [🧪 test] a backgrounded command is not waited for
    ✅ got: #t
  [🧪 test] a discarded command still runs
    ✅ got: #t
  [🧪 test] #:env reaches the command itself
    ✅ got: from-dollar
  [🧪 test] #:env reaches one command, not the whole task
    ✅ got: #f
ℹ️ info - ran 5 tasks in: 0 seconds, 17387 microseconds

running unit tests from file: tasks.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Task resolution
  [🧪 test] exports restrict the visible tasks
    ✅ got: (alpha beta)
  [🧪 test] non-exported procedures are hidden
    ✅ got: #f
  [🧪 test] a module without exports is open season
    ✅ got: (one two)
  [🧪 test] available-task-names returns a list
    ✅ got: #t
  [🧪 test] available-task-names returns strings
    ✅ got: #t
  [🧪 test] available-task-names is sorted
    ✅ got: (alpha beta boom echo-args first-pass last-pass ok report-default report-env second-fail sub-marker third-fail)
+----------------------------------------------+
[📑 suite] Unknown task errors
  [🧪 test] an unknown task names itself
    ✅ got: Unknown task: nope
  [🧪 test] a missing default gets its own message
    ✅ got: Could not find a `default' task in this Maak file.
  [🧪 test] the error carries a hint
    ✅ got: #t
  [🧪 test] the hint says something
    ✅ got: #t
  [🧪 test] run-task raises for a task that does not exist
    ✅ success catching error: %exception: (#<&maak-error message: "Unknown task: definitely-missing-task" hint: "Available tasks: alpha, beta, boom, echo-args, first-pass, last-pass, ok, report-default, report-env, second-fail, sub-marker, third-fail">)
  [🧪 test] run-tasks raises for a task that does not exist
    ✅ success catching error: %exception: (#<&maak-error message: "Unknown task: definitely-missing-task" hint: "Available tasks: alpha, beta, boom, echo-args, first-pass, last-pass, ok, report-default, report-env, second-fail, sub-marker, third-fail">)
  [🧪 test] run-tasks of nothing is a no-op
    ✅ got: #t
+----------------------------------------------+
[📑 suite] Docstring layout is exported
  [🧪 test] format-task-doc is available from (maak maak)
    ✅ got: (t: one line)
    ✅ got: #t
  [🧪 test] available-task-names is available from (maak maak)
    ✅ got: #t
ℹ️ info - ran 3 tasks in: 0 seconds, 1648 microseconds

running unit tests from file: docstrings.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Task docstring layout
  [🧪 test] a single line stays inline
    ✅ got: (build: Compile the project.)
  [🧪 test] two lines align the continuation
    ✅ got: (t: first    second)
  [🧪 test] one paragraph keeps every line aligned under the name
    ✅ got: (t: first    second    third    fourth)
  [🧪 test] a paragraph break starts a block under the name
    ✅ got: (t:    first    second     third)
  [🧪 test] a wrapped paragraph aligns with the widest name
    ✅ got: (collect-artefacts: Gather the build output.                    The result is a tarball.)
  [🧪 test] an indented multi-line docstring keeps its alignment
    ✅ got: (t: first    second)
  [🧪 test] a block keeps its blank lines blank
    ✅ got: (t:    a     b     c)
  [🧪 test] a docstring with no documentation prints the name only
    ✅ got: (t:)
    ✅ got: (t:)
    ✅ got: (t:)
  [🧪 test] source indentation is removed before laying out
    ✅ got: (t: first    second)
  [🧪 test] the margin follows the length of the name
    ✅ got: (longname: a           b)
  [🧪 test] blank lines inside a block are not padded
    ✅ got: (t:    a     b)
  [🧪 test] the name is emphasised with ANSI escapes
    ✅ got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 914 microseconds

running unit tests from file: dsl.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-processes-7010'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/out.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/stage-env.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/pipeline-env.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/override.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/printed.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
ONE
TWO
removed '/tmp/maak-test-processes-7010/teed.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/teed.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/printed.txt'
removed '/tmp/maak-test-processes-7010/kept.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'

[DRY-RUN]: printf 'x
'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/keep.log'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/*.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010/sub'
removed '/tmp/maak-test-processes-7010/sub/a.txt'
removed directory '/tmp/maak-test-processes-7010/sub'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/keep.txt'
removed directory '/tmp/maak-test-processes-7010'
mkdir: created directory '/tmp/maak-test-processes-7010'
removed '/tmp/maak-test-processes-7010/a.txt'
removed '/tmp/maak-test-processes-7010/keep.log'
removed directory '/tmp/maak-test-processes-7010'

+----------------------------------------------+
[📑 suite] Pretty multiline strings
  [🧪 test] dedent removes the common indentation
    ✅ got: hello
    ✅ got: a
  b
  [🧪 test] dedent drops surrounding blank lines
    ✅ got: a
b
  [🧪 test] dedent keeps interior blank lines
    ✅ got: a

b
  [🧪 test] dedent expands tabs
    ✅ got: a
b
  [🧪 test] dedent of a single word is the word
    ✅ got: word
  [🧪 test] indent adds spaces to every line
    ✅ got:   a
  b
  [🧪 test] indent can leave the first line flush
    ✅ got: a
  b
  [🧪 test] the text macro joins and dedents its lines
    ✅ got: x
y
    ✅ got: a
b
  [🧪 test] string-lines splits on newlines
    ✅ got: (a b)
  [🧪 test] unlines joins with newlines
    ✅ got: a
b
  [🧪 test] unwords joins with spaces
    ✅ got: a b
  [🧪 test] blank-line? recognises whitespace
    ✅ got: #f
    ✅ got: #t
    ✅ got: #t
  [🧪 test] leading-whitespace-count counts spaces and tabs
    ✅ got: 3
    ✅ got: 0
    ✅ got: 2
+----------------------------------------------+
[📑 suite] Load paths
  [🧪 test] split-load-path splits on colons
    ✅ got: (a b)
  [🧪 test] split-load-path drops empty entries
    ✅ got: (a b)
  [🧪 test] split-load-path handles the empty cases
    ✅ got: ()
    ✅ got: ()
  [🧪 test] with-load-path adds the directories
    ✅ got: #t
  [🧪 test] with-load-path restores the load path
    ✅ got: #f
  [🧪 test] with-load-path restores the load path after an error
    ✅ success catching error: misc-error: (#f deliberate failure () #f)
    ✅ got: #f
  [🧪 test] add-load-path! records the directory
    ✅ got: /tmp/maak-test-add
    ✅ got: #t
    ✅ got: #t
  [🧪 test] add-load-paths! adds every directory
    ✅ got: #t
    ✅ got: #t
+----------------------------------------------+
[📑 suite] Maak errors
  [🧪 test] make-maak-error builds a typed error
    ✅ got: #f
    ✅ got: #t
    ✅ got: hint
    ✅ got: message
  [🧪 test] raise-maak-error raises a catchable maak error
    ✅ got: boom
  [🧪 test] raise-maak-error carries its hint
    ✅ got: try this
  [🧪 test] find-maak-error returns #f for a foreign error
    ✅ got: #f
  [🧪 test] raise-maak-error is catchable with assert-error
    ✅ success catching error: %exception: (#<&maak-error message: "nope" hint: #f>)
+----------------------------------------------+
[📑 suite] Programs, arguments and jobs
  [🧪 test] run returns #t when the program exits with 0
    ✅ got: #t
  [🧪 test] run keeps a space inside one argument
    ✅ got: #t
  [🧪 test] run returns #f when a failure is allowed
    ✅ got: #f
  [🧪 test] run raises when a command fails
    ✅ success catching error: %exception: (#<&maak-error message: "command failed (exit code 3): sh -c 'exit 3'" hint: "Fix the command above, or run `maak --dry-run' to inspect it first.">)
  [🧪 test] run refuses an empty argument list
    ✅ success catching error: %exception: (#<&maak-error message: "run expects a non-empty list of strings, starting with the program" hint: "Write (run (list \"mkdir\" \"-p\" dir)) instead of one long command.">)
  [🧪 test] run refuses an argument that is not a string
    ✅ success catching error: %exception: (#<&maak-error message: "run expects a non-empty list of strings, starting with the program" hint: "Write (run (list \"mkdir\" \"-p\" dir)) instead of one long command.">)
  [🧪 test] a dry run does not start the program
    ✅ got: #f
  [🧪 test] an async run returns a job with a pid
    ✅ got: #t
  [🧪 test] wait-job is #t for a successful job
    ✅ got: #t
  [🧪 test] wait-job is #f for a failing job
    ✅ got: #f
  [🧪 test] job-exit-code reports the exit code
    ✅ got: 4
  [🧪 test] a job can be waited on twice
    ✅ got: #t
  [🧪 test] job-done? does not wait for a running job
    ✅ got: #f
  [🧪 test] job-done? is true once the job has finished
    ✅ got: #t
  [🧪 test] a background shell command is a job too
    ✅ got: #t
  [🧪 test] job-command keeps the command as written
    ✅ got: sh -c 'exit 0'
+----------------------------------------------+
[📑 suite] Pipelines and shell expansion
  [🧪 test] a pipeline feeds each stage into the next
    ✅ got: hello

  [🧪 test] a failing stage fails the whole pipeline
    ✅ got: #f
  [🧪 test] a pipeline raises when a stage fails
    ✅ success catching error: %exception: (#<&maak-error message: "pipeline failed: stage 1 (false) exited with code 1" hint: "Fix the failing stage above, or run `maak --dry-run' to inspect the pipeline first.">)
  [🧪 test] a pipeline with no stages is refused
    ✅ success catching error: %exception: (#<&maak-error message: "run-pipeline expects a non-empty list of stages: argument lists or (stage ...) forms" hint: "Write (run-pipeline (list (list \"cat\" file) (stage (list \"grep\" pattern) #:env '(\"LC_ALL=C\")))).">)
  [🧪 test] a pipeline with an empty stage is refused
    ✅ success catching error: %exception: (#<&maak-error message: "run-pipeline expects a non-empty list of stages: argument lists or (stage ...) forms" hint: "Write (run-pipeline (list (list \"cat\" file) (stage (list \"grep\" pattern) #:env '(\"LC_ALL=C\")))).">)
  [🧪 test] a dry run does not start the pipeline
    ✅ got: #f
  [🧪 test] a stage whose program is missing fails the pipeline
    ✅ got: #f
  [🧪 test] a stage takes environment variables of its own
    ✅ got: stage
  [🧪 test] a pipeline gives its environment to every stage
    ✅ got: shared
  [🧪 test] a stage's environment wins over the pipeline's
    ✅ got: stage
  [🧪 test] a dry run shows a stage's environment and sudo
    ✅ got: #t
  [🧪 test] a captured pipeline returns what every stage wrote
    ✅ got: (one
two
 ONE
TWO
)
  [🧪 test] a capture of more than a pipeful loses nothing
    ✅ got: 20000

  [🧪 test] a captured pipeline prints nothing itself
    ✅ got: 
  [🧪 test] a capture leaves no temporary file behind
    ✅ got: #f
  [🧪 test] a captured pipeline reports the stages that failed
    ✅ got: #f
  [🧪 test] a stage's tee file keeps what the stage wrote
    ✅ got: one
two

  [🧪 test] the stage after a tee reads the same bytes
    ✅ got: one

  [🧪 test] a tee on the last stage prints what it keeps
    ✅ got: hello

  [🧪 test] a tee that cannot be written is refused before the pipeline
    ✅ success catching error: %exception: (#<&maak-error message: "stage 1 (printf 'x\n') cannot record its output to /tmp/maak-test-processes-7010/missing/log.txt: No such file or directory: \"/tmp/maak-test-processes-7010/missing/log.txt\"" hint: "Point #:tee at a file the task may write, or drop it and read the pipeline's output another way.">)
  [🧪 test] a stage refuses a tee that is not a file name
    ✅ success catching error: %exception: (#<&maak-error message: "stage expects #:tee to name a file, got 42" hint: "Write (stage (list \"grep\" pattern) #:tee \"clean.txt\").">)
  [🧪 test] a background pipeline cannot capture its output
    ✅ success catching error: %exception: (#<&maak-error message: "a background pipeline cannot capture its output" hint: "Wait for the job and capture a foreground pipeline, or give the stage a file with (stage argv #:tee file).">)
  [🧪 test] a dry run shows the tee a stage writes to
    ✅ got: #t
  [🧪 test] a dry run of a captured pipeline returns an empty result
    ✅ got: ()
  [🧪 test] a stage refuses an empty argument list
    ✅ success catching error: %exception: (#<&maak-error message: "stage expects a non-empty list of strings, starting with the program" hint: "Write (stage (list \"grep\" pattern) #:env '(\"LC_ALL=C\")).">)
  [🧪 test] a pipeline refuses a stage that is not an argument list
    ✅ success catching error: %exception: (#<&maak-error message: "run-pipeline expects a non-empty list of stages: argument lists or (stage ...) forms" hint: "Write (run-pipeline (list (list \"cat\" file) (stage (list \"grep\" pattern) #:env '(\"LC_ALL=C\")))).">)
  [🧪 test] an async pipeline returns a job
    ✅ got: #t
  [🧪 test] a failing async pipeline fails its job
    ✅ got: #f
  [🧪 test] run expands a wildcard when asked to
    ✅ got: #t
  [🧪 test] run takes a wildcard literally without the opt-in
    ✅ got: #t
+----------------------------------------------+
[📑 suite] File helpers
  [🧪 test] rm-rf removes a directory and its contents
    ✅ got: #t
  [🧪 test] rm-rf is a dry run under dry-run?
    ✅ got: #t
  [🧪 test] rm-rf expands a wildcard when asked to
    ✅ got: #t
ℹ️ info - ran 6 tasks in: 0 seconds, 19249 microseconds

running unit tests from file: archive.scm, entrypoint: spec

mkdir: created directory '/tmp/maak-test-archive-tar-create-7010'
removed '/tmp/maak-test-archive-tar-create-7010/a.txt'
removed '/tmp/maak-test-archive-tar-create-7010/b.txt'
removed '/tmp/maak-test-archive-tar-create-7010/p.tar.gz'
removed directory '/tmp/maak-test-archive-tar-create-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-exclude-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-exclude-7010/tree'
removed '/tmp/maak-test-archive-tar-exclude-7010/tree/a.txt'
removed '/tmp/maak-test-archive-tar-exclude-7010/tree/b.log'
removed directory '/tmp/maak-test-archive-tar-exclude-7010/tree'
removed '/tmp/maak-test-archive-tar-exclude-7010/p.tar.gz'
removed directory '/tmp/maak-test-archive-tar-exclude-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-tree-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-tree-7010/tree'
removed '/tmp/maak-test-archive-tar-tree-7010/tree/a.txt'
removed directory '/tmp/maak-test-archive-tar-tree-7010/tree'
removed '/tmp/maak-test-archive-tar-tree-7010/p.tar.gz'
removed directory '/tmp/maak-test-archive-tar-tree-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-outside-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-outside-7010/tree'
removed '/tmp/maak-test-archive-tar-outside-7010/tree/a.txt'
removed directory '/tmp/maak-test-archive-tar-outside-7010/tree'
removed '/tmp/maak-test-archive-tar-outside-7010/p.tar.gz'
removed directory '/tmp/maak-test-archive-tar-outside-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-extract-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-extract-7010/out'
removed '/tmp/maak-test-archive-tar-extract-7010/a.txt'
removed '/tmp/maak-test-archive-tar-extract-7010/p.tar.gz'
removed '/tmp/maak-test-archive-tar-extract-7010/out/a.txt'
removed directory '/tmp/maak-test-archive-tar-extract-7010/out'
removed directory '/tmp/maak-test-archive-tar-extract-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-strip-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-strip-7010/p'
mkdir: created directory '/tmp/maak-test-archive-tar-strip-7010/out'
removed '/tmp/maak-test-archive-tar-strip-7010/p/a.txt'
removed directory '/tmp/maak-test-archive-tar-strip-7010/p'
removed '/tmp/maak-test-archive-tar-strip-7010/p.tar.gz'
removed '/tmp/maak-test-archive-tar-strip-7010/out/a.txt'
removed directory '/tmp/maak-test-archive-tar-strip-7010/out'
removed directory '/tmp/maak-test-archive-tar-strip-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-xz-7010'
removed '/tmp/maak-test-archive-tar-xz-7010/a.txt'
removed '/tmp/maak-test-archive-tar-xz-7010/p.tar.xz'
removed directory '/tmp/maak-test-archive-tar-xz-7010'
mkdir: created directory '/tmp/maak-test-archive-tar-list-7010'
a.txt
removed '/tmp/maak-test-archive-tar-list-7010/a.txt'
removed '/tmp/maak-test-archive-tar-list-7010/p.tar.gz'
removed directory '/tmp/maak-test-archive-tar-list-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-create-7010'
  adding: a.txt (stored 0%)
removed '/tmp/maak-test-archive-zip-create-7010/a.txt'
removed '/tmp/maak-test-archive-zip-create-7010/p.zip'
removed directory '/tmp/maak-test-archive-zip-create-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-extract-7010'
  adding: a.txt (stored 0%)
mkdir: created directory '/tmp/maak-test-archive-zip-extract-7010/out'
Archive:  /tmp/maak-test-archive-zip-extract-7010/p.zip
 extracting: /tmp/maak-test-archive-zip-extract-7010/out/a.txt  
removed '/tmp/maak-test-archive-zip-extract-7010/a.txt'
removed '/tmp/maak-test-archive-zip-extract-7010/p.zip'
removed '/tmp/maak-test-archive-zip-extract-7010/out/a.txt'
removed directory '/tmp/maak-test-archive-zip-extract-7010/out'
removed directory '/tmp/maak-test-archive-zip-extract-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-exclude-7010'
  adding: a.txt (stored 0%)
removed '/tmp/maak-test-archive-zip-exclude-7010/a.txt'
removed '/tmp/maak-test-archive-zip-exclude-7010/b.log'
removed '/tmp/maak-test-archive-zip-exclude-7010/p.zip'
removed directory '/tmp/maak-test-archive-zip-exclude-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-recursive-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-recursive-7010/src'
  adding: src/ (stored 0%)
  adding: src/a.txt (stored 0%)
removed '/tmp/maak-test-archive-zip-recursive-7010/src/a.txt'
removed directory '/tmp/maak-test-archive-zip-recursive-7010/src'
removed '/tmp/maak-test-archive-zip-recursive-7010/p.zip'
removed directory '/tmp/maak-test-archive-zip-recursive-7010'
mkdir: created directory '/tmp/maak-test-archive-zip-list-7010'
  adding: a.txt (stored 0%)
Archive:  /tmp/maak-test-archive-zip-list-7010/p.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        3  11-04-2026 23:12   a.txt
---------                     -------
        3                     1 file
removed '/tmp/maak-test-archive-zip-list-7010/a.txt'
removed '/tmp/maak-test-archive-zip-list-7010/p.zip'
removed directory '/tmp/maak-test-archive-zip-list-7010'

+----------------------------------------------+
[📑 suite] Archive argument lists
  [🧪 test] a .tar.gz name selects gzip
    ✅ got: (tar -c -z -f p.tar.gz src)
  [🧪 test] a .tar.xz name selects xz
    ✅ got: (tar -c -J -f p.tar.xz src)
  [🧪 test] a .tar name selects no compression
    ✅ got: (tar -c -f p.tar src)
  [🧪 test] a .tar.zst name selects zstd
    ✅ got: (tar -c --zstd -f p.tar.zst src)
  [🧪 test] the short extension names select their compressor
    ✅ got: ((tar -c -z -f p.tgz src) (tar -c -j -f p.tbz2 src) (tar -c -J -f p.txz src) (tar -c --zstd -f p.tzst src))
  [🧪 test] a compression symbol is accepted too
    ✅ got: (-z)
  [🧪 test] an explicit compression wins over the extension
    ✅ got: (tar -c -j -f p.tar.gz src)
  [🧪 test] gzip is accepted by name and by alias
    ✅ got: (-z)
  [🧪 test] bzip2 is accepted by name and by alias
    ✅ got: (-j)
  [🧪 test] xz has a single spelling
    ✅ got: (-J)
  [🧪 test] zstd is accepted by name and by alias
    ✅ got: (--zstd)
  [🧪 test] no compression is the empty flag list
    ✅ got: ()
  [🧪 test] an unknown compression is refused
    ✅ success catching error: %exception: (#<&maak-error message: "unknown tar compression: rar" hint: "Use one of: none, gz, bz2, xz, zstd.">)
  [🧪 test] tar options precede the files
    ✅ got: (tar -c -z -v -f p.tar.gz -C src --exclude=*.o .)
  [🧪 test] tar extraction names the tree and the strip count
    ✅ got: (tar -x -f p.tar.gz -C out --strip-components=1)
  [🧪 test] tar extraction is verbose when asked
    ✅ got: (tar -x -v -f p.tar.gz)
  [🧪 test] tar extraction refuses a negative strip count
    ✅ success catching error: %exception: (#<&maak-error message: "tar-extract expects #:strip-components to be a non-negative integer, got -1" hint: "Use 0 to keep the archive's paths, or 1 to drop its top-level directory.">)
  [🧪 test] tar listing is a separate argv
    ✅ got: (tar -t -f p.tar.gz)
  [🧪 test] zip passes exclude patterns after the files
    ✅ got: (zip -r p.zip src -x *.o *.go)
  [🧪 test] zip can store bare names and be quiet
    ✅ got: (zip -q -r -j p.zip a.txt)
  [🧪 test] zip extraction defaults to overwriting
    ✅ got: (unzip -o p.zip -d out)
  [🧪 test] zip extraction can keep existing files
    ✅ got: (unzip -n p.zip)
  [🧪 test] zip listing is its own argv
    ✅ got: (unzip -l p.zip)
  [🧪 test] an empty tar name is refused
    ✅ success catching error: %exception: (#<&maak-error message: "tar-create expects the archive file to write" hint: "Write (tar-create \"project-1.0.tar.gz\" (list \"src\" \"README.org\")).">)
  [🧪 test] an empty zip name is refused
    ✅ success catching error: %exception: (#<&maak-error message: "zip-create expects the archive file to write" hint: "Write (zip-create \"project-1.0.zip\" (list \"src\" \"README.org\")).">)
  [🧪 test] an empty file list is refused by tar
    ✅ success catching error: %exception: (#<&maak-error message: "tar-create expects at least one file to put in the archive" hint: "Name the paths to pack, as in (list \"src\" \"README.org\").">)
  [🧪 test] an empty file list is refused by zip
    ✅ success catching error: %exception: (#<&maak-error message: "zip-create expects at least one file to put in the archive" hint: "Name the paths to pack, as in (list \"src\" \"README.org\").">)
  [🧪 test] a dry run prints the command it would run
    ✅ got: tar -c -z -f /tmp/maak-test-dry.tar.gz src
+----------------------------------------------+
[📑 suite] Real tar archives
  [🧪 test] a created tarball lists its files
    ✅ got: a.txt
  [🧪 test] an excluded file is not in the tarball
    ✅ got: a.txt
  [🧪 test] packing a tree does not fail on the tarball being written
    ✅ got: #t
  [🧪 test] the tarball lands in the task directory, not the packed tree
    ✅ got: (#t #f)
  [🧪 test] a tarball can be extracted
    ✅ got: hello
  [🧪 test] a strip count removes the top-level directory
    ✅ got: deep
  [🧪 test] an xz tarball round-trips
    ✅ got: a.txt
  [🧪 test] tar-list succeeds on a real archive
    ✅ got: #t
+----------------------------------------------+
[📑 suite] Real zip archives
  [🧪 test] a created zip lists its files
    ✅ got: a.txt
  [🧪 test] a zip can be extracted
    ✅ got: hello
  [🧪 test] an excluded file is not in the zip
    ✅ got: #f
  [🧪 test] a directory tree is added recursively
    ✅ got: src/a.txt
  [🧪 test] zip-list succeeds on a real archive
    ✅ got: #t
ℹ️ info - ran 3 tasks in: 0 seconds, 16165 microseconds

running unit tests from file: integration.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] The launcher as a process
  [🧪 test] this checkout's Maak file loads through the launcher beside it
    ✅ got: 0
  [🧪 test] the listing names a task only this checkout's Maak file defines
    ✅ got: (0 #t)
  [🧪 test] the help text is read from the resources the launcher ships beside itself
    ✅ got: (0 #t)
  [🧪 test] the version banner is printed and the run succeeds
    ✅ got: (0 #t)
  [🧪 test] a task of a named Maak file runs and reports its own output
    ✅ got: (0 #t #t)
  [🧪 test] a failing task exits non-zero and leaves its message on standard error
    ✅ got: (1 #t #f)
  [🧪 test] a task the Maak file does not define is refused, and the run says which exist
    ✅ got: (1 #t)
  [🧪 test] -C enters the directory before the Maak file is looked for
    ✅ got: (0 #t)
  [🧪 test] a failure stops the tasks after it
    ✅ got: (1 #f)
  [🧪 test] --keep-going runs the rest and still exits non-zero
    ✅ got: (1 #t)
  [🧪 test] -j runs the tasks named and prints their output in that order
    ✅ got: (0 #t #t #t)
  [🧪 test] -j with a failing task exits non-zero and says which task failed
    ✅ got: (1 #t #t)
  [🧪 test] -j 1 runs the tasks one after another and still succeeds
    ✅ got: (0 #t #t)
  [🧪 test] a job count that is not a positive number is refused
    ✅ got: (1 #t)
  [🧪 test] several tasks named one word each after a `--' all run
    ✅ got: (0 #t #t)
  [🧪 test] a comma separated list names the same run
    ✅ got: (0 #t #t)
  [🧪 test] the words after a task name are its arguments
    ✅ got: (0 #t)
  [🧪 test] a `--' sets the arguments apart and reads exactly the same
    ✅ got: (0 #t)
  [🧪 test] an argument that looks like an option stays an argument
    ✅ got: (0 #t)
  [🧪 test] a second bare word is an argument, never a second task
    ✅ got: (0 #t #f)
  [🧪 test] -t names the tasks, so the other words are their arguments
    ✅ got: (0 #t)
  [🧪 test] --tasks names several tasks, the way the library reads them
    ✅ got: (0 #t #t)
  [🧪 test] a word that names a task, passed as an argument, is pointed out
    ✅ got: (1 #t #t)
  [🧪 test] a `--' ends the options, so a late one is read as a task
    ✅ got: (1 #t)
  [🧪 test] a directory with no Maak file is refused rather than run
    ✅ got: (1 #t)
ℹ️ info - ran 1 tasks in: 0 seconds, 1692 microseconds

finished running tests


--------------------------------------------------------------

Maak 0.12.0: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/maak/trunk/maak.scm

Executing Maak tasks: test


--------------------------------------------------------------

=> Running Maak task: test

  Run the project's unit test suite with Veritas.

The specs live under test/veritas/unit and are located by the Veritas runner,
which needs both the library sources and the test tree on the load path.

Executing: guix shell -m manifest.scm -- env VERITAS_TEST_MODULE=veritas VERITAS_TEST_TOP_DIR=test VERITAS_TEST_TYPE=unit VERITAS_RUN_BENCHMARKS=false guile -L ./src -L ./test -c '(exit ((@ (veritas runner) run-tests)))'

→ running command: cd /etc/byggsteg/job-clone/maak/trunk && sudo guix time-machine --channels=channels.scm -- shell -f guix.scm -- maak deploy



--------------------------------------------------------------

Maak 0.12.0: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/maak/trunk/maak.scm

Executing Maak tasks: deploy


--------------------------------------------------------------

=> Running Maak task: deploy

  Generate documentation for the project and publish to web directory.
API documentation saved to doc/api
index.texi:2431: warning: @end should only appear at the beginning of a line
index.texi:8120: warning: @end should only appear at the beginning of a line
index.texi: warning: must specify a title with a title command or @top

Executing: guix shell -m manifest.scm -- documenta api ./src/maak &&  texi2any -v --html --css-ref=https://jointhefreeworld.org/static/css/jointhefreeworld.css -o index_html ./doc/api/index.texi
renamed './index_html' -> './doc/api-dist'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/API.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005farchive.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fcontainer.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fdsl.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fgit.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fguix.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fi18n.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fmaak.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fmain.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fnet.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fniri.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fnix.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fshell.html'
removed '/srv/http/jointhefreeworld.org/api-docs/maak/maak_005fversion.html'
removed directory '/srv/http/jointhefreeworld.org/api-docs/maak'
renamed 'doc/api-dist' -> '/srv/http/jointhefreeworld.org/api-docs/maak'
removed 'doc/api/index.texi'
removed directory 'doc/api'
removed directory 'doc'
inspect the job's lambda expression
(lambda()
  (define (time-machine cmd)
          (let ((time-cmd (string-append "cd "
                                         "/etc/byggsteg/job-clone/"
                                         "maak/trunk"
                                         " && "
                                         "sudo guix time-machine --channels=channels.scm --"
                                         " shell -f guix.scm -- ~a")))
            (format #f time-cmd cmd)))

  (list
   `((task . "trivial")
     (project . "maak")
     (branch-name . "trunk")
     (clone-url . "https://codeberg.org/jjba23/maak.git")
     (trivial-cmds . ,(list (time-machine "maak test"))))
   `((task . "trivial")
     (project . "maak")
     (branch-name . "trunk")
     (clone-url . "https://codeberg.org/jjba23/maak.git")
     (trivial-cmds . ,(list (time-machine "maak deploy"))))))