From 665e2d0a55f4563493dfa65bf705684664ad1f46 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Mon, 8 Dec 2025 09:36:13 -1000 Subject: [PATCH] fix:journal:include: relative includes from a symlinked file work again [#2503] --- hledger-lib/Hledger/Read/JournalReader.hs | 5 +++-- hledger/test/journal/include/include.test | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index ec967576e..9ee975d99 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -319,7 +319,7 @@ includedirectivep iopts = do ) <|> errorNoArg let (mprefix,glb) = splitReaderPrefix prefixedglob - parentf <- sourcePosFilePath pos -- a little slow, don't do too often + parentf <- sourcePosFilePath pos when (null $ dbg6 (parentf <> " include: glob pattern") glb) errorNoArg -- Find the file or glob-matched files (just the ones from this include directive), with some IO error checking. @@ -379,7 +379,8 @@ includedirectivep iopts = do expandedglob <- lift $ expandHomePath globpattern & handleIOError off "failed to expand ~" -- get the directory of the including file - let cwd = takeDirectory parentf + -- need to canonicalise a symlink parentf so takeDirectory works correctly [#2503] + cwd <- fmap takeDirectory <$> liftIO $ canonicalizePath parentf -- Don't allow 3 or more stars. when ("***" `isInfixOf` expandedglob) $ diff --git a/hledger/test/journal/include/include.test b/hledger/test/journal/include/include.test index 48e1a930f..20b75dd17 100644 --- a/hledger/test/journal/include/include.test +++ b/hledger/test/journal/include/include.test @@ -177,7 +177,6 @@ $ touch /tmp/unreadable.$$ && chmod -r /tmp/unreadable.$$ && hledger -f /tmp/un # # My ~/.hledger.journal is a symlink to .etc/.hledger.journal -# ** 21. But I did find this possibly related regression in 1.50.4 & 1.51: -# Failing test: -# $ hledger -f symlink-to-relative-include.j files -# > // +# ** 21. But I did find this possibly related regression in 1.50.4 & 1.51 [#2503]. +$ hledger -f symlink-to-relative-include.j files +> //