clerk/tests/journal/validate.sh (view raw)
| 1 | #!/bin/bash |
| 2 | |
| 3 | cd "$(dirname "$0")/../.." |
| 4 | |
| 5 | has_ledger=0 |
| 6 | has_hledger=0 |
| 7 | command -v ledger &>/dev/null && has_ledger=1 |
| 8 | command -v hledger &>/dev/null && has_hledger=1 |
| 9 | |
| 10 | [[ $has_ledger -eq 0 && $has_hledger -eq 0 ]] && { |
| 11 | echo "Neither ledger nor hledger installed" |
| 12 | exit 1 |
| 13 | } |
| 14 | |
| 15 | passed=0 |
| 16 | failed=0 |
| 17 | |
| 18 | for f in tests/journal/*; do |
| 19 | [[ -f "$f" ]] || continue |
| 20 | name=$(basename "$f") |
| 21 | |
| 22 | [[ "$name" == broken-* ]] && continue |
| 23 | [[ "$name" == "actual-1ktxns-100accts.journal" ]] && continue |
| 24 | [[ "$name" == *.sh ]] && continue |
| 25 | |
| 26 | if [[ $has_ledger -eq 1 ]]; then |
| 27 | if timeout 2 ledger -f "$f" print >/dev/null 2>&1; then |
| 28 | echo "LEDGER OK $name" |
| 29 | passed=$((passed + 1)) |
| 30 | else |
| 31 | echo "LEDGER FAIL $name" |
| 32 | failed=$((failed + 1)) |
| 33 | fi |
| 34 | fi |
| 35 | |
| 36 | # hledger only for .dat files |
| 37 | if [[ $has_hledger -eq 1 && "$name" == *.dat ]]; then |
| 38 | if timeout 2 hledger -f "$f" print >/dev/null 2>&1; then |
| 39 | echo "HLEDGER OK $name" |
| 40 | else |
| 41 | echo "HLEDGER FAIL $name" |
| 42 | fi |
| 43 | fi |
| 44 | done |
| 45 | |
| 46 | echo "" |
| 47 | echo "Summary: $passed passed, $failed failed" |
| 48 | [[ $failed -eq 0 ]] && exit 0 || exit 1 |