=== path
--- stdout
<SB>/lanes/exhausted.sentinel--- stderr
rc=0
--- lanes dir
(no lanes dir)
=== raised: nothing standing
--- stdout
--- stderr
rc=1
--- lanes dir
(no lanes dir)
=== task_log: nothing standing
--- stdout
--- stderr
rc=0
--- lanes dir
(no lanes dir)
=== clear: nothing standing
--- stdout
--- stderr
rc=0
--- lanes dir
(no lanes dir)
=== raise: the lanes dir does not exist yet (ensured), the winner
--- stdout
--- stderr
rc=0
--- calls
CALL lanes_ensure_dir
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    <SB>/logs/task-T-1.log
=== raised: standing
--- stdout
--- stderr
rc=0
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    <SB>/logs/task-T-1.log
=== task_log: standing
--- stdout
<SB>/logs/task-T-1.log
--- stderr
rc=0
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    <SB>/logs/task-T-1.log
=== raise: the loser leaves the winner's record alone
--- stdout
--- stderr
rc=1
--- calls
CALL lanes_ensure_dir
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    <SB>/logs/task-T-1.log
=== clear: standing
--- stdout
--- stderr
rc=0
--- lanes dir
./
=== raised: after clear
--- stdout
--- stderr
rc=1
--- lanes dir
./
=== raise: no task log
--- stdout
--- stderr
rc=0
--- calls
CALL lanes_ensure_dir
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    
=== task_log: an empty record
--- stdout

--- stderr
rc=0
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    
=== raise: no lanes dir and no lanes_ensure_dir -> lost
--- stdout
--- stderr
rc=1
--- lanes dir
(no lanes dir)
=== raise: a failing lanes_ensure_dir is not fatal
--- stdout
--- stderr
rc=0
--- calls
CALL lanes_ensure_dir (fails)
--- lanes dir
./
./exhausted.sentinel/
./exhausted.sentinel/pid:
    <PID>
./exhausted.sentinel/task_log:
    <SB>/l.log
=== a sentinel with no record (another writer's half-made dir)
--- stdout
rc=0
--- stderr
rc=0
--- lanes dir
./
./exhausted.sentinel/
=== a FILE where the sentinel dir goes
--- stdout
raise rc=1
raised rc=1
--- stderr
rc=0
--- calls
CALL lanes_ensure_dir
--- lanes dir
./
=== a lanes dir with a space
--- stdout
<SB>/a b.log
<SB>/lanes with space/exhausted.sentinel
--- stderr
rc=0
--- calls
CALL lanes_ensure_dir
--- lanes dir
./
=== set -u: LANES_DIR unset
--- stdout
--- stderr
<where>: LANES_DIR: unbound variable
rc=1
--- lanes dir
./
=== set -u: raised with LANES_DIR unset
--- stdout
--- stderr
<where>: LANES_DIR: unbound variable
rc=1
--- lanes dir
./
