From 8f514ac16d45dd400bf34dc9df6888813f5ee298 Mon Sep 17 00:00:00 2001 From: Jonathan Dowland Date: Tue, 27 Feb 2024 18:45:43 +0000 Subject: [PATCH] ;test:import: test case for match groups (#2158) Add a test which captures the issue of overlapping scope described in GitHub issue #2158. Signed-off-by: Jonathan Dowland --- hledger-lib/Hledger/Read/RulesReader.hs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hledger-lib/Hledger/Read/RulesReader.hs b/hledger-lib/Hledger/Read/RulesReader.hs index ee5cd0a8e..b8681aca8 100644 --- a/hledger-lib/Hledger/Read/RulesReader.hs +++ b/hledger-lib/Hledger/Read/RulesReader.hs @@ -1531,4 +1531,20 @@ tests_RulesReader = testGroup "RulesReader" [ ] + -- testing match groups (#2158) + ,testGroup "hledgerFieldValue" $ + let rules = mkrules $ defrules + { rcsvfieldindexes=[ ("date",1), ("description",2) ] + , rassignments=[ ("account2","equity"), ("amount1","1") ] + -- ConditionalBlocks here are in reverse order: mkrules reverses the list + , rconditionalblocks=[ CB { cbMatchers=[FieldMatcher None "%description" (toRegex' "PREFIX (.*) - (.*)")] + , cbAssignments=[("account1","account:\\1:\\2")] } + , CB { cbMatchers=[FieldMatcher None "%description" (toRegex' "PREFIX (.*)")] + , cbAssignments=[("account1","account:\\1"), ("comment1","\\1")] } + ] + } + record = ["2019-02-01","PREFIX Text 1 - Text 2"] + in [ testCase "scoped match groups forwards" $ hledgerFieldValue rules record "account1" @?= (Just "account:Text 1:Text 2") + , testCase "scoped match groups backwards" $ hledgerFieldValue rules record "comment1" @?= (Just "Text 1 - Text 2") + ] ]