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 +> //