imp: balanced, balancednoautoconversion: use new error format (#1436)

This commit is contained in:
Simon Michael 2022-07-10 12:12:03 +01:00
parent b7e6583a72
commit 1da7d4b7f7
7 changed files with 38 additions and 33 deletions

View File

@ -18,7 +18,6 @@ module Hledger.Data.Balancing
, isTransactionBalanced , isTransactionBalanced
, balanceTransaction , balanceTransaction
, balanceTransactionHelper , balanceTransactionHelper
, annotateErrorWithTransaction
-- * journal balancing -- * journal balancing
, journalBalanceTransactions , journalBalanceTransactions
, journalCheckBalanceAssertions , journalCheckBalanceAssertions
@ -36,7 +35,7 @@ import Data.Foldable (asum)
import Data.Function ((&)) import Data.Function ((&))
import qualified Data.HashTable.Class as H (toList) import qualified Data.HashTable.Class as H (toList)
import qualified Data.HashTable.ST.Cuckoo as H import qualified Data.HashTable.ST.Cuckoo as H
import Data.List (intercalate, partition, sortOn) import Data.List (partition, sortOn)
import Data.List.Extra (nubSort) import Data.List.Extra (nubSort)
import Data.Maybe (fromJust, fromMaybe, isJust, isNothing, mapMaybe) import Data.Maybe (fromJust, fromMaybe, isJust, isNothing, mapMaybe)
import qualified Data.Set as S import qualified Data.Set as S
@ -163,15 +162,21 @@ balanceTransactionHelper bopts t = do
-- | Generate a transaction balancing error message, given the transaction -- | Generate a transaction balancing error message, given the transaction
-- and one or more suberror messages. -- and one or more suberror messages.
transactionBalanceError :: Transaction -> [String] -> String transactionBalanceError :: Transaction -> [String] -> String
transactionBalanceError t errs = transactionBalanceError t errs = printf (unlines
annotateErrorWithTransaction t $ [ "unbalanced transaction: %s:",
intercalate "\n" $ "could not balance this transaction:" : errs "%s",
"\n%s"
annotateErrorWithTransaction :: Transaction -> String -> String ])
annotateErrorWithTransaction t s = (sourcePosPairPretty $ tsourcepos t)
unlines [ sourcePosPairPretty $ tsourcepos t, s (textChomp ex)
, T.unpack . T.stripEnd $ showTransaction t (chomp $ unlines errs)
] where
(_f,_l,_mcols,ex) = makeTransactionErrorExcerpt t finderrcols
where
finderrcols _ = Nothing
-- finderrcols t = Just (1, Just w)
-- where
-- w = maximumDef 1 $ map T.length $ T.lines $ showTransaction t
-- | Infer up to one missing amount for this transactions's real postings, and -- | Infer up to one missing amount for this transactions's real postings, and
-- likewise for its balanced virtual postings, if needed; or return an error -- likewise for its balanced virtual postings, if needed; or return an error

View File

@ -1039,7 +1039,7 @@ account1 assets:bank:checking
fields date, description, account2, amount fields date, description, account2, amount
$ ./csvtest.sh $ ./csvtest.sh
>2 /could not balance this transaction/ >2 /unbalanced transaction/
>=1 >=1
## . ## .

View File

@ -46,8 +46,8 @@ Here is the current status
|--------------------------|------------|------|-----------|---------|----------|-----------------| |--------------------------|------------|------|-----------|---------|----------|-----------------|
| accounts | ✓ | ✓ | ✓ | ✓✓ | | | | accounts | ✓ | ✓ | ✓ | ✓✓ | | |
| assertions | ✓ | ✓ | ✓ | ✓✓ | | | | assertions | ✓ | ✓ | ✓ | ✓✓ | | |
| balanced | | ✓ | - | ✓ | | | | balanced | | ✓ | - | ✓ | | |
| balancednoautoconversion | | ✓ | - | ✓ | | | | balancednoautoconversion | | ✓ | - | ✓ | | |
| commodities | ✓ | ✓ | ✓(approx) | ✓✓ | | | | commodities | ✓ | ✓ | ✓(approx) | ✓✓ | | |
| ordereddates | ✓ | ✓ | ✓ | ✓✓ | | | | ordereddates | ✓ | ✓ | ✓ | ✓✓ | | |
| parseable | ✓ | ✓ | ✓ | ✓✓ | | | | parseable | ✓ | ✓ | ✓ | ✓✓ | | |

View File

@ -1,9 +1,9 @@
$$$ hledger check -f balanced.j $ hledger check -f balanced.j
>>>2 /hledger: Error: .*balanced.j:3-4 >2 /hledger: Error: unbalanced transaction: .*balanced.j:3-4:
could not balance this transaction: 3 | 2022-01-01
| a 1
real postings' sum should be 0 but is: 1 real postings' sum should be 0 but is: 1
2022-01-01
a 1
/ /
>>>= 1 >= 1

View File

@ -1,11 +1,11 @@
$$$ hledger check balancednoautoconversion -f balancednoautoconversion.j $ hledger check balancednoautoconversion -f balancednoautoconversion.j
>>>2 /hledger: Error: .*balancednoautoconversion.j:6-8 >2 /hledger: Error: unbalanced transaction: .*balancednoautoconversion.j:6-8:
could not balance this transaction: 6 | 2022-01-01
| a 1 A
| b -1 B
real postings' sum should be 0 but is: 1 A real postings' sum should be 0 but is: 1 A
-1 B -1 B
2022-01-01
a 1 A
b -1 B
/ /
>>>= 1 >= 1

View File

@ -323,7 +323,7 @@ $ hledger -f- register --auto
# 16. No, transaction must be balanced both with and without auto postings. # 16. No, transaction must be balanced both with and without auto postings.
$ hledger -f- print -x --auto $ hledger -f- print -x --auto
>2 /could not balance/ >2 /unbalanced/
>=1 >=1
# 17. Commodity display styles are applied to auto posting amounts. # 17. Commodity display styles are applied to auto posting amounts.

View File

@ -123,12 +123,12 @@ $ hledger -f- print
b 1B b 1B
$ hledger -f- print $ hledger -f- print
>2 >2
hledger: Error: -:1-3 hledger: Error: unbalanced transaction: -:1-3:
could not balance this transaction: 1 | 2020-01-01
| a 1A
| b 1B
real postings all have the same sign real postings all have the same sign
2020-01-01
a 1A
b 1B
>=1 >=1