# 1. nested includes in subdirectories mkdir -p b/c/d ; printf '2010/1/1\n (D) 1\n' >b/c/d/d.journal ; printf '2010/1/1\n (C) 1\n!include d/d.journal\n' >b/c/c.journal ; printf '2010/1/1\n (B) 1\n!include c/c.journal\n' >b/b.journal ; printf '2010/1/1\n (A) 1\n!include b/b.journal\n' >a.journal ; hledger -f a.journal print; rm -rf a.journal b >>> 2010-01-01 (A) 1 2010-01-01 (B) 1 2010-01-01 (C) 1 2010-01-01 (D) 1 >>>2 >>>=0 # 2. including other formats hledger -f - print <<< 2016/1/1 (x) 1 include a.timeclock include b.timedot >>> 2016-01-01 (x) 1.00 2016-01-01 * 12:00-16:00 (a:aa) 4.00h 2016-01-01 * (b.bb) 1.00 >>>=0 # 3. include glob patterns printf '2018/01/01\n (A) 1\n' >ab.journal; printf '2018/01/01\n (B) 1' >bb.journal; hledger -f - print; rm -f ab.journal bb.journal <<< include *b.journal >>> 2018-01-01 (A) 1 2018-01-01 (B) 1 >>>=0 # 4. include invalid glob patterns hledger -f - print <<< include [.journal >>>=1 # 5. include nonexsitant file hledger -f - print <<< include doesnotexist.journal >>>=1 # 6. include relative to home printf '2018/01/01\n (A) 1\n' >included.journal; HOME="$PWD" hledger -f - print; rm -rf included.journal <<< include ~/included.journal >>> 2018-01-01 (A) 1 >>>2 >>>=0 # The next tests require hard coded file names, so are not concurrent-safe. # They use different file names so a single concurrent shelltest invocation will be fine. # 7. test that order of include files is maintained printf 'include _b\n' >_a; touch _b; hledger -f _a stats | grep _ | sed -e 's%.*/%%'; rm -rf _a _b >>> _a _b >>>2 >>>=0 # 8. and with --auto code path printf 'include _d\n=\n' >_c; touch _d; hledger -f _c stats --auto | grep _ | sed -e 's%.*/%%'; rm -rf _c _d >>> _c _d >>>2 >>>=0