anchor.diff:     (shell "! false")))
   
   (define-test while
  -    (let ((count 0))
  -      (is (capture (:streams '(:stdout)) (evaluate-constant-shell-string "while [ ,count -ne 3 ]; do echo ,(incf count) ; done" :readtable *splice-table*))
  -          (format nil "1~%2~%3~%")
  -          :test #'equal
  -          "Basic while loop test")))
  +  (let ((count 0))
  +    (is (capture (:streams '(:stdout)) (evaluate-constant-shell-string "while [ ,count -ne 3 ]; do echo ,(incf count) ; done" :readtable *splice-table*))
  +        (format nil "1~%2~%3~%")
  +        :test #'equal
  +        "Basic while loop test")))
   
   (define-test empty
     (exit-ok
  
positive.code:         (progn
            (fail (format nil "Strings match ~A" args))
            1))))
  
  (defun run (s &optional description)
    (ok (exit-info-true-p
  
negative.code:   (exit-ok
     (shell (format nil " ~C ~C " #\newline #\tab))
     "Miscellaneous whitespace is truthy"))
  
  ;; We might normally just use wc, but the output of wc can work
  ;; differely on some operating systems.
  (define-builtin -shcl-char-count ()
    (let ((count 0))
      (loop :for char = (read-char *standard-input* nil :eof)
         :until (eq char :eof) :do
         (incf count))
      (format t "~A~%" count)
      0))
  
  (define-test pipeline
    (exit-ok
     (shell "false | false | true")
     "Last exit code wins")
  
    (exit-fail
     (shell "true | true | false")
     "Last exit code wins")
  
    (exit-ok
     (shell "echo foob | -shcl-assert-stdin-equal foob")
     "One-stage pipeline works")
  
    (exit-ok
     (shell "echo foob | -shcl-char-count | -shcl-assert-stdin-equal 5")
     "Two-stage pipeline works")
  
    (exit-ok
     (shell "{ echo foo >&2; } 2>&1 | -shcl-assert-stdin-equal foo")
     "Nested redirects work"))
  