From d75eefea80a606f92e922f82b88142b5721bd325 Mon Sep 17 00:00:00 2001 From: Vladislav Zavialov Date: Sat, 2 Nov 2024 21:17:51 +0300 Subject: [PATCH] [#226] Change output formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: multiple issues with the CLI output 1. In the --help output, metavars GLOB_PATTERN and REPOSITORY_TYPE used spaces instead of underscores. Variables typically don't contain spaces in their names, so it looked confusing. 2. Incorrect or unintuitive coloring of the output. For example, filenames were dim even though they're important and should stand out, the report of success wasn't green, error messages weren't red, etc. 3. Excessive indentation and empty lines that made it difficult to visually parse the error report. Also the use of the exotic '➥' character that looks bad in many font configurations. 4. Filenames and line numbers were far apart, making it impossible to Ctrl+Click to jump to the source of the error. 5. In case of connection failure, the output was too verbose and platform-dependent. Solution: 1. Include the filename in positions returned by the scanner. 2. Adjust the pretty-printing functions and update test output. 3. Extend VerifyError with a constructor for connection failures. --- CHANGES.md | 4 + docs/output-sample/output-sample.png | Bin 99091 -> 190631 bytes package.yaml | 2 + src/Xrefcheck/CLI.hs | 11 +- src/Xrefcheck/Command.hs | 11 +- src/Xrefcheck/Core.hs | 27 +-- src/Xrefcheck/Scan.hs | 33 ++- src/Xrefcheck/Scanners/Markdown.hs | 106 +++++---- src/Xrefcheck/Scanners/Symlink.hs | 13 +- src/Xrefcheck/System.hs | 31 +++ src/Xrefcheck/Verify.hs | 137 +++++++---- tests/Test/Xrefcheck/IgnoreAnnotationsSpec.hs | 27 +-- tests/Test/Xrefcheck/IgnoreRegexSpec.hs | 5 +- tests/Test/Xrefcheck/TooManyRequestsSpec.hs | 6 +- tests/Test/Xrefcheck/TrailingSlashSpec.hs | 5 +- tests/Test/Xrefcheck/Util.hs | 3 + tests/Test/Xrefcheck/UtilRequests.hs | 2 +- tests/golden/check-anchors/check-anchors.bats | 4 +- tests/golden/check-anchors/expected1.gold | 49 ++-- tests/golden/check-anchors/expected2.gold | 35 +-- .../check-autolinks/check-autolinks.bats | 2 +- tests/golden/check-autolinks/expected.gold | 23 +- .../check-backslash/check-backslash.bats | 2 +- tests/golden/check-backslash/expected.gold | 28 +-- .../check-case-sensitivity-anchor.bats | 4 +- .../expected1.gold | 42 ++-- .../expected2.gold | 51 ++-- .../check-case-sensitivity-path.bats | 4 +- .../check-case-sensitivity-path/expected.gold | 130 ++++------- tests/golden/check-cli/check-cli.bats | 16 +- tests/golden/check-cli/expected1.gold | 14 +- tests/golden/check-cli/expected2.gold | 14 +- tests/golden/check-cli/expected3.gold | 14 +- tests/golden/check-color/check-color.bats | 10 +- tests/golden/check-color/expected-color.gold | 6 +- .../golden/check-color/expected-no-color.gold | 4 +- .../check-footnotes/check-footnotes.bats | 4 +- tests/golden/check-footnotes/expected.gold | 14 +- tests/golden/check-git/check-git.bats | 12 +- tests/golden/check-git/expected1.gold | 14 +- tests/golden/check-git/expected2.gold | 14 +- tests/golden/check-git/expected3.gold | 16 +- tests/golden/check-html/check.html.bats | 2 +- tests/golden/check-ignore/check-ignore.bats | 20 +- tests/golden/check-ignore/expected1.gold | 8 +- tests/golden/check-ignore/expected2.gold | 22 +- .../check-ignoreExternalRefsTo.bats | 21 +- .../check-ignoreExternalRefsTo/expected.gold | 25 ++ .../expected_linux.gold | 31 --- .../expected_windows.gold | 31 --- .../check-ignoreLocalRefsTo.bats | 4 +- .../check-ignoreLocalRefsTo/expected.gold | 98 +++----- .../check-ignoreRefsFrom.bats | 8 +- .../golden/check-ignoreRefsFrom/expected.gold | 14 +- tests/golden/check-images/check-images.bats | 2 +- tests/golden/check-images/expected.gold | 66 +++--- .../check-local-refs/check-local-refs.bats | 6 +- tests/golden/check-local-refs/expected1.gold | 177 +++++--------- tests/golden/check-local-refs/expected2.gold | 219 ++++++------------ tests/golden/check-local-refs/expected3.gold | 163 +++++-------- .../check-redirect-parse.bats | 24 +- .../check-scan-errors/check-scan-errors.bats | 2 +- tests/golden/check-scan-errors/expected.gold | 83 +++---- .../golden/check-symlinks/check-symlinks.bats | 4 +- tests/golden/check-symlinks/expected1.gold | 6 +- tests/golden/check-symlinks/expected2.gold | 36 ++- 66 files changed, 847 insertions(+), 1174 deletions(-) create mode 100644 tests/golden/check-ignoreExternalRefsTo/expected.gold delete mode 100644 tests/golden/check-ignoreExternalRefsTo/expected_linux.gold delete mode 100644 tests/golden/check-ignoreExternalRefsTo/expected_windows.gold diff --git a/CHANGES.md b/CHANGES.md index c6cf32e6..45aeac47 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -56,6 +56,10 @@ Unreleased + Now Xrefcheck is able to follow relative redirects. * [#262](https://github.com/serokell/xrefcheck/pull/262) + Now Xrefcheck includes a scanner that verifies the repository symlinks. +* [#307](https://github.com/serokell/xrefcheck/pull/307) + + The output of Xrefcheck is now more legible. + + Add the `--print-unix-paths` (`-u`) flag to print paths in Unix style (with + forward slashes) on all platforms. 0.2.2 ========== diff --git a/docs/output-sample/output-sample.png b/docs/output-sample/output-sample.png index 139cf2876d201949b718cbd9442f6e6e12584915..040c2e7aa3ddc4e848d9561b4e6f777c104bc456 100644 GIT binary patch literal 190631 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
c=O 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%0Ak(@yf7PC=6NK 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 Bb=d#_ diff --git a/package.yaml b/package.yaml index 0dd6b026..785b9292 100644 --- a/package.yaml +++ b/package.yaml @@ -93,6 +93,7 @@ library: - filepath - fmt - ftp-client + - crypton-connection - Glob - http-client - http-types @@ -149,6 +150,7 @@ tests: - cmark-gfm - containers - directory + - filepath - wai - warp - scotty diff --git a/src/Xrefcheck/CLI.hs b/src/Xrefcheck/CLI.hs index 58d7094f..25bce8a7 100644 --- a/src/Xrefcheck/CLI.hs +++ b/src/Xrefcheck/CLI.hs @@ -39,7 +39,7 @@ import Paths_xrefcheck (version) import Xrefcheck.Config (NetworkingConfig, NetworkingConfig' (..)) import Xrefcheck.Core import Xrefcheck.Scan -import Xrefcheck.System (CanonicalRelGlobPattern, mkCanonicalRelGlobPattern) +import Xrefcheck.System (CanonicalRelGlobPattern, PrintUnixPaths (..), mkCanonicalRelGlobPattern) import Xrefcheck.Util (ColorMode (WithColors, WithoutColors)) modeReadM :: ReadM VerifyMode @@ -84,6 +84,7 @@ data Options = Options , oVerbose :: Bool , oShowProgressBar :: Maybe Bool , oColorMode :: Maybe ColorMode + , oPrintUnixPaths :: PrintUnixPaths , oExclusionOptions :: ExclusionOptions , oNetworkingOptions :: NetworkingOptions , oScanPolicy :: ScanPolicy @@ -196,6 +197,10 @@ optionsParser = do help "Disable ANSI coloring of output." , pure Nothing ] + oPrintUnixPaths <- fmap PrintUnixPaths $ switch $ + short 'u' <> + long "--print-unix-paths" <> + help "Print paths in Unix style (with forward slashes) on all platforms." oExclusionOptions <- exclusionOptionsParser oNetworkingOptions <- networkingOptionsParser oScanPolicy <- flag OnlyTracked IncludeUntracked $ @@ -208,7 +213,7 @@ exclusionOptionsParser :: Parser ExclusionOptions exclusionOptionsParser = do eoIgnore <- many . globOption $ long "ignore" <> - metavar "GLOB PATTERN" <> + metavar "GLOB_PATTERN" <> help "Ignore these files. References to them will fail verification,\ \ and references from them will not be verified.\ \ Glob patterns that contain wildcards MUST be enclosed\ @@ -237,7 +242,7 @@ dumpConfigOptions = hsubparser $ option repoTypeReadM $ short 't' <> long "type" <> - metavar "REPOSITORY TYPE" <> + metavar "REPOSITORY_TYPE" <> help [int|| Git repository type. \ Can be (#{intercalate " | " $ map show allFlavors}). \ diff --git a/src/Xrefcheck/Command.hs b/src/Xrefcheck/Command.hs index 415df6bb..33ccdc03 100644 --- a/src/Xrefcheck/Command.hs +++ b/src/Xrefcheck/Command.hs @@ -9,7 +9,7 @@ module Xrefcheck.Command import Universum -import Data.Reflection (give) +import Data.Reflection (Given, give) import Data.Yaml (decodeFileEither, prettyPrintParseException) import Fmt (build, fmt, fmtLn) import System.Console.Pretty (supportsPretty) @@ -24,7 +24,7 @@ import Xrefcheck.Progress (allowRewrite) import Xrefcheck.Scan import Xrefcheck.Scanners.Markdown (markdownSupport) import Xrefcheck.Scanners.Symlink (symlinkSupport) -import Xrefcheck.System (askWithinCI) +import Xrefcheck.System (PrintUnixPaths (..), askWithinCI) import Xrefcheck.Util import Xrefcheck.Verify (reportVerifyErrs, verifyErrors, verifyRepo) @@ -33,7 +33,7 @@ readConfig path = fmap overrideConfig do decodeFileEither path >>= either (error . toText . prettyPrintParseException) pure -configuredFileSupport :: ScannersConfig -> FileSupport +configuredFileSupport :: Given PrintUnixPaths => ScannersConfig -> FileSupport configuredFileSupport ScannersConfig{..} = firstFileSupport [ markdownSupport scMarkdown , symlinkSupport @@ -55,7 +55,7 @@ defaultAction Options{..} = do then WithColors else WithoutColors - give colorMode $ do + give oPrintUnixPaths $ give colorMode $ do config <- case oConfigPath of Just configPath -> readConfig configPath Nothing -> do @@ -92,7 +92,8 @@ defaultAction Options{..} = do verifyRepo rw fullConfig oMode repoInfo case verifyErrors verifyRes of - Nothing | null scanErrs -> fmtLn "All repository links are valid." + Nothing | null scanErrs -> + fmtLn $ colorIfNeeded Green "All repository links are valid." Nothing -> exitFailure Just verifyErrs -> do unless (null scanErrs) $ fmt "\n" diff --git a/src/Xrefcheck/Core.hs b/src/Xrefcheck/Core.hs index 9519e1ac..06537623 100644 --- a/src/Xrefcheck/Core.hs +++ b/src/Xrefcheck/Core.hs @@ -60,13 +60,11 @@ instance FromJSON Flavor where -- | Description of element position in source file. -- We keep this in text because scanners for different formats use different -- representation of this thing, and it actually appears in reports only. -newtype Position = Position (Maybe Text) +newtype Position = Position Text deriving stock (Show, Eq, Generic) -instance Given ColorMode => Buildable Position where - build (Position pos) = case pos of - Nothing -> "" - Just p -> styleIfNeeded Faint $ "at src:" <> build p +instance Buildable Position where + build (Position pos) = build pos -- | Full info about a reference. data Reference = Reference @@ -235,46 +233,41 @@ instance Given ColorMode => Buildable Reference where case rifLink of FLLocal -> [int|| - reference #{paren $ colorIfNeeded Green "file-local"}#{posSep}#{rPos}: + reference #{paren $ colorIfNeeded Green "file-local"} at #{rPos}: - text: #s{rName} - anchor: #{rifAnchor ?: styleIfNeeded Faint "-"} |] FLRelative link -> [int|| - reference #{paren $ colorIfNeeded Yellow "relative"}#{posSep}#{rPos}: + reference #{paren $ colorIfNeeded Yellow "relative"} at #{rPos}: - text: #s{rName} - link: #{link} - anchor: #{rifAnchor ?: styleIfNeeded Faint "-"} |] FLAbsolute link -> [int|| - reference #{paren $ colorIfNeeded Yellow "absolute"}#{posSep}#{rPos}: + reference #{paren $ colorIfNeeded Yellow "absolute"} at #{rPos}: - text: #s{rName} - link: /#{link} - anchor: #{rifAnchor ?: styleIfNeeded Faint "-"} |] RIExternal (ELUrl url) -> [int|| - reference #{paren $ colorIfNeeded Red "external"}#{posSep}#{rPos}: + reference #{paren $ colorIfNeeded Red "external"} at #{rPos}: - text: #s{rName} - link: #{url} |] RIExternal (ELOther url) -> [int|| - reference (other)#{posSep}#{rPos}: + reference (other) at #{rPos}: - text: #s{rName} - link: #{url} |] - where - posSep :: Text - posSep = case rPos of - Position Nothing -> "" - _ -> " " instance Given ColorMode => Buildable AnchorType where build = styleIfNeeded Faint . \case HeaderAnchor l -> colorIfNeeded Green ("header " <> headerLevelToRoman l) - HandAnchor -> colorIfNeeded Yellow "hand made" + HandAnchor -> colorIfNeeded Yellow "handmade" BiblioAnchor -> colorIfNeeded Cyan "biblio" where headerLevelToRoman = \case @@ -289,7 +282,7 @@ instance Given ColorMode => Buildable AnchorType where instance Given ColorMode => Buildable Anchor where build Anchor{..} = [int|| - #{aName} (#{aType}) #{aPos} + #{aName} (#{aType}) at #{aPos} |] instance Given ColorMode => Buildable FileInfo where diff --git a/src/Xrefcheck/Scan.hs b/src/Xrefcheck/Scan.hs index f6a910b7..874ff0f1 100644 --- a/src/Xrefcheck/Scan.hs +++ b/src/Xrefcheck/Scan.hs @@ -37,7 +37,7 @@ import Control.Lens (_1, makeLensesWith, (%~)) import Data.Aeson (FromJSON (..), genericParseJSON, withText) import Data.Map qualified as M import Data.Reflection (Given) -import Fmt (Buildable (..), fmt) +import Fmt (Buildable (..), Builder, fmtLn) import System.Directory (doesDirectoryExist, pathIsSymbolicLink) import System.Process (cwd, readCreateProcess, shell) import Text.Interpolation.Nyan @@ -120,23 +120,20 @@ mkGatherScanError seFile ScanError{sePosition, seDescription} = ScanError , seDescription } -instance Given ColorMode => Buildable (ScanError 'Gather) where - build ScanError{..} = [int|| - In file #{styleIfNeeded Faint (styleIfNeeded Bold seFile)} - scan error #{sePosition}: - - #{seDescription} - - |] +pprScanErr :: Given ColorMode => ScanError 'Gather -> Builder +pprScanErr ScanError{..} = hdr <> "\n" <> interpolateIndentF 2 msg <> "\n" + where + hdr, msg :: Builder + hdr = + styleIfNeeded Bold (build sePosition <> ": ") <> + colorIfNeeded Red "scan error:" + msg = build seDescription reportScanErrs :: Given ColorMode => NonEmpty (ScanError 'Gather) -> IO () -reportScanErrs errs = fmt - [int|| - === Scan errors found === - - #{interpolateIndentF 2 (interpolateBlockListF' "➥ " build errs)} - Scan errors dumped, #{length errs} in total. - |] +reportScanErrs errs = do + traverse_ (fmtLn . pprScanErr) errs + fmtLn $ colorIfNeeded Red $ + "Scan errors dumped, " <> build (length errs) <> " in total." data ScanErrorDescription = LinkErr @@ -152,8 +149,8 @@ instance Buildable ScanErrorDescription where markdown or right after comments at the top|] ParagraphErr txt -> [int||Expected a PARAGRAPH after \ "ignore paragraph" annotation, but found #{txt}|] - UnrecognisedErr txt -> [int||Unrecognised option "#{txt}" perhaps you meant \ - <"ignore link"|"ignore paragraph"|"ignore all">|] + UnrecognisedErr txt -> [int||Unrecognised option "#{txt}" + Perhaps you meant <"ignore link"|"ignore paragraph"|"ignore all">|] firstFileSupport :: [FileSupport] -> FileSupport firstFileSupport fs isSymlink = diff --git a/src/Xrefcheck/Scanners/Markdown.hs b/src/Xrefcheck/Scanners/Markdown.hs index d3cc6962..a6872315 100644 --- a/src/Xrefcheck/Scanners/Markdown.hs +++ b/src/Xrefcheck/Scanners/Markdown.hs @@ -25,6 +25,7 @@ import Control.Monad.Trans.Writer.CPS (Writer, runWriter, tell) import Data.Aeson (FromJSON (..), genericParseJSON) import Data.ByteString.Lazy qualified as BSL import Data.DList qualified as DList +import Data.Reflection (Given) import Data.Text qualified as T import Data.Text.Lazy qualified as LT import Fmt (Buildable (..), nameF) @@ -52,17 +53,17 @@ instance Buildable Node where build (Node _mpos ty mSubs) = nameF (show ty) $ maybe "[]" interpolateBlockListF (nonEmpty mSubs) -toPosition :: Maybe PosInfo -> Position -toPosition = Position . \case - Nothing -> Nothing +toPosition :: FilePath -> Maybe PosInfo -> Position +toPosition filepath = Position . \case + Nothing -> [int|s|#{filepath}|] Just PosInfo{..} - | startLine == endLine -> Just + | startLine == endLine -> [int|s| - #{startLine}:#{startColumn}-#{endColumn} + #{filepath}:#{startLine}:#{startColumn}-#{endColumn} |] - | otherwise -> Just + | otherwise -> [int|s| - #{startLine}:#{startColumn}-#{endLine}:#{endColumn} + #{filepath}:#{startLine}:#{startColumn}-#{endLine}:#{endColumn} |] -- | Extract text from the topmost node. @@ -154,9 +155,10 @@ cataNodeWithParentNodeInfo f node = cataNode f' node -- | Find ignore annotations (ignore paragraph and ignore link) -- and remove nodes that should be ignored. -removeIgnored :: Node -> Writer [ScanError 'Parse] Node -removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove - where +removeIgnored :: Node -> ExtractorM Node +removeIgnored rootNode = do + filepath <- asks ecFilePath + let remove :: Maybe PosInfo -> NodeType @@ -167,7 +169,7 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove scan <- use ssIgnore >>= \case -- When no `Ignore` state is set check next node for annotation, -- if found then set it as new `IgnoreMode` otherwise skip node. - Nothing -> handleIgnoreMode pos ty subs $ getIgnoreMode node + Nothing -> handleIgnoreMode pos ty subs $ getIgnoreMode node Just (Ignore mode modePos) -> case (mode, ty) of -- We expect to find a paragraph immediately after the @@ -175,7 +177,7 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove -- found we should report an error. (IMSParagraph, PARAGRAPH) -> (ssIgnore .= Nothing) $> defNode (IMSParagraph, x) -> do - lift . tell . makeError modePos . ParagraphErr $ prettyType x + lift . tell $ makeError filepath modePos (ParagraphErr (prettyType x)) ssIgnore .= Nothing Node pos ty <$> sequence subs @@ -184,7 +186,7 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove -- the file should already be ignored when `checkIgnoreFile` is called. -- We should report an error if we find it anyway. (IMSAll, _) -> do - lift . tell $ makeError modePos FileErr + lift . tell $ makeError filepath modePos FileErr ssIgnore .= Nothing Node pos ty <$> sequence subs @@ -202,14 +204,14 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove currentIgnore <- use ssIgnore case currentIgnore of Just (Ignore {_ignoreMode = IMSLink ParentExpectsLink}) -> do - lift $ tell $ makeError modePos LinkErr + lift $ tell $ makeError filepath modePos LinkErr ssIgnore .= Nothing _ -> pass return node' when (ty == PARAGRAPH) $ use ssIgnore >>= \case Just (Ignore (IMSLink ExpectingLinkInParagraph) pragmaPos) -> - lift $ tell $ makeError pragmaPos LinkErr + lift $ tell $ makeError filepath pragmaPos LinkErr _ -> pass return scan @@ -233,7 +235,7 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove (ssIgnore .= Just (Ignore ignoreModeState correctPos)) $> defNode InvalidMode msg -> do - lift . tell $ makeError correctPos $ UnrecognisedErr msg + lift . tell $ makeError filepath correctPos $ UnrecognisedErr msg (ssIgnore .= Nothing) $> defNode NotAnAnnotation -> Node pos nodeType <$> sequence subs where @@ -244,24 +246,26 @@ removeIgnored = withIgnoreMode . cataNodeWithParentNodeInfo remove let mType = safeHead $ words $ show ty in fromMaybe "" mType - withIgnoreMode - :: ScannerM Node - -> Writer [ScanError 'Parse] Node - withIgnoreMode action = action `runStateT` initialScannerState >>= \case - -- We expect `Ignore` state to be `Nothing` when we reach EOF, - -- otherwise that means there was an annotation that didn't match - -- any node, so we have to report that. - (node, ScannerState {_ssIgnore = Just (Ignore mode pos)}) -> case mode of + action :: ScannerM Node + action = cataNodeWithParentNodeInfo remove rootNode + + (node, s) <- lift $ runStateT action initialScannerState + case s of + -- We expect `Ignore` state to be `Nothing` when we reach EOF, + -- otherwise that means there was an annotation that didn't match + -- any node, so we have to report that. + ScannerState {_ssIgnore = Just (Ignore mode pos)} -> do + case mode of IMSParagraph -> do - tell . makeError pos $ ParagraphErr "EOF" + lift $ tell . makeError filepath pos $ ParagraphErr "EOF" pure node IMSLink _ -> do - tell $ makeError pos LinkErr + lift $ tell $ makeError filepath pos LinkErr pure node IMSAll -> do - tell $ makeError pos FileErr + lift $ tell $ makeError filepath pos FileErr pure node - (node, _) -> pure node + _ -> pure node -- | Custom `foldMap` for source tree. foldNode :: (Monoid a, Monad m) => (Node -> m a) -> Node -> m a @@ -270,27 +274,33 @@ foldNode action node@(Node _ _ subs) = do b <- concatForM subs (foldNode action) return (a <> b) -type ExtractorM a = ReaderT MarkdownConfig (Writer [ScanError 'Parse]) a +data ExtractorCtx = ExtractorCtx + { ecConfig :: MarkdownConfig + , ecFilePath :: String -- for printing + } + +type ExtractorM a = ReaderT ExtractorCtx (Writer [ScanError 'Parse]) a -- | Extract information from source tree. nodeExtractInfo :: Node -> ExtractorM FileInfo nodeExtractInfo input@(Node _ _ nSubs) = do if checkIgnoreAllFile nSubs then return (diffToFileInfo mempty) - else diffToFileInfo <$> (foldNode extractor =<< lift (removeIgnored input)) + else diffToFileInfo <$> (foldNode extractor =<< removeIgnored input) where extractor :: Node -> ExtractorM FileInfoDiff - extractor node@(Node pos ty _) = + extractor node@(Node pos ty _) = do + filepath <- asks ecFilePath case ty of HTML_BLOCK _ -> do return mempty HEADING lvl -> do - flavor <- asks mcFlavor + flavor <- asks (mcFlavor . ecConfig) let aType = HeaderAnchor lvl let aName = headerToAnchor flavor $ nodeExtractText node - let aPos = toPosition pos + let aPos = toPosition filepath pos return $ FileInfoDiff DList.empty $ DList.singleton $ Anchor {aType, aName, aPos} HTML_INLINE text -> do @@ -307,7 +317,7 @@ nodeExtractInfo input@(Node _ _ nSubs) = do case mName of Just aName -> do let aType = HandAnchor - aPos = toPosition pos + aPos = toPosition filepath pos return $ FileInfoDiff mempty (pure $ Anchor {aType, aName, aPos}) @@ -323,8 +333,9 @@ nodeExtractInfo input@(Node _ _ nSubs) = do where extractLink url = do + filepath <- asks ecFilePath let rName = nodeExtractText node - rPos = toPosition pos + rPos = toPosition filepath pos rInfo = referenceInfo $ if null url then rName else url return $ FileInfoDiff @@ -351,10 +362,12 @@ defNode :: Node defNode = Node Nothing DOCUMENT [] -- hard-coded default Node makeError - :: Maybe PosInfo + :: FilePath + -> Maybe PosInfo -> ScanErrorDescription -> [ScanError 'Parse] -makeError pos errDescription = one $ mkParseScanError (toPosition pos) errDescription +makeError filepath pos errDescription = + one $ mkParseScanError (toPosition filepath pos) errDescription getCommentContent :: Node -> Maybe Text getCommentContent node = do @@ -396,20 +409,23 @@ textToMode ("ignore" : [x]) | otherwise = InvalidMode x textToMode _ = NotAnAnnotation -parseFileInfo :: MarkdownConfig -> LT.Text -> (FileInfo, [ScanError 'Parse]) -parseFileInfo config input +parseFileInfo :: MarkdownConfig -> String -> LT.Text -> (FileInfo, [ScanError 'Parse]) +parseFileInfo config pathForPrinting input = runWriter - $ flip runReaderT config + $ flip runReaderT (ExtractorCtx config pathForPrinting) $ nodeExtractInfo $ commonmarkToNode [optFootnotes] [extAutolink] $ toStrict input -markdownScanner :: MarkdownConfig -> ScanAction -markdownScanner config root file = - parseFileInfo config . decodeUtf8 - <$> BSL.readFile (filePathFromRoot root file) +markdownScanner :: Given PrintUnixPaths => MarkdownConfig -> ScanAction +markdownScanner config root relativePath = + parseFileInfo config pathForPrinting . decodeUtf8 + <$> BSL.readFile rootedPath + where + rootedPath = filePathFromRoot root relativePath + pathForPrinting = mkPathForPrinting rootedPath -markdownSupport :: MarkdownConfig -> FileSupport +markdownSupport :: Given PrintUnixPaths => MarkdownConfig -> FileSupport markdownSupport config isSymlink extension = do guard $ extension == ".md" guard $ not isSymlink diff --git a/src/Xrefcheck/Scanners/Symlink.hs b/src/Xrefcheck/Scanners/Symlink.hs index de6a575f..9cb68526 100644 --- a/src/Xrefcheck/Scanners/Symlink.hs +++ b/src/Xrefcheck/Scanners/Symlink.hs @@ -13,24 +13,27 @@ module Xrefcheck.Scanners.Symlink import Universum +import Data.Reflection (Given) import System.Directory (getSymbolicLinkTarget) import Xrefcheck.Core import Xrefcheck.Scan import Xrefcheck.System -symlinkScanner :: ScanAction -symlinkScanner root path = do +symlinkScanner :: Given PrintUnixPaths => ScanAction +symlinkScanner root relativePath = do + let rootedPath = filePathFromRoot root relativePath + pathForPrinting = mkPathForPrinting rootedPath rLink <- unRelPosixLink . mkRelPosixLink - <$> getSymbolicLinkTarget (filePathFromRoot root path) + <$> getSymbolicLinkTarget rootedPath let rName = "Symbolic Link" - rPos = Position Nothing + rPos = Position (fromString pathForPrinting) rInfo = referenceInfo rLink pure (FileInfo [Reference {rName, rPos, rInfo}] [], []) -symlinkSupport :: FileSupport +symlinkSupport :: Given PrintUnixPaths => FileSupport symlinkSupport isSymlink _ = do guard isSymlink pure symlinkScanner diff --git a/src/Xrefcheck/System.hs b/src/Xrefcheck/System.hs index 49a286c2..7144d1ad 100644 --- a/src/Xrefcheck/System.hs +++ b/src/Xrefcheck/System.hs @@ -22,12 +22,16 @@ module Xrefcheck.System , CanonicalRelGlobPattern (unCanonicalRelGlobPattern) , matchesGlobPatterns , mkCanonicalRelGlobPattern + + , PrintUnixPaths(..) + , mkPathForPrinting ) where import Universum import Data.Aeson (FromJSON (..), withText) import Data.Char qualified as C +import Data.Reflection (Given (..)) import Data.Text qualified as T import Fmt (Buildable) import System.Console.Pretty (Pretty) @@ -210,6 +214,7 @@ dropTrailingPosixPathSeparator :: Text -> Text dropTrailingPosixPathSeparator p = fromMaybe p $ T.stripSuffix "/" p +-- Expand '.' and '..' in paths with Posix path separators. expandPosixIndirections :: Text -> Text expandPosixIndirections = T.intercalate "/" . reverse @@ -224,6 +229,22 @@ expandPosixIndirections = T.intercalate "/" expand acc (_ : xs) = expand (acc - 1) xs expand acc [] = replicate acc ".." +-- Expand '.' and '..' in paths with system-specific path separators. +expandPathIndirections :: FilePath -> FilePath +expandPathIndirections = FP.joinPath + . reverse + . expand 0 + . reverse + . map FP.dropTrailingPathSeparator + . FP.splitPath + where + expand :: Int -> [FilePath] -> [FilePath] + expand acc (".." : xs) = expand (acc + 1) xs + expand acc ("." : xs) = expand acc xs + expand 0 (x : xs) = x : expand 0 xs + expand acc (_ : xs) = expand (acc - 1) xs + expand acc [] = replicate acc ".." + withPathSeparator :: Char -> Text -> Text withPathSeparator pathSep = T.map replaceSeparator where @@ -231,3 +252,13 @@ withPathSeparator pathSep = T.map replaceSeparator replaceSeparator c | FP.isPathSeparator c = pathSep | otherwise = c + +newtype PrintUnixPaths = PrintUnixPaths Bool + +mkPathForPrinting :: Given PrintUnixPaths => FilePath -> String +mkPathForPrinting = replaceSeparator . expandPathIndirections + where + replaceSeparator :: FilePath -> String + replaceSeparator = case given of + PrintUnixPaths True -> map (\c -> if c == FP.pathSeparator then '/' else c) + PrintUnixPaths False -> id diff --git a/src/Xrefcheck/Verify.hs b/src/Xrefcheck/Verify.hs index e8c4fcbc..52ced5b9 100644 --- a/src/Xrefcheck/Verify.hs +++ b/src/Xrefcheck/Verify.hs @@ -46,9 +46,10 @@ import Data.Text.Metrics (damerauLevenshteinNorm) import Data.Time (UTCTime, defaultTimeLocale, formatTime, readPTime, rfc822DateFormat) import Data.Time.Clock.POSIX (getPOSIXTime) import Data.Traversable (for) -import Fmt (Buildable (..), Builder, fmt, maybeF, nameF) +import Fmt (Buildable (..), Builder, fmt, fmtLn, maybeF, nameF) import GHC.Exts qualified as Exts import GHC.Read (Read (readPrec)) +import Network.Connection qualified as N.C import Network.FTP.Client (FTPException (..), FTPResponse (..), ResponseStatus (..), login, nlst, size, withFTP, withFTPS) import Network.HTTP.Client @@ -107,13 +108,6 @@ data WithReferenceLoc a = WithReferenceLoc , wrlItem :: a } -instance (Given ColorMode, Buildable a) => Buildable (WithReferenceLoc a) where - build WithReferenceLoc{..} = [int|| - In file #{styleIfNeeded Faint (styleIfNeeded Bold wrlFile)} - bad #{wrlReference} - #{wrlItem} - |] - -- | Contains a name of a domain, examples: -- @DomainName "github.com"@, -- @DomainName "localhost"@, @@ -137,6 +131,7 @@ data VerifyError | ExternalFtpException FTPException | FtpEntryDoesNotExist FilePath | ExternalResourceSomeError Text + | ExternalResourceConnectionFailure | RedirectChainCycle RedirectChain | RedirectMissingLocation RedirectChain | RedirectChainLimit RedirectChain @@ -147,8 +142,8 @@ data ResponseResult = RRDone | RRFollow Text -instance Given ColorMode => Buildable VerifyError where - build = \case +pprVerifyErr' :: Given ColorMode => ReferenceInfo -> VerifyError -> Builder +pprVerifyErr' rInfo = \case LocalFileDoesNotExist file -> [int|| File does not exist: @@ -161,15 +156,15 @@ instance Given ColorMode => Buildable VerifyError where LocalFileOutsideRepo file -> [int|| - Link targets a local file outside repository: + Link #{pprLinkTyp rInfo} targets a local file outside the repository: #{file} |] LinkTargetNotAddedToGit file -> [int|| - Link target is not tracked by Git: + Link #{pprLinkTyp rInfo} targets a file not tracked by Git: #{file} - Please run "git add" before running xrefcheck or enable --include-untracked CLI option. + Please run "git add" before running xrefcheck or enable --include-untracked CLI option. |] AnchorDoesNotExist anchor similar -> case nonEmpty similar of @@ -180,70 +175,70 @@ instance Given ColorMode => Buildable VerifyError where Just otherAnchors -> [int|| Anchor '#{anchor}' is not present, did you mean: - #{interpolateIndentF 4 $ interpolateBlockListF otherAnchors} + #{interpolateIndentF 2 $ interpolateBlockListF otherAnchors} |] AmbiguousAnchorRef file anchor fileAnchors -> [int|| Ambiguous reference to anchor '#{anchor}' - In file #{file} - It could refer to either: - #{interpolateIndentF 4 $ interpolateBlockListF fileAnchors} - Use of ambiguous anchors is discouraged because the target - can change silently while the document containing it evolves. + in file #{file} + It could refer to either: + #{interpolateIndentF 2 $ interpolateBlockListF fileAnchors} + Use of ambiguous anchors is discouraged because the target + can change silently while the document containing it evolves. |] ExternalResourceUriParseError (UPEInvalid err) -> [int|| Invalid URI (#{err}) - |] + |] <> pprLinkCtx rInfo ExternalResourceUriParseError (UPEConversion err) -> [int|| Invalid URI - #{interpolateIndentF 4 . build $ displayException err} - |] + #{interpolateIndentF 2 . build $ displayException err} + |] <> pprLinkCtx rInfo ExternalResourceInvalidUrl Nothing -> [int|| Invalid URL - |] + |] <> pprLinkCtx rInfo ExternalResourceInvalidUrl (Just message) -> [int|| Invalid URL (#{message}) - |] + |] <> pprLinkCtx rInfo ExternalResourceUnknownProtocol -> [int|| Bad url (expected 'http','https', 'ftp' or 'ftps') - |] + |] <> pprLinkCtx rInfo ExternalHttpResourceUnavailable status -> [int|| Resource unavailable (#{statusCode status} #{decodeUtf8 @Text (statusMessage status)}) - |] + |] <> pprLinkCtx rInfo ExternalHttpTooManyRequests retryAfter _ -> [int|| Resource unavailable (429 Too Many Requests; retry after #{maybeF retryAfter}) - |] + |] <> pprLinkCtx rInfo ExternalHttpTimeout _ -> [int|| Response timeout - |] + |] <> pprLinkCtx rInfo ExternalFtpResourceUnavailable response -> [int|| Resource unavailable: #{response} - |] + |] <> pprLinkCtx rInfo ExternalFtpException err -> [int|| FTP exception (#{err}) - |] + |] <> pprLinkCtx rInfo FtpEntryDoesNotExist entry -> [int|| @@ -254,31 +249,36 @@ instance Given ColorMode => Buildable VerifyError where ExternalResourceSomeError err -> [int|| #{err} - |] + |] <> pprLinkCtx rInfo + + ExternalResourceConnectionFailure -> + [int|| + Connection failure + |] <> pprLinkCtx rInfo RedirectChainCycle chain -> [int|| Cycle found in the following redirect chain: #{interpolateIndentF 2 $ attachToRedirectChain chain "here"} - |] + |] <> pprLinkCtx rInfo RedirectMissingLocation chain -> [int|| Missing location header in the following redirect chain: #{interpolateIndentF 2 $ attachToRedirectChain chain "no location header"} - |] + |] <> pprLinkCtx rInfo RedirectChainLimit chain -> [int|| The follow redirects limit has been reached in the following redirect chain: #{interpolateIndentF 2 $ attachToRedirectChain chain "stopped before this one"} - |] + |] <> pprLinkCtx rInfo RedirectRuleError chain mOn -> [int|| #{redirect} found: #{interpolateIndentF 2 $ attachToRedirectChain chain "stopped before this one"} - |] + |] <> pprLinkCtx rInfo where redirect :: Text redirect = case mOn of @@ -304,15 +304,52 @@ incTotalCounter rc = rc {rcTotalRetries = rcTotalRetries rc + 1} incTimeoutCounter :: RetryCounter -> RetryCounter incTimeoutCounter rc = rc {rcTimeoutRetries = rcTimeoutRetries rc + 1} +pprVerifyErr :: Given ColorMode => WithReferenceLoc VerifyError -> Builder +pprVerifyErr wrl = hdr <> "\n" <> interpolateIndentF 2 msg + where + WithReferenceLoc{wrlReference, wrlItem} = wrl + Reference{rName, rInfo} = wrlReference + + hdr, msg :: Builder + hdr = + styleIfNeeded Bold (build (rPos wrlReference) <> ": ") <> + colorIfNeeded Red "bad reference:" + msg = + "The reference to " <> show rName <> " failed verification.\n" <> + pprVerifyErr' rInfo wrlItem + +pprLink :: Given ColorMode => ReferenceInfo -> Maybe (Builder, Builder) +pprLink = \case + RIFile ReferenceInfoFile{..} -> + case rifLink of + FLLocal -> Nothing + FLRelative link -> Just ("a " <> styleIfNeeded Faint "relative" <> " link", build link) + FLAbsolute link -> Just ("an " <> styleIfNeeded Faint "absolute" <> " link", build link) + RIExternal (ELUrl url) -> Just ("an " <> styleIfNeeded Faint "external" <> " link", build url) + RIExternal (ELOther url) -> Just ("a link", build url) + +pprLinkTyp :: Given ColorMode => ReferenceInfo -> Builder +pprLinkTyp rInfo = + paren $ styleIfNeeded Faint $ case rInfo of + RIFile ReferenceInfoFile{rifLink} -> + case rifLink of + FLLocal -> "file-local" + FLRelative _ -> "relative" + FLAbsolute _ -> "absolute" + RIExternal _ -> "external" + +pprLinkCtx :: Given ColorMode => ReferenceInfo -> Builder +pprLinkCtx rInfo = + case pprLink rInfo of + Nothing -> mempty + Just (b1, b2) -> "when processing " <> b1 <> ":\n" <> interpolateIndentF 2 b2 <> "\n" + reportVerifyErrs :: Given ColorMode => NonEmpty (WithReferenceLoc VerifyError) -> IO () -reportVerifyErrs errs = fmt - [int|| - === Invalid references found === - - #{interpolateIndentF 2 (interpolateBlockListF' "➥ " build errs)} - Invalid references dumped, #{length errs} in total. - |] +reportVerifyErrs errs = do + traverse_ (fmtLn . pprVerifyErr) errs + fmtLn $ colorIfNeeded Red $ + "Invalid references dumped, " <> build (length errs) <> " in total." data RetryAfter = Date UTCTime | Seconds (Time Second) deriving stock (Show, Eq) @@ -708,7 +745,7 @@ checkExternalResource followed config@Config{..} link let maxTime = Time @Second $ unTime ncExternalRefCheckTimeout * timeoutFrac reqRes <- catch (liftIO (timeout maxTime $ reqLink $> RRDone)) $ - (Just <$>) <$> interpretErrors uri + (Just <$>) <$> interpretHttpErrors uri case reqRes of Nothing -> throwError $ ExternalHttpTimeout $ extractHost uri @@ -730,9 +767,13 @@ checkExternalResource followed config@Config{..} link , (405 ==) -- method mismatch ] - interpretErrors uri = \case + interpretHttpErrors :: URI -> Network.HTTP.Req.HttpException -> ExceptT VerifyError IO ResponseResult + interpretHttpErrors uri = \case JsonHttpException _ -> error "External link JSON parse exception" - VanillaHttpException err -> case err of + VanillaHttpException err -> interpretHttpErrors' uri err + + interpretHttpErrors' :: URI -> Network.HTTP.Client.HttpException -> ExceptT VerifyError IO ResponseResult + interpretHttpErrors' uri = \case InvalidUrlException{} -> error "External link URL invalid exception" HttpExceptionRequest _ exc -> case exc of StatusCodeException resp _ @@ -765,6 +806,12 @@ checkExternalResource followed config@Config{..} link redirectLocation = fmap decodeUtf8 . lookup "Location" $ responseHeaders resp + + ConnectionFailure _ -> throwError ExternalResourceConnectionFailure + InternalException e + | Just (N.C.HostCannotConnect _ _) <- fromException e + -> throwError ExternalResourceConnectionFailure + other -> throwError $ ExternalResourceSomeError $ show other where retryAfterInfo :: Response a -> Maybe RetryAfter diff --git a/tests/Test/Xrefcheck/IgnoreAnnotationsSpec.hs b/tests/Test/Xrefcheck/IgnoreAnnotationsSpec.hs index c390f2c6..cbcb3ad2 100644 --- a/tests/Test/Xrefcheck/IgnoreAnnotationsSpec.hs +++ b/tests/Test/Xrefcheck/IgnoreAnnotationsSpec.hs @@ -9,6 +9,7 @@ import Universum hiding ((^.)) import CMarkGFM (PosInfo (..)) import Control.Lens ((^.)) +import System.FilePath qualified as FP import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (testCase, (@?=)) @@ -22,40 +23,40 @@ test_ignoreAnnotations :: [TestTree] test_ignoreAnnotations = [ testGroup "Parsing failures" [ testCase "Check if broken link annotation produce error" do - let file = "tests/markdowns/with-annotations/no_link.md" + let file = "tests" FP. "markdowns" FP. "with-annotations" FP. "no_link.md" errs <- getErrs file - errs @?= makeError (Just $ PosInfo 7 1 7 31) LinkErr + errs @?= makeError file (Just $ PosInfo 7 1 7 31) LinkErr , testCase "Check if broken paragraph annotation produce error" do - let file = "tests/markdowns/with-annotations/no_paragraph.md" + let file = "tests" FP. "markdowns" FP. "with-annotations" FP. "no_paragraph.md" errs <- getErrs file - errs @?= makeError (Just $ PosInfo 7 1 7 35) (ParagraphErr "HEADING") + errs @?= makeError file (Just $ PosInfo 7 1 7 35) (ParagraphErr "HEADING") , testCase "Check if broken ignore all annotation produce error" do - let file = "tests/markdowns/with-annotations/unexpected_ignore_file.md" + let file = "tests" FP. "markdowns" FP. "with-annotations" FP. "unexpected_ignore_file.md" errs <- getErrs file - errs @?= makeError (Just $ PosInfo 9 1 9 29) FileErr + errs @?= makeError file (Just $ PosInfo 9 1 9 29) FileErr , testCase "Check if broken unrecognised annotation produce error" do - let file = "tests/markdowns/with-annotations/unrecognised_option.md" + let file = "tests" FP. "markdowns" FP. "with-annotations" FP. "unrecognised_option.md" errs <- getErrs file - errs @?= makeError (Just $ PosInfo 7 1 7 46) (UnrecognisedErr "unrecognised-option") + errs @?= makeError file (Just $ PosInfo 7 1 7 46) (UnrecognisedErr "unrecognised-option") ] , testGroup "\"ignore link\" mode" [ testCase "Check \"ignore link\" performance" $ do - let file = mkRelPosixLink "tests/markdowns/with-annotations/ignore_link.md" - (fi, errs) <- parse GitHub "" file + let file = "tests" FP. "markdowns" FP. "with-annotations" FP. "ignore_link.md" + (fi, errs) <- parse GitHub "" (mkRelPosixLink file) getRefs fi @?= ["team", "team", "team", "hire-us", "how-we-work", "privacy", "link2", "link2", "link3"] - errs @?= makeError (Just $ PosInfo 42 1 42 31) LinkErr + errs @?= makeError file (Just $ PosInfo 42 1 42 31) LinkErr ] , testGroup "\"ignore paragraph\" mode" [ testCase "Check \"ignore paragraph\" performance" $ do - let file = mkRelPosixLink "tests/markdowns/with-annotations/ignore_paragraph.md" + let file = mkRelPosixLink $ "tests" FP. "markdowns" FP. "with-annotations" FP. "ignore_paragraph.md" (fi, errs) <- parse GitHub "" file getRefs fi @?= ["blog", "contacts"] errs @?= [] ] , testGroup "\"ignore all\" mode" [ testCase "Check \"ignore all\" performance" $ do - let file = mkRelPosixLink "tests/markdowns/with-annotations/ignore_file.md" + let file = mkRelPosixLink $ "tests" FP. "markdowns" FP. "with-annotations" FP. "ignore_file.md" (fi, errs) <- parse GitHub "" file getRefs fi @?= [] errs @?= [] diff --git a/tests/Test/Xrefcheck/IgnoreRegexSpec.hs b/tests/Test/Xrefcheck/IgnoreRegexSpec.hs index a6755647..47685404 100644 --- a/tests/Test/Xrefcheck/IgnoreRegexSpec.hs +++ b/tests/Test/Xrefcheck/IgnoreRegexSpec.hs @@ -19,6 +19,7 @@ import Xrefcheck.Core import Xrefcheck.Progress (allowRewrite) import Xrefcheck.Scan import Xrefcheck.Scanners.Markdown +import Xrefcheck.System import Xrefcheck.Util (ColorMode (WithoutColors)) import Xrefcheck.Verify @@ -26,7 +27,9 @@ test_ignoreRegex :: TestTree test_ignoreRegex = give WithoutColors $ let root = "tests/markdowns/without-annotations" showProgressBar = False - fileSupport = firstFileSupport [markdownSupport defGithubMdConfig] + fileSupport = + give (PrintUnixPaths False) $ + firstFileSupport [markdownSupport defGithubMdConfig] verifyMode = ExternalOnlyMode linksTxt = diff --git a/tests/Test/Xrefcheck/TooManyRequestsSpec.hs b/tests/Test/Xrefcheck/TooManyRequestsSpec.hs index a21b6411..21bdd817 100644 --- a/tests/Test/Xrefcheck/TooManyRequestsSpec.hs +++ b/tests/Test/Xrefcheck/TooManyRequestsSpec.hs @@ -52,7 +52,7 @@ test_tooManyRequests = testGroup "429 response tests" $ initProgress 2 } _ <- verifyReferenceWithProgressDefault - (Reference "" (Position Nothing) $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") + (Reference "" (Position "") $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") setRef progressRef progress <- vrExternal <$> readIORef progressRef @@ -75,7 +75,7 @@ test_tooManyRequests = testGroup "429 response tests" $ initProgress 2 } _ <- verifyReferenceWithProgressDefault - (Reference "" (Position Nothing) $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") + (Reference "" (Position "") $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") setRef progressRef progress <- vrExternal <$> readIORef progressRef @@ -99,7 +99,7 @@ test_tooManyRequests = testGroup "429 response tests" $ initProgress 2 } _ <- verifyReferenceWithProgressDefault - (Reference "" (Position Nothing) $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") + (Reference "" (Position "") $ RIExternal $ ELUrl "http://127.0.0.1:5000/429") setRef progressRef progress <- vrExternal <$> readIORef progressRef diff --git a/tests/Test/Xrefcheck/TrailingSlashSpec.hs b/tests/Test/Xrefcheck/TrailingSlashSpec.hs index 213488a7..1c504bef 100644 --- a/tests/Test/Xrefcheck/TrailingSlashSpec.hs +++ b/tests/Test/Xrefcheck/TrailingSlashSpec.hs @@ -8,6 +8,7 @@ module Test.Xrefcheck.TrailingSlashSpec where import Universum hiding ((.~)) import Control.Lens ((.~)) +import Data.Reflection (give) import System.Directory (doesFileExist) import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit (assertFailure, testCase) @@ -24,7 +25,9 @@ import Xrefcheck.Util test_slash :: TestTree test_slash = testGroup "Trailing forward slash detection" $ let config = defConfig GitHub - fileSupport = firstFileSupport [markdownSupport (scMarkdown (cScanners config))] + fileSupport = + give (PrintUnixPaths False) $ + firstFileSupport [markdownSupport (scMarkdown (cScanners config))] in roots <&> \root -> testCase ("All the files within the root \"" <> root <> diff --git a/tests/Test/Xrefcheck/Util.hs b/tests/Test/Xrefcheck/Util.hs index 713deab8..62e86479 100644 --- a/tests/Test/Xrefcheck/Util.hs +++ b/tests/Test/Xrefcheck/Util.hs @@ -7,6 +7,7 @@ module Test.Xrefcheck.Util where import Universum +import Data.Reflection (give) import Data.Tagged (untag) import Network.HTTP.Types (forbidden403, unauthorized401) import Network.Wai.Handler.Warp qualified as Web @@ -17,9 +18,11 @@ import Web.Scotty qualified as Web import Xrefcheck.Core (Flavor) import Xrefcheck.Scan (ScanAction) import Xrefcheck.Scanners.Markdown (MarkdownConfig (MarkdownConfig, mcFlavor), markdownScanner) +import Xrefcheck.System (PrintUnixPaths (..)) parse :: Flavor -> ScanAction parse fl path = + give (PrintUnixPaths False) $ markdownScanner MarkdownConfig { mcFlavor = fl } path mockServerUrl :: MockServerPort -> Text -> Text diff --git a/tests/Test/Xrefcheck/UtilRequests.hs b/tests/Test/Xrefcheck/UtilRequests.hs index b47f37c1..91f72839 100644 --- a/tests/Test/Xrefcheck/UtilRequests.hs +++ b/tests/Test/Xrefcheck/UtilRequests.hs @@ -119,7 +119,7 @@ verifyLink -> Text -> IO (VerifyResult VerifyError, Progress Int Text) verifyLink configModifier setRef link = do - let reference = Reference "" (Position Nothing) $ RIExternal $ ELUrl link + let reference = Reference "" (Position "") $ RIExternal $ ELUrl link progRef <- newIORef $ initVerifyProgress [reference] result <- verifyReferenceWithProgress configModifier reference setRef progRef progress <- readIORef progRef diff --git a/tests/golden/check-anchors/check-anchors.bats b/tests/golden/check-anchors/check-anchors.bats index f7c1d8e0..7006a68e 100644 --- a/tests/golden/check-anchors/check-anchors.bats +++ b/tests/golden/check-anchors/check-anchors.bats @@ -11,12 +11,12 @@ load '../helpers' @test "We report ambiguous anchor references" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck -r ambiguous-anchors + to_temp xrefcheck -u -r ambiguous-anchors assert_diff } @test "We report references to non-existing anchors, giving hints about similar ones" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck -r non-existing-anchors + to_temp xrefcheck -u -r non-existing-anchors assert_diff } diff --git a/tests/golden/check-anchors/expected1.gold b/tests/golden/check-anchors/expected1.gold index 22a065b8..d1ae7c2a 100644 --- a/tests/golden/check-anchors/expected1.gold +++ b/tests/golden/check-anchors/expected1.gold @@ -1,32 +1,23 @@ -=== Invalid references found === +ambiguous-anchors/a.md:16:1-43: bad reference: + The reference to "ambiguous anchor in this file" failed verification. + Ambiguous reference to anchor 'some-text' + in file a.md + It could refer to either: + - some-text (header I) at ambiguous-anchors/a.md:6:1-11 + - some-text (header I) at ambiguous-anchors/a.md:8:1-15 + - some-text (header II) at ambiguous-anchors/a.md:12:1-12 + Use of ambiguous anchors is discouraged because the target + can change silently while the document containing it evolves. - ➥ In file a.md - bad reference (file-local) at src:16:1-43: - - text: "ambiguous anchor in this file" - - anchor: some-text - - Ambiguous reference to anchor 'some-text' - In file a.md - It could refer to either: - - some-text (header I) at src:6:1-11 - - some-text (header I) at src:8:1-15 - - some-text (header II) at src:12:1-12 - Use of ambiguous anchors is discouraged because the target - can change silently while the document containing it evolves. - - ➥ In file b.md - bad reference (relative) at src:7:1-48: - - text: "ambiguous anchor in other file" - - link: a.md - - anchor: some-text - - Ambiguous reference to anchor 'some-text' - In file a.md - It could refer to either: - - some-text (header I) at src:6:1-11 - - some-text (header I) at src:8:1-15 - - some-text (header II) at src:12:1-12 - Use of ambiguous anchors is discouraged because the target - can change silently while the document containing it evolves. +ambiguous-anchors/b.md:7:1-48: bad reference: + The reference to "ambiguous anchor in other file" failed verification. + Ambiguous reference to anchor 'some-text' + in file a.md + It could refer to either: + - some-text (header I) at ambiguous-anchors/a.md:6:1-11 + - some-text (header I) at ambiguous-anchors/a.md:8:1-15 + - some-text (header II) at ambiguous-anchors/a.md:12:1-12 + Use of ambiguous anchors is discouraged because the target + can change silently while the document containing it evolves. Invalid references dumped, 2 in total. diff --git a/tests/golden/check-anchors/expected2.gold b/tests/golden/check-anchors/expected2.gold index 0e4d0b23..529fb283 100644 --- a/tests/golden/check-anchors/expected2.gold +++ b/tests/golden/check-anchors/expected2.gold @@ -1,27 +1,16 @@ -=== Invalid references found === +non-existing-anchors/a.md:12:1-13: bad reference: + The reference to "broken" failed verification. + Anchor 'h3' is not present, did you mean: + - h1 (header I) at non-existing-anchors/a.md:6:1-4 + - h2 (header II) at non-existing-anchors/a.md:8:1-5 - ➥ In file a.md - bad reference (file-local) at src:12:1-13: - - text: "broken" - - anchor: h3 +non-existing-anchors/a.md:14:1-18: bad reference: + The reference to "broken" failed verification. + Anchor 'heading' is not present, did you mean: + - the-heading (header I) at non-existing-anchors/a.md:10:1-13 - Anchor 'h3' is not present, did you mean: - - h1 (header I) at src:6:1-4 - - h2 (header II) at src:8:1-5 - - ➥ In file a.md - bad reference (file-local) at src:14:1-18: - - text: "broken" - - anchor: heading - - Anchor 'heading' is not present, did you mean: - - the-heading (header I) at src:10:1-13 - - ➥ In file a.md - bad reference (file-local) at src:16:1-31: - - text: "broken" - - anchor: really-unique-anchor - - Anchor 'really-unique-anchor' is not present +non-existing-anchors/a.md:16:1-31: bad reference: + The reference to "broken" failed verification. + Anchor 'really-unique-anchor' is not present Invalid references dumped, 3 in total. diff --git a/tests/golden/check-autolinks/check-autolinks.bats b/tests/golden/check-autolinks/check-autolinks.bats index fa3deaf4..c221b5dc 100644 --- a/tests/golden/check-autolinks/check-autolinks.bats +++ b/tests/golden/check-autolinks/check-autolinks.bats @@ -11,6 +11,6 @@ load '../helpers' @test "We're finding and checking autolinks" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -v + to_temp xrefcheck -u -v assert_diff } diff --git a/tests/golden/check-autolinks/expected.gold b/tests/golden/check-autolinks/expected.gold index 924d4f95..3ed62072 100644 --- a/tests/golden/check-autolinks/expected.gold +++ b/tests/golden/check-autolinks/expected.gold @@ -2,25 +2,22 @@ file-with-autolinks.md: - references: - - reference (external) at src:6:22-52: + - reference (external) at file-with-autolinks.md:6:22-52: - text: "https://www.google.com/doodles" - link: https://www.google.com/doodles - - reference (external) at src:8:0-18: + - reference (external) at file-with-autolinks.md:8:0-18: - text: "www.commonmark.org" - link: http://www.commonmark.org - anchors: none -=== Invalid references found === - - ➥ In file file-with-autolinks.md - bad reference (external) at src:8:0-18: - - text: "www.commonmark.org" - - link: http://www.commonmark.org - - Permanent redirect found: - -| http://www.commonmark.org - -> https://commonmark.org - ^-- stopped before this one +file-with-autolinks.md:8:0-18: bad reference: + The reference to "www.commonmark.org" failed verification. + Permanent redirect found: + -| http://www.commonmark.org + -> https://commonmark.org + ^-- stopped before this one + when processing an external link: + http://www.commonmark.org Invalid references dumped, 1 in total. diff --git a/tests/golden/check-backslash/check-backslash.bats b/tests/golden/check-backslash/check-backslash.bats index 5bec9c43..535fb83c 100644 --- a/tests/golden/check-backslash/check-backslash.bats +++ b/tests/golden/check-backslash/check-backslash.bats @@ -28,7 +28,7 @@ EOF git add a.md git add "a\a.md" - to_temp xrefcheck -v + to_temp xrefcheck -u -v assert_diff } diff --git a/tests/golden/check-backslash/expected.gold b/tests/golden/check-backslash/expected.gold index f97bb61d..2fee0911 100644 --- a/tests/golden/check-backslash/expected.gold +++ b/tests/golden/check-backslash/expected.gold @@ -2,40 +2,34 @@ a.md: - references: - - reference (relative) at src:8:1-33: + - reference (relative) at a.md:8:1-33: - text: "Reference to a\\a" - link: a\a.md - anchor: header - - reference (relative) at src:10:1-30: + - reference (relative) at a.md:10:1-30: - text: "Bad reference to a\\b" - link: a\b.md - anchor: - - anchors: - - header (header I) at src:6:1-8 + - header (header I) at a.md:6:1-8 a\a.md: - references: - - reference (relative) at src:2:1-22: + - reference (relative) at a\a.md:2:1-22: - text: "Reference to a" - link: a.md - anchor: - - - reference (relative) at src:3:1-29: + - reference (relative) at a\a.md:3:1-29: - text: "Reference to myself" - link: a\a.md - anchor: - - anchors: - - header (header I) at src:1:1-8 + - header (header I) at a\a.md:1:1-8 -=== Invalid references found === - - ➥ In file a.md - bad reference (relative) at src:10:1-30: - - text: "Bad reference to a\\b" - - link: a\b.md - - anchor: - - - File does not exist: - a\b.md - Its reference contains a backslash. Maybe it uses the wrong path separator. +a.md:10:1-30: bad reference: + The reference to "Bad reference to a\\b" failed verification. + File does not exist: + a\b.md + Its reference contains a backslash. Maybe it uses the wrong path separator. Invalid references dumped, 1 in total. diff --git a/tests/golden/check-case-sensitivity-anchor/check-case-sensitivity-anchor.bats b/tests/golden/check-case-sensitivity-anchor/check-case-sensitivity-anchor.bats index dba95e5c..3bf725ab 100644 --- a/tests/golden/check-case-sensitivity-anchor/check-case-sensitivity-anchor.bats +++ b/tests/golden/check-case-sensitivity-anchor/check-case-sensitivity-anchor.bats @@ -12,12 +12,12 @@ load '../helpers' @test "GitHub anchors: check, ambiguous and similar detection is case-insensitive" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck -c config-github.yaml + to_temp xrefcheck -u -c config-github.yaml assert_diff } @test "GitLab anchors: check and ambiguous detection is case-sensitive, but similar detection is not" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck -c config-gitlab.yaml + to_temp xrefcheck -u -c config-gitlab.yaml assert_diff } diff --git a/tests/golden/check-case-sensitivity-anchor/expected1.gold b/tests/golden/check-case-sensitivity-anchor/expected1.gold index 18629ce5..7c8a0464 100644 --- a/tests/golden/check-case-sensitivity-anchor/expected1.gold +++ b/tests/golden/check-case-sensitivity-anchor/expected1.gold @@ -1,28 +1,20 @@ -=== Invalid references found === +a.md:18:1-36: bad reference: + The reference to "Mixing case reference" failed verification. + Anchor 'SomE-HEADr' is not present, did you mean: + - some-header (header I) at a.md:6:1-13 + - another-header (header I) at a.md:10:1-16 + - custom-header (header I) at a.md:12:1-43 + - Another-header (handmade) at a.md:12:3-27 + - custom-header (header I) at a.md:14:1-43 - ➥ In file a.md - bad reference (file-local) at src:18:1-36: - - text: "Mixing case reference" - - anchor: SomE-HEADr - - Anchor 'SomE-HEADr' is not present, did you mean: - - some-header (header I) at src:6:1-13 - - another-header (header I) at src:10:1-16 - - custom-header (header I) at src:12:1-43 - - Another-header (hand made) at src:12:3-27 - - custom-header (header I) at src:14:1-43 - - ➥ In file a.md - bad reference (file-local) at src:24:1-44: - - text: "Maybe ambiguous reference" - - anchor: another-header - - Ambiguous reference to anchor 'another-header' - In file a.md - It could refer to either: - - another-header (header I) at src:10:1-16 - - Another-header (hand made) at src:12:3-27 - Use of ambiguous anchors is discouraged because the target - can change silently while the document containing it evolves. +a.md:24:1-44: bad reference: + The reference to "Maybe ambiguous reference" failed verification. + Ambiguous reference to anchor 'another-header' + in file a.md + It could refer to either: + - another-header (header I) at a.md:10:1-16 + - Another-header (handmade) at a.md:12:3-27 + Use of ambiguous anchors is discouraged because the target + can change silently while the document containing it evolves. Invalid references dumped, 2 in total. diff --git a/tests/golden/check-case-sensitivity-anchor/expected2.gold b/tests/golden/check-case-sensitivity-anchor/expected2.gold index 53e4cb35..290b0f0a 100644 --- a/tests/golden/check-case-sensitivity-anchor/expected2.gold +++ b/tests/golden/check-case-sensitivity-anchor/expected2.gold @@ -1,35 +1,24 @@ -=== Invalid references found === +a.md:16:1-37: bad reference: + The reference to "Mixing case reference" failed verification. + Anchor 'SomE-HEADer' is not present, did you mean: + - some-header (header I) at a.md:6:1-13 + - another-header (header I) at a.md:10:1-16 + - custom-header (header I) at a.md:12:1-43 + - Another-header (handmade) at a.md:12:3-27 + - custom-header (header I) at a.md:14:1-43 - ➥ In file a.md - bad reference (file-local) at src:16:1-37: - - text: "Mixing case reference" - - anchor: SomE-HEADer +a.md:18:1-36: bad reference: + The reference to "Mixing case reference" failed verification. + Anchor 'SomE-HEADr' is not present, did you mean: + - some-header (header I) at a.md:6:1-13 + - another-header (header I) at a.md:10:1-16 + - custom-header (header I) at a.md:12:1-43 + - Another-header (handmade) at a.md:12:3-27 + - custom-header (header I) at a.md:14:1-43 - Anchor 'SomE-HEADer' is not present, did you mean: - - some-header (header I) at src:6:1-13 - - another-header (header I) at src:10:1-16 - - custom-header (header I) at src:12:1-43 - - Another-header (hand made) at src:12:3-27 - - custom-header (header I) at src:14:1-43 - - ➥ In file a.md - bad reference (file-local) at src:18:1-36: - - text: "Mixing case reference" - - anchor: SomE-HEADr - - Anchor 'SomE-HEADr' is not present, did you mean: - - some-header (header I) at src:6:1-13 - - another-header (header I) at src:10:1-16 - - custom-header (header I) at src:12:1-43 - - Another-header (hand made) at src:12:3-27 - - custom-header (header I) at src:14:1-43 - - ➥ In file a.md - bad reference (file-local) at src:22:1-36: - - text: "Reference lowered" - - anchor: uppercase-name - - Anchor 'uppercase-name' is not present, did you mean: - - UPPERCASE-NAME (hand made) at src:14:3-27 +a.md:22:1-36: bad reference: + The reference to "Reference lowered" failed verification. + Anchor 'uppercase-name' is not present, did you mean: + - UPPERCASE-NAME (handmade) at a.md:14:3-27 Invalid references dumped, 3 in total. diff --git a/tests/golden/check-case-sensitivity-path/check-case-sensitivity-path.bats b/tests/golden/check-case-sensitivity-path/check-case-sensitivity-path.bats index 858c36a6..dc3e25ac 100644 --- a/tests/golden/check-case-sensitivity-path/check-case-sensitivity-path.bats +++ b/tests/golden/check-case-sensitivity-path/check-case-sensitivity-path.bats @@ -12,12 +12,12 @@ load '../helpers' @test "GitHub paths: case-sensitive" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -v -c config-github.yaml + to_temp xrefcheck -u -v -c config-github.yaml assert_diff } @test "GitLab paths: case-sensitive" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -v -c config-gitlab.yaml + to_temp xrefcheck -u -v -c config-gitlab.yaml assert_diff } diff --git a/tests/golden/check-case-sensitivity-path/expected.gold b/tests/golden/check-case-sensitivity-path/expected.gold index c5d3bac7..24bc19c8 100644 --- a/tests/golden/check-case-sensitivity-path/expected.gold +++ b/tests/golden/check-case-sensitivity-path/expected.gold @@ -2,129 +2,99 @@ a.md: - references: - - reference (relative) at src:8:3-11: + - reference (relative) at a.md:8:3-11: - text: "a" - link: a.md - anchor: - - - reference (relative) at src:9:3-29: + - reference (relative) at a.md:9:3-29: - text: "Header a" - link: dir/b.md - anchor: header - - reference (relative) at src:10:3-15: + - reference (relative) at a.md:10:3-15: - text: "b" - link: dir/b.md - anchor: - - - reference (relative) at src:11:3-29: + - reference (relative) at a.md:11:3-29: - text: "Header b" - link: dir/b.md - anchor: header - - reference (relative) at src:12:3-17: + - reference (relative) at a.md:12:3-17: - text: "Wrong a" - link: A.md - anchor: - - - reference (relative) at src:13:3-27: + - reference (relative) at a.md:13:3-27: - text: "Wrong a extension" - link: a.Md - anchor: - - - reference (relative) at src:14:3-21: + - reference (relative) at a.md:14:3-21: - text: "Wrong b" - link: dir/B.md - anchor: - - - reference (absolute) at src:15:3-26: + - reference (absolute) at a.md:15:3-26: - text: "Wrong b dir" - link: /dIr/b.md - anchor: - - - reference (absolute) at src:16:3-32: + - reference (absolute) at a.md:16:3-32: - text: "Wrong b extension" - link: /dir/b.mD - anchor: - - anchors: - - header (header I) at src:6:1-8 + - header (header I) at a.md:6:1-8 dir/b.md: - references: - - reference (relative) at src:8:3-20: + - reference (relative) at dir/b.md:8:3-20: - text: "Right a" - link: ../a.md - anchor: - - - reference (relative) at src:9:3-19: + - reference (relative) at dir/b.md:9:3-19: - text: "Right b" - link: ./b.md - anchor: - - - reference (relative) at src:10:3-20: + - reference (relative) at dir/b.md:10:3-20: - text: "Wrong a" - link: ../A.md - anchor: - - - reference (relative) at src:11:3-19: + - reference (relative) at dir/b.md:11:3-19: - text: "Wrong b" - link: ./B.md - anchor: - - anchors: - - header (header I) at src:6:1-8 - -=== Invalid references found === - - ➥ In file a.md - bad reference (relative) at src:12:3-17: - - text: "Wrong a" - - link: A.md - - anchor: - - - File does not exist: - A.md - - ➥ In file a.md - bad reference (relative) at src:13:3-27: - - text: "Wrong a extension" - - link: a.Md - - anchor: - - - File does not exist: - a.Md - - ➥ In file a.md - bad reference (relative) at src:14:3-21: - - text: "Wrong b" - - link: dir/B.md - - anchor: - - - File does not exist: - dir/B.md - - ➥ In file a.md - bad reference (absolute) at src:15:3-26: - - text: "Wrong b dir" - - link: /dIr/b.md - - anchor: - - - File does not exist: - dIr/b.md - - ➥ In file a.md - bad reference (absolute) at src:16:3-32: - - text: "Wrong b extension" - - link: /dir/b.mD - - anchor: - - - File does not exist: - dir/b.mD - - ➥ In file dir/b.md - bad reference (relative) at src:10:3-20: - - text: "Wrong a" - - link: ../A.md - - anchor: - - - File does not exist: - dir/../A.md - - ➥ In file dir/b.md - bad reference (relative) at src:11:3-19: - - text: "Wrong b" - - link: ./B.md - - anchor: - - - File does not exist: - dir/./B.md + - header (header I) at dir/b.md:6:1-8 + +a.md:12:3-17: bad reference: + The reference to "Wrong a" failed verification. + File does not exist: + A.md + +a.md:13:3-27: bad reference: + The reference to "Wrong a extension" failed verification. + File does not exist: + a.Md + +a.md:14:3-21: bad reference: + The reference to "Wrong b" failed verification. + File does not exist: + dir/B.md + +a.md:15:3-26: bad reference: + The reference to "Wrong b dir" failed verification. + File does not exist: + dIr/b.md + +a.md:16:3-32: bad reference: + The reference to "Wrong b extension" failed verification. + File does not exist: + dir/b.mD + +dir/b.md:10:3-20: bad reference: + The reference to "Wrong a" failed verification. + File does not exist: + dir/../A.md + +dir/b.md:11:3-19: bad reference: + The reference to "Wrong b" failed verification. + File does not exist: + dir/./B.md Invalid references dumped, 7 in total. diff --git a/tests/golden/check-cli/check-cli.bats b/tests/golden/check-cli/check-cli.bats index 4e4db229..8fca9863 100644 --- a/tests/golden/check-cli/check-cli.bats +++ b/tests/golden/check-cli/check-cli.bats @@ -10,7 +10,7 @@ load '../helpers/bats-file/load' load '../helpers' @test "No redundant slashes" { - run xrefcheck \ + run xrefcheck -u \ --ignore to-ignore/* \ --root . @@ -18,7 +18,7 @@ load '../helpers' } @test "Redundant slashes in root and ignore" { - run xrefcheck \ + run xrefcheck -u \ --ignore ./././././././//to-ignore/* \ --root ./ @@ -26,7 +26,7 @@ load '../helpers' } @test "Redundant slashes in root" { - run xrefcheck \ + run xrefcheck -u \ -c config-no-scan-ignored.yaml \ --root ./ @@ -34,7 +34,7 @@ load '../helpers' } @test "Redundant slashes in ignore" { - run xrefcheck \ + run xrefcheck -u \ --ignore ./././././././//to-ignore/* \ --root . @@ -43,24 +43,24 @@ load '../helpers' @test "Basic root, check errors report" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck --root . + to_temp xrefcheck -u --root . assert_diff } @test "Root with redundant slashes, check errors report" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck --root ././///././././//./ + to_temp xrefcheck -u --root ././///././././//./ assert_diff } @test "No root, check errors report" { golden_file=$(realpath expected3.gold) - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } @test "Single file as root" { - run xrefcheck \ + run xrefcheck -u \ --root single-file.md assert_failure diff --git a/tests/golden/check-cli/expected1.gold b/tests/golden/check-cli/expected1.gold index 268089a2..1ee32281 100644 --- a/tests/golden/check-cli/expected1.gold +++ b/tests/golden/check-cli/expected1.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file to-ignore/broken-link.md - bad reference (absolute) at src:7:1-25: - - text: "my link" - - link: /one/two/three - - anchor: - - - File does not exist: - one/two/three +to-ignore/broken-link.md:7:1-25: bad reference: + The reference to "my link" failed verification. + File does not exist: + one/two/three Invalid references dumped, 1 in total. diff --git a/tests/golden/check-cli/expected2.gold b/tests/golden/check-cli/expected2.gold index 268089a2..1ee32281 100644 --- a/tests/golden/check-cli/expected2.gold +++ b/tests/golden/check-cli/expected2.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file to-ignore/broken-link.md - bad reference (absolute) at src:7:1-25: - - text: "my link" - - link: /one/two/three - - anchor: - - - File does not exist: - one/two/three +to-ignore/broken-link.md:7:1-25: bad reference: + The reference to "my link" failed verification. + File does not exist: + one/two/three Invalid references dumped, 1 in total. diff --git a/tests/golden/check-cli/expected3.gold b/tests/golden/check-cli/expected3.gold index 268089a2..1ee32281 100644 --- a/tests/golden/check-cli/expected3.gold +++ b/tests/golden/check-cli/expected3.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file to-ignore/broken-link.md - bad reference (absolute) at src:7:1-25: - - text: "my link" - - link: /one/two/three - - anchor: - - - File does not exist: - one/two/three +to-ignore/broken-link.md:7:1-25: bad reference: + The reference to "my link" failed verification. + File does not exist: + one/two/three Invalid references dumped, 1 in total. diff --git a/tests/golden/check-color/check-color.bats b/tests/golden/check-color/check-color.bats index 0146df5d..cb92c185 100644 --- a/tests/golden/check-color/check-color.bats +++ b/tests/golden/check-color/check-color.bats @@ -16,34 +16,34 @@ load '../helpers' @test "Color flag (not in CI)" { golden_file=$(realpath expected-color.gold) output_file="$TEST_TEMP_DIR/temp_file.test" - CI=false xrefcheck -v --no-progress --color > $output_file + CI=false xrefcheck -u -v --no-progress --color > $output_file assert_diff } @test "No color flag (not in CI)" { golden_file=$(realpath expected-no-color.gold) output_file="$TEST_TEMP_DIR/temp_file.test" - CI=false xrefcheck -v --no-progress --no-color > $output_file + CI=false xrefcheck -u -v --no-progress --no-color > $output_file assert_diff } @test "No color default when pipe (not in CI)" { golden_file=$(realpath expected-no-color.gold) output_file="$TEST_TEMP_DIR/temp_file.test" - CI=false xrefcheck -v --no-progress > $output_file + CI=false xrefcheck -u -v --no-progress > $output_file assert_diff } @test "Color default when CI" { golden_file=$(realpath expected-color.gold) output_file="$TEST_TEMP_DIR/temp_file.test" - CI=true xrefcheck -v --no-progress > $output_file + CI=true xrefcheck -u -v --no-progress > $output_file assert_diff } @test "No color flag in CI" { golden_file=$(realpath expected-no-color.gold) output_file="$TEST_TEMP_DIR/temp_file.test" - CI=true xrefcheck -v --no-progress --no-color > $output_file + CI=true xrefcheck -u -v --no-progress --no-color > $output_file assert_diff } diff --git a/tests/golden/check-color/expected-color.gold b/tests/golden/check-color/expected-color.gold index 1add363a..d0352478 100644 --- a/tests/golden/check-color/expected-color.gold +++ b/tests/golden/check-color/expected-color.gold @@ -2,10 +2,10 @@ color.md: - references: - - reference (file-local) at src:9:1-15: + - reference (file-local) at color.md:9:1-15: - text: "Color" - anchor: Color - anchors: - - color (header I) at src:7:1-7 + - color (header I) at color.md:7:1-7 -All repository links are valid. +All repository links are valid. diff --git a/tests/golden/check-color/expected-no-color.gold b/tests/golden/check-color/expected-no-color.gold index 4d892eed..973dc433 100644 --- a/tests/golden/check-color/expected-no-color.gold +++ b/tests/golden/check-color/expected-no-color.gold @@ -2,10 +2,10 @@ color.md: - references: - - reference (file-local) at src:9:1-15: + - reference (file-local) at color.md:9:1-15: - text: "Color" - anchor: Color - anchors: - - color (header I) at src:7:1-7 + - color (header I) at color.md:7:1-7 All repository links are valid. diff --git a/tests/golden/check-footnotes/check-footnotes.bats b/tests/golden/check-footnotes/check-footnotes.bats index 5ae90d58..3d221374 100644 --- a/tests/golden/check-footnotes/check-footnotes.bats +++ b/tests/golden/check-footnotes/check-footnotes.bats @@ -12,13 +12,13 @@ load '../helpers' @test "We report broken links inside footnotes" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -r broken-link-in-footnote + to_temp xrefcheck -u -r broken-link-in-footnote assert_diff } @test "We're not treating footnotes as 'shortcut reference links'" { # See: https://github.com/serokell/xrefcheck/issues/155 - run xrefcheck -r one-word-footnote + run xrefcheck -u -r one-word-footnote assert_output --partial "All repository links are valid." } diff --git a/tests/golden/check-footnotes/expected.gold b/tests/golden/check-footnotes/expected.gold index 5da88571..fe1b6e0e 100644 --- a/tests/golden/check-footnotes/expected.gold +++ b/tests/golden/check-footnotes/expected.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file file-with-footnote-with-broken-link.md - bad reference (relative) at src:8:9-43: - - text: "bad link in footnote" - - link: ./notExists - - anchor: - - - File does not exist: - ./notExists +broken-link-in-footnote/file-with-footnote-with-broken-link.md:8:9-43: bad reference: + The reference to "bad link in footnote" failed verification. + File does not exist: + ./notExists Invalid references dumped, 1 in total. diff --git a/tests/golden/check-git/check-git.bats b/tests/golden/check-git/check-git.bats index af504c2c..136891a5 100644 --- a/tests/golden/check-git/check-git.bats +++ b/tests/golden/check-git/check-git.bats @@ -13,7 +13,7 @@ load '../helpers' cd $TEST_TEMP_DIR export LANG=en_US - run xrefcheck + run xrefcheck -u assert_output --partial "fatal: not a git repository" } @@ -25,7 +25,7 @@ load '../helpers' echo "[a](/a.md)" >> "git.md" - run xrefcheck + run xrefcheck -u assert_success @@ -46,7 +46,7 @@ load '../helpers' echo "[a](./a.md)" >> "git.md" - to_temp xrefcheck --include-untracked + to_temp xrefcheck -u --include-untracked assert_diff } @@ -62,7 +62,7 @@ load '../helpers' git add git.md - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } @@ -81,7 +81,7 @@ load '../helpers' git add git.md - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } @@ -97,7 +97,7 @@ load '../helpers' git add git.md - run xrefcheck --include-untracked + run xrefcheck -u --include-untracked assert_success diff --git a/tests/golden/check-git/expected1.gold b/tests/golden/check-git/expected1.gold index f0898822..851ec1a0 100644 --- a/tests/golden/check-git/expected1.gold +++ b/tests/golden/check-git/expected1.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file git.md - bad reference (relative) at src:1:1-11: - - text: "a" - - link: ./a.md - - anchor: - - - File does not exist: - ./a.md +git.md:1:1-11: bad reference: + The reference to "a" failed verification. + File does not exist: + ./a.md Invalid references dumped, 1 in total. diff --git a/tests/golden/check-git/expected2.gold b/tests/golden/check-git/expected2.gold index f0898822..851ec1a0 100644 --- a/tests/golden/check-git/expected2.gold +++ b/tests/golden/check-git/expected2.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file git.md - bad reference (relative) at src:1:1-11: - - text: "a" - - link: ./a.md - - anchor: - - - File does not exist: - ./a.md +git.md:1:1-11: bad reference: + The reference to "a" failed verification. + File does not exist: + ./a.md Invalid references dumped, 1 in total. diff --git a/tests/golden/check-git/expected3.gold b/tests/golden/check-git/expected3.gold index 5c6140e6..e4ada6f4 100644 --- a/tests/golden/check-git/expected3.gold +++ b/tests/golden/check-git/expected3.gold @@ -1,13 +1,7 @@ -=== Invalid references found === - - ➥ In file git.md - bad reference (relative) at src:1:1-11: - - text: "a" - - link: ./a.md - - anchor: - - - Link target is not tracked by Git: - ./a.md - Please run "git add" before running xrefcheck or enable --include-untracked CLI option. +git.md:1:1-11: bad reference: + The reference to "a" failed verification. + Link (relative) targets a file not tracked by Git: + ./a.md + Please run "git add" before running xrefcheck or enable --include-untracked CLI option. Invalid references dumped, 1 in total. diff --git a/tests/golden/check-html/check.html.bats b/tests/golden/check-html/check.html.bats index 06ea97ca..401f472e 100644 --- a/tests/golden/check-html/check.html.bats +++ b/tests/golden/check-html/check.html.bats @@ -11,7 +11,7 @@ load '../helpers' @test "All HTML anchors should be valid" { - run xrefcheck + run xrefcheck -u assert_output --partial "All repository links are valid." } diff --git a/tests/golden/check-ignore/check-ignore.bats b/tests/golden/check-ignore/check-ignore.bats index 4dad8a0b..7bbeb626 100644 --- a/tests/golden/check-ignore/check-ignore.bats +++ b/tests/golden/check-ignore/check-ignore.bats @@ -11,66 +11,66 @@ load '../helpers' @test "Ignore file with broken xrefcheck annotation: full path" { - run xrefcheck --ignore ./to-ignore/inner-directory/broken_annotation.md + run xrefcheck -u --ignore ./to-ignore/inner-directory/broken_annotation.md assert_output --partial "All repository links are valid." } @test "Ignore file with broken xrefcheck annotation: glob wildcard" { - run xrefcheck --ignore 'to-ignore/inner-directory/*' + run xrefcheck -u --ignore 'to-ignore/inner-directory/*' assert_output --partial "All repository links are valid." } @test "Ignore file with broken xrefcheck annotation: nested directories with glob wildcard" { - run xrefcheck --ignore './**/*' + run xrefcheck -u --ignore './**/*' assert_output --partial "All repository links are valid." } @test "Ignore file with broken xrefcheck annotation: config file" { - run xrefcheck --config ./config-ignore.yaml + run xrefcheck -u --config ./config-ignore.yaml assert_output --partial "All repository links are valid." } @test "Ignore file with broken xrefcheck annotation: directory, check failure" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck --ignore ./to-ignore/inner-directory/ + to_temp xrefcheck -u --ignore ./to-ignore/inner-directory/ assert_diff } @test "Ignore referenced file, check error" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck --ignore referenced-file.md + to_temp xrefcheck -u --ignore referenced-file.md assert_diff } @test "Config: Absolute fiepath in \"ignore\" error" { - run xrefcheck --config ./config-ignore-bad-path-absolute.yaml + run xrefcheck -u --config ./config-ignore-bad-path-absolute.yaml assert_failure assert_output --partial "Expected a relative glob pattern, but got /to-ignore/inner-directory/broken_annotation.md" } @test "Config: Malformed glob in \"ignore\" error" { - run xrefcheck --config ./config-ignore-malformed-glob.yaml + run xrefcheck -u --config ./config-ignore-malformed-glob.yaml assert_failure assert_output --partial "Glob pattern compilation failed." } @test "CLI: Absolute filepath in \"ignore\" yields to error" { - run xrefcheck\ + run xrefcheck -u \ --ignore "/to-ignore/*" assert_failure assert_output --partial "option --ignore: Expected a relative glob pattern, but got /to-ignore/*" } @test "CLI: Malformed glob in arg \"ignore\" yields to error" { - run xrefcheck\ + run xrefcheck -u \ --ignore "" assert_failure assert_output --partial "option --ignore: Glob pattern compilation failed." diff --git a/tests/golden/check-ignore/expected1.gold b/tests/golden/check-ignore/expected1.gold index 864a9b18..e447d074 100644 --- a/tests/golden/check-ignore/expected1.gold +++ b/tests/golden/check-ignore/expected1.gold @@ -1,8 +1,4 @@ -=== Scan errors found === - - ➥ In file to-ignore/inner-directory/broken_annotation.md - scan error at src:9:1-29: - - Annotation "ignore all" must be at the top of markdown or right after comments at the top +to-ignore/inner-directory/broken_annotation.md:9:1-29: scan error: + Annotation "ignore all" must be at the top of markdown or right after comments at the top Scan errors dumped, 1 in total. diff --git a/tests/golden/check-ignore/expected2.gold b/tests/golden/check-ignore/expected2.gold index 7fc99c69..c4a6044f 100644 --- a/tests/golden/check-ignore/expected2.gold +++ b/tests/golden/check-ignore/expected2.gold @@ -1,21 +1,11 @@ -=== Scan errors found === - - ➥ In file to-ignore/inner-directory/broken_annotation.md - scan error at src:9:1-29: - - Annotation "ignore all" must be at the top of markdown or right after comments at the top +to-ignore/inner-directory/broken_annotation.md:9:1-29: scan error: + Annotation "ignore all" must be at the top of markdown or right after comments at the top Scan errors dumped, 1 in total. -=== Invalid references found === - - ➥ In file check-ignore.md - bad reference (absolute) at src:7:1-37: - - text: "Good reference" - - link: /referenced-file.md - - anchor: - - - File does not exist: - referenced-file.md +check-ignore.md:7:1-37: bad reference: + The reference to "Good reference" failed verification. + File does not exist: + referenced-file.md Invalid references dumped, 1 in total. diff --git a/tests/golden/check-ignoreExternalRefsTo/check-ignoreExternalRefsTo.bats b/tests/golden/check-ignoreExternalRefsTo/check-ignoreExternalRefsTo.bats index e7afaa95..990196c9 100644 --- a/tests/golden/check-ignoreExternalRefsTo/check-ignoreExternalRefsTo.bats +++ b/tests/golden/check-ignoreExternalRefsTo/check-ignoreExternalRefsTo.bats @@ -10,7 +10,7 @@ load '../helpers/bats-file/load' load '../helpers' @test "Ignore localhost" { - run xrefcheck \ + run xrefcheck -u \ -c config-check-disabled.yaml \ -r . @@ -18,20 +18,9 @@ load '../helpers' } @test "Ignore localhost, check errors" { - uname_out=$(uname) - case "${uname_out}" in - Linux*) platform_suffix=linux;; - Darwin*) platform_suffix=darwin;; - CYGWIN*) platform_suffix=windows;; - MINGW*) platform_suffix=windows;; - MSYS_NT*) platform_suffix=windows;; - *) machine="UNKNOWN:${unameOut}" - esac - echo "platform_suffix=${platform_suffix}" - - golden_file=$(realpath expected_${platform_suffix}.gold) - - to_temp xrefcheck \ + golden_file=$(realpath expected.gold) + + to_temp xrefcheck -u \ -c config-check-enabled.yaml \ -r . @@ -39,7 +28,7 @@ load '../helpers' } @test "Ignore localhost, no config specified" { - run xrefcheck + run xrefcheck -u assert_output --partial "All repository links are valid." } diff --git a/tests/golden/check-ignoreExternalRefsTo/expected.gold b/tests/golden/check-ignoreExternalRefsTo/expected.gold new file mode 100644 index 00000000..1b047727 --- /dev/null +++ b/tests/golden/check-ignoreExternalRefsTo/expected.gold @@ -0,0 +1,25 @@ +check-ignoreExternalRefsTo.md:7:10-53: bad reference: + The reference to "web-site" failed verification. + Connection failure + when processing an external link: + https://localhost:20000/web-site + +check-ignoreExternalRefsTo.md:9:10-45: bad reference: + The reference to "team" failed verification. + Connection failure + when processing an external link: + https://127.0.0.1:20000/team + +check-ignoreExternalRefsTo.md:11:10-44: bad reference: + The reference to "blog" failed verification. + Connection failure + when processing an external link: + http://localhost:20000/blog + +check-ignoreExternalRefsTo.md:13:10-44: bad reference: + The reference to "labs" failed verification. + Connection failure + when processing an external link: + http://127.0.0.1:20000/labs + +Invalid references dumped, 4 in total. diff --git a/tests/golden/check-ignoreExternalRefsTo/expected_linux.gold b/tests/golden/check-ignoreExternalRefsTo/expected_linux.gold deleted file mode 100644 index 25a1dd1b..00000000 --- a/tests/golden/check-ignoreExternalRefsTo/expected_linux.gold +++ /dev/null @@ -1,31 +0,0 @@ -=== Invalid references found === - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:7:10-53: - - text: "web-site" - - link: https://localhost:20000/web-site - - InternalException (HostCannotConnect "localhost" [Network.Socket.connect: : does not exist (Connection refused)]) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:9:10-45: - - text: "team" - - link: https://127.0.0.1:20000/team - - InternalException (HostCannotConnect "127.0.0.1" [Network.Socket.connect: : does not exist (Connection refused)]) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:11:10-44: - - text: "blog" - - link: http://localhost:20000/blog - - ConnectionFailure Network.Socket.connect: : does not exist (Connection refused) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:13:10-44: - - text: "labs" - - link: http://127.0.0.1:20000/labs - - ConnectionFailure Network.Socket.connect: : does not exist (Connection refused) - -Invalid references dumped, 4 in total. diff --git a/tests/golden/check-ignoreExternalRefsTo/expected_windows.gold b/tests/golden/check-ignoreExternalRefsTo/expected_windows.gold deleted file mode 100644 index 06cf5edd..00000000 --- a/tests/golden/check-ignoreExternalRefsTo/expected_windows.gold +++ /dev/null @@ -1,31 +0,0 @@ -=== Invalid references found === - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:7:10-53: - - text: "web-site" - - link: https://localhost:20000/web-site - - InternalException (HostCannotConnect "localhost" [Network.Socket.connect: : failed (Connection refused (WSAECONNREFUSED)),Network.Socket.connect: : failed (Connection refused (WSAECONNREFUSED))]) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:9:10-45: - - text: "team" - - link: https://127.0.0.1:20000/team - - InternalException (HostCannotConnect "127.0.0.1" [Network.Socket.connect: : failed (Connection refused (WSAECONNREFUSED))]) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:11:10-44: - - text: "blog" - - link: http://localhost:20000/blog - - ConnectionFailure Network.Socket.connect: : failed (Connection refused (WSAECONNREFUSED)) - - ➥ In file check-ignoreExternalRefsTo.md - bad reference (external) at src:13:10-44: - - text: "labs" - - link: http://127.0.0.1:20000/labs - - ConnectionFailure Network.Socket.connect: : failed (Connection refused (WSAECONNREFUSED)) - -Invalid references dumped, 4 in total. diff --git a/tests/golden/check-ignoreLocalRefsTo/check-ignoreLocalRefsTo.bats b/tests/golden/check-ignoreLocalRefsTo/check-ignoreLocalRefsTo.bats index 9246e010..daa62d08 100644 --- a/tests/golden/check-ignoreLocalRefsTo/check-ignoreLocalRefsTo.bats +++ b/tests/golden/check-ignoreLocalRefsTo/check-ignoreLocalRefsTo.bats @@ -11,13 +11,13 @@ load '../helpers' @test "IgnoreLocalRefsTo: all references should be valid" { - run xrefcheck -c ./config-ignoreLocalRefsTo.yaml + run xrefcheck -u -c ./config-ignoreLocalRefsTo.yaml assert_output --partial "All repository links are valid." } @test "IgnoreLocalRefsTo: check failure" { golden_file=$(realpath expected.gold) - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } diff --git a/tests/golden/check-ignoreLocalRefsTo/expected.gold b/tests/golden/check-ignoreLocalRefsTo/expected.gold index a2d8e536..37d7b8b2 100644 --- a/tests/golden/check-ignoreLocalRefsTo/expected.gold +++ b/tests/golden/check-ignoreLocalRefsTo/expected.gold @@ -1,66 +1,36 @@ -=== Invalid references found === - - ➥ In file check-ignoreLocalRefsTo.md - bad reference (absolute) at src:7:1-22: - - text: "full path" - - link: /one/a.md - - anchor: - - - File does not exist: - one/a.md - - ➥ In file check-ignoreLocalRefsTo.md - bad reference (absolute) at src:9:1-26: - - text: "glob wildcard" - - link: /two/b.md - - anchor: - - - File does not exist: - two/b.md - - ➥ In file check-ignoreLocalRefsTo.md - bad reference (absolute) at src:11:1-39: - - text: "recursive directory glob" - - link: /three/c.md - - anchor: - - - File does not exist: - three/c.md - - ➥ In file check-ignoreLocalRefsTo.md - bad reference (absolute) at src:13:1-51: - - text: "recursive nested directory glob" - - link: /three/four/d.md - - anchor: - - - File does not exist: - three/four/d.md - - ➥ In file check-ignoreLocalRefsTo.md - bad reference (absolute) at src:15:1-59: - - text: "another recursive nested directory glob" - - link: /three/five/e.md - - anchor: - - - File does not exist: - three/five/e.md - - ➥ In file one/file.md - bad reference (relative) at src:7:1-58: - - text: "check ignoreLocalRefsTo are relative to the root" - - link: ./a.md - - anchor: - - - File does not exist: - one/./a.md - - ➥ In file one/file.md - bad reference (relative) at src:9:1-23: - - text: "one more" - - link: ../two/b.md - - anchor: - - - File does not exist: - one/../two/b.md +check-ignoreLocalRefsTo.md:7:1-22: bad reference: + The reference to "full path" failed verification. + File does not exist: + one/a.md + +check-ignoreLocalRefsTo.md:9:1-26: bad reference: + The reference to "glob wildcard" failed verification. + File does not exist: + two/b.md + +check-ignoreLocalRefsTo.md:11:1-39: bad reference: + The reference to "recursive directory glob" failed verification. + File does not exist: + three/c.md + +check-ignoreLocalRefsTo.md:13:1-51: bad reference: + The reference to "recursive nested directory glob" failed verification. + File does not exist: + three/four/d.md + +check-ignoreLocalRefsTo.md:15:1-59: bad reference: + The reference to "another recursive nested directory glob" failed verification. + File does not exist: + three/five/e.md + +one/file.md:7:1-58: bad reference: + The reference to "check ignoreLocalRefsTo are relative to the root" failed verification. + File does not exist: + one/./a.md + +one/file.md:9:1-23: bad reference: + The reference to "one more" failed verification. + File does not exist: + one/../two/b.md Invalid references dumped, 7 in total. diff --git a/tests/golden/check-ignoreRefsFrom/check-ignoreRefsFrom.bats b/tests/golden/check-ignoreRefsFrom/check-ignoreRefsFrom.bats index ff8b0b04..8c24f6c1 100644 --- a/tests/golden/check-ignoreRefsFrom/check-ignoreRefsFrom.bats +++ b/tests/golden/check-ignoreRefsFrom/check-ignoreRefsFrom.bats @@ -11,25 +11,25 @@ load '../helpers' @test "ignoreRefsFrom: full path" { - run xrefcheck -c config-full-path.yaml + run xrefcheck -u -c config-full-path.yaml assert_output --partial "All repository links are valid." } @test "ignoreRefsFrom: glob wildcard" { - run xrefcheck -c config-wildcard.yaml + run xrefcheck -u -c config-wildcard.yaml assert_output --partial "All repository links are valid." } @test "ignoreRefsFrom: nested directories with glob wildcard" { - run xrefcheck -c config-nested-directories.yaml + run xrefcheck -u -c config-nested-directories.yaml assert_output --partial "All repository links are valid." } @test "ignoreRefsFrom: directory, check failure" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -c config-directory.yaml + to_temp xrefcheck -u -c config-directory.yaml assert_diff } diff --git a/tests/golden/check-ignoreRefsFrom/expected.gold b/tests/golden/check-ignoreRefsFrom/expected.gold index c60e3f25..509fa941 100644 --- a/tests/golden/check-ignoreRefsFrom/expected.gold +++ b/tests/golden/check-ignoreRefsFrom/expected.gold @@ -1,12 +1,6 @@ -=== Invalid references found === - - ➥ In file ignoreRefsFrom/inner-directory/bad-reference.md - bad reference (absolute) at src:7:1-28: - - text: "Bad reference" - - link: /no-file.md - - anchor: - - - File does not exist: - no-file.md +ignoreRefsFrom/inner-directory/bad-reference.md:7:1-28: bad reference: + The reference to "Bad reference" failed verification. + File does not exist: + no-file.md Invalid references dumped, 1 in total. diff --git a/tests/golden/check-images/check-images.bats b/tests/golden/check-images/check-images.bats index 31dd9a16..75c0afe9 100644 --- a/tests/golden/check-images/check-images.bats +++ b/tests/golden/check-images/check-images.bats @@ -11,6 +11,6 @@ load '../helpers' @test "Check images" { golden_file=$(realpath expected.gold) - to_temp xrefcheck -v + to_temp xrefcheck -u -v assert_diff } diff --git a/tests/golden/check-images/expected.gold b/tests/golden/check-images/expected.gold index 0413e83c..08dfb7bb 100644 --- a/tests/golden/check-images/expected.gold +++ b/tests/golden/check-images/expected.gold @@ -2,61 +2,49 @@ check-images.md: - references: - - reference (external) at src:7:1-76: + - reference (external) at check-images.md:7:1-76: - text: "good image ref 1" - link: https://avatars.githubusercontent.com/u/13840520 - - reference (external) at src:9:1-35: + - reference (external) at check-images.md:9:1-35: - text: "good image ref 2" - link: https://avatars.githubusercontent.com/u/13840520 - - reference (external) at src:14:1-52: + - reference (external) at check-images.md:14:1-52: - text: "bad image ref 1" - link: https://serokell.io/1.png - - reference (external) at src:16:1-33: + - reference (external) at check-images.md:16:1-33: - text: "bad image ref 2" - link: https://serokell.io/2.png - - reference (relative) at src:20:1-34: + - reference (relative) at check-images.md:20:1-34: - text: "bad image ref 3" - link: ./3.png - anchor: - - - reference (relative) at src:21:1-33: + - reference (relative) at check-images.md:21:1-33: - text: "bad image ref 4" - link: ./4.png - anchor: - - anchors: none -=== Invalid references found === - - ➥ In file check-images.md - bad reference (external) at src:14:1-52: - - text: "bad image ref 1" - - link: https://serokell.io/1.png - - Resource unavailable (404 Not Found) - - ➥ In file check-images.md - bad reference (external) at src:16:1-33: - - text: "bad image ref 2" - - link: https://serokell.io/2.png - - Resource unavailable (404 Not Found) - - ➥ In file check-images.md - bad reference (relative) at src:20:1-34: - - text: "bad image ref 3" - - link: ./3.png - - anchor: - - - File does not exist: - ./3.png - - ➥ In file check-images.md - bad reference (relative) at src:21:1-33: - - text: "bad image ref 4" - - link: ./4.png - - anchor: - - - File does not exist: - ./4.png +check-images.md:14:1-52: bad reference: + The reference to "bad image ref 1" failed verification. + Resource unavailable (404 Not Found) + when processing an external link: + https://serokell.io/1.png + +check-images.md:16:1-33: bad reference: + The reference to "bad image ref 2" failed verification. + Resource unavailable (404 Not Found) + when processing an external link: + https://serokell.io/2.png + +check-images.md:20:1-34: bad reference: + The reference to "bad image ref 3" failed verification. + File does not exist: + ./3.png + +check-images.md:21:1-33: bad reference: + The reference to "bad image ref 4" failed verification. + File does not exist: + ./4.png Invalid references dumped, 4 in total. diff --git a/tests/golden/check-local-refs/check-local-refs.bats b/tests/golden/check-local-refs/check-local-refs.bats index f3187d7d..b6d52970 100644 --- a/tests/golden/check-local-refs/check-local-refs.bats +++ b/tests/golden/check-local-refs/check-local-refs.bats @@ -12,18 +12,18 @@ load '../helpers' @test "Checking local references, root = \".\"" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } @test "Checking local references, root = \"dir1\"" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck -r dir1 + to_temp xrefcheck -u -r dir1 assert_diff } @test "Checking behavior when there are virtual files, root = \"dir1\"" { golden_file=$(realpath expected3.gold) - to_temp xrefcheck -r dir1 -c config-with-virtual-files.yaml + to_temp xrefcheck -u -r dir1 -c config-with-virtual-files.yaml assert_diff } diff --git a/tests/golden/check-local-refs/expected1.gold b/tests/golden/check-local-refs/expected1.gold index f4648a51..580bf51e 100644 --- a/tests/golden/check-local-refs/expected1.gold +++ b/tests/golden/check-local-refs/expected1.gold @@ -1,117 +1,64 @@ -=== Invalid references found === - - ➥ In file dir1/dir2/d2f1.md - bad reference (file-local) at src:9:1-18: - - text: "bad-cf-ref" - - anchor: bad - - Anchor 'bad' is not present - - ➥ In file dir1/dir2/d2f1.md - bad reference (relative) at src:27:1-43: - - text: "bad-file-rel" - - link: ../a/b/c/unexisting-file.md - - anchor: - - - File does not exist: - dir1/dir2/../a/b/c/unexisting-file.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (relative) at src:28:1-31: - - text: "bad-casing-file-rel" - - link: D2F2.md/ - - anchor: - - - File does not exist: - dir1/dir2/D2F2.md/ - - ➥ In file dir1/dir2/d2f1.md - bad reference (relative) at src:29:1-32: - - text: "bad-casing-folder-rel" - - link: ../DIR2 - - anchor: - - - File does not exist: - dir1/dir2/../DIR2 - - ➥ In file dir1/dir2/d2f1.md - bad reference (relative) at src:31:1-38: - - text: "bad-anchor-rel-1" - - link: d2f2.md - - anchor: bad-anchor - - Anchor 'bad-anchor' is not present - - ➥ In file dir1/dir2/d2f1.md - bad reference (relative) at src:32:1-49: - - text: "bad-anchor-rel-2" - - link: unexisting-file.md - - anchor: bad-anchor - - File does not exist: - dir1/dir2/unexisting-file.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:42:1-22: - - text: "file-abs-2" - - link: /d1f1.md - - anchor: - - - File does not exist: - d1f1.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:43:1-27: - - text: "file-abs-3" - - link: /dir2/d2f2.md - - anchor: - - - File does not exist: - dir2/d2f2.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:44:1-32: - - text: "file-abs-4" - - link: /./dir2/../d1f1.md - - anchor: - - - File does not exist: - ./dir2/../d1f1.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:45:1-37: - - text: "file-abs-slash" - - link: /./dir2/../d1f1.md/ - - anchor: - - - File does not exist: - ./dir2/../d1f1.md/ - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:46:1-55: - - text: "anchor-abs-3" - - link: /./dir2/../d1f1.md - - anchor: existing-anchor-d1f1 - - File does not exist: - ./dir2/../d1f1.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:57:1-16: - - text: "A" - - link: /../../a.md - - anchor: - - - Link targets a local file outside repository: - ../../a.md - - ➥ In file dir1/dir2/d2f1.md - bad reference (absolute) at src:58:1-18: - - text: "B" - - link: /b/../../b.md - - anchor: - - - Link targets a local file outside repository: - b/../../b.md +dir1/dir2/d2f1.md:9:1-18: bad reference: + The reference to "bad-cf-ref" failed verification. + Anchor 'bad' is not present + +dir1/dir2/d2f1.md:27:1-43: bad reference: + The reference to "bad-file-rel" failed verification. + File does not exist: + dir1/dir2/../a/b/c/unexisting-file.md + +dir1/dir2/d2f1.md:28:1-31: bad reference: + The reference to "bad-casing-file-rel" failed verification. + File does not exist: + dir1/dir2/D2F2.md/ + +dir1/dir2/d2f1.md:29:1-32: bad reference: + The reference to "bad-casing-folder-rel" failed verification. + File does not exist: + dir1/dir2/../DIR2 + +dir1/dir2/d2f1.md:31:1-38: bad reference: + The reference to "bad-anchor-rel-1" failed verification. + Anchor 'bad-anchor' is not present + +dir1/dir2/d2f1.md:32:1-49: bad reference: + The reference to "bad-anchor-rel-2" failed verification. + File does not exist: + dir1/dir2/unexisting-file.md + +dir1/dir2/d2f1.md:42:1-22: bad reference: + The reference to "file-abs-2" failed verification. + File does not exist: + d1f1.md + +dir1/dir2/d2f1.md:43:1-27: bad reference: + The reference to "file-abs-3" failed verification. + File does not exist: + dir2/d2f2.md + +dir1/dir2/d2f1.md:44:1-32: bad reference: + The reference to "file-abs-4" failed verification. + File does not exist: + ./dir2/../d1f1.md + +dir1/dir2/d2f1.md:45:1-37: bad reference: + The reference to "file-abs-slash" failed verification. + File does not exist: + ./dir2/../d1f1.md/ + +dir1/dir2/d2f1.md:46:1-55: bad reference: + The reference to "anchor-abs-3" failed verification. + File does not exist: + ./dir2/../d1f1.md + +dir1/dir2/d2f1.md:57:1-16: bad reference: + The reference to "A" failed verification. + Link (absolute) targets a local file outside the repository: + ../../a.md + +dir1/dir2/d2f1.md:58:1-18: bad reference: + The reference to "B" failed verification. + Link (absolute) targets a local file outside the repository: + b/../../b.md Invalid references dumped, 13 in total. diff --git a/tests/golden/check-local-refs/expected2.gold b/tests/golden/check-local-refs/expected2.gold index 7c3bf062..5745b2f6 100644 --- a/tests/golden/check-local-refs/expected2.gold +++ b/tests/golden/check-local-refs/expected2.gold @@ -1,144 +1,79 @@ -=== Invalid references found === - - ➥ In file dir2/d2f1.md - bad reference (file-local) at src:9:1-18: - - text: "bad-cf-ref" - - anchor: bad - - Anchor 'bad' is not present - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:27:1-43: - - text: "bad-file-rel" - - link: ../a/b/c/unexisting-file.md - - anchor: - - - File does not exist: - dir2/../a/b/c/unexisting-file.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:28:1-31: - - text: "bad-casing-file-rel" - - link: D2F2.md/ - - anchor: - - - File does not exist: - dir2/D2F2.md/ - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:29:1-32: - - text: "bad-casing-folder-rel" - - link: ../DIR2 - - anchor: - - - File does not exist: - dir2/../DIR2 - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:31:1-38: - - text: "bad-anchor-rel-1" - - link: d2f2.md - - anchor: bad-anchor - - Anchor 'bad-anchor' is not present - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:32:1-49: - - text: "bad-anchor-rel-2" - - link: unexisting-file.md - - anchor: bad-anchor - - File does not exist: - dir2/unexisting-file.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:36:1-29: - - text: "file-abs-1" - - link: /dir1/./d1f1.md - - anchor: - - - File does not exist: - dir1/./d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:37:1-21: - - text: "folder-abs-1" - - link: /dir1 - - anchor: - - - File does not exist: - dir1 - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:38:1-30: - - text: "folder-abs-2" - - link: /dir1/dir2/../ - - anchor: - - - File does not exist: - dir1/dir2/../ - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:39:1-58: - - text: "anchor-abs-1" - - link: /dir1/../dir1/d1f1.md - - anchor: existing-anchor-d1f1 - - File does not exist: - dir1/../dir1/d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:40:1-73: - - text: "anchor-abs-2" - - link: /dir1/dir2/../../dir1/./dir2/d2f2.md - - anchor: existing-anchor-d2f2 - - File does not exist: - dir1/dir2/../../dir1/./dir2/d2f2.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:51:1-42: - - text: "path-through-top-dir" - - link: ../../dir1/d1f1.md - - anchor: - - - Link targets a local file outside repository: - dir2/../../dir1/d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:52:1-75: - - text: "path-through-top-dir-with-anchor" - - link: ../../dir1/d1f1.md - - anchor: existing-anchor-d1f1 - - Link targets a local file outside repository: - dir2/../../dir1/d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:53:1-26: - - text: "ref-to-d0" - - link: ../../d0f1.md - - anchor: - - - Link targets a local file outside repository: - dir2/../../d0f1.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:57:1-16: - - text: "A" - - link: /../../a.md - - anchor: - - - Link targets a local file outside repository: - ../../a.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:58:1-18: - - text: "B" - - link: /b/../../b.md - - anchor: - - - Link targets a local file outside repository: - b/../../b.md +dir1/dir2/d2f1.md:9:1-18: bad reference: + The reference to "bad-cf-ref" failed verification. + Anchor 'bad' is not present + +dir1/dir2/d2f1.md:27:1-43: bad reference: + The reference to "bad-file-rel" failed verification. + File does not exist: + dir2/../a/b/c/unexisting-file.md + +dir1/dir2/d2f1.md:28:1-31: bad reference: + The reference to "bad-casing-file-rel" failed verification. + File does not exist: + dir2/D2F2.md/ + +dir1/dir2/d2f1.md:29:1-32: bad reference: + The reference to "bad-casing-folder-rel" failed verification. + File does not exist: + dir2/../DIR2 + +dir1/dir2/d2f1.md:31:1-38: bad reference: + The reference to "bad-anchor-rel-1" failed verification. + Anchor 'bad-anchor' is not present + +dir1/dir2/d2f1.md:32:1-49: bad reference: + The reference to "bad-anchor-rel-2" failed verification. + File does not exist: + dir2/unexisting-file.md + +dir1/dir2/d2f1.md:36:1-29: bad reference: + The reference to "file-abs-1" failed verification. + File does not exist: + dir1/./d1f1.md + +dir1/dir2/d2f1.md:37:1-21: bad reference: + The reference to "folder-abs-1" failed verification. + File does not exist: + dir1 + +dir1/dir2/d2f1.md:38:1-30: bad reference: + The reference to "folder-abs-2" failed verification. + File does not exist: + dir1/dir2/../ + +dir1/dir2/d2f1.md:39:1-58: bad reference: + The reference to "anchor-abs-1" failed verification. + File does not exist: + dir1/../dir1/d1f1.md + +dir1/dir2/d2f1.md:40:1-73: bad reference: + The reference to "anchor-abs-2" failed verification. + File does not exist: + dir1/dir2/../../dir1/./dir2/d2f2.md + +dir1/dir2/d2f1.md:51:1-42: bad reference: + The reference to "path-through-top-dir" failed verification. + Link (relative) targets a local file outside the repository: + dir2/../../dir1/d1f1.md + +dir1/dir2/d2f1.md:52:1-75: bad reference: + The reference to "path-through-top-dir-with-anchor" failed verification. + Link (relative) targets a local file outside the repository: + dir2/../../dir1/d1f1.md + +dir1/dir2/d2f1.md:53:1-26: bad reference: + The reference to "ref-to-d0" failed verification. + Link (relative) targets a local file outside the repository: + dir2/../../d0f1.md + +dir1/dir2/d2f1.md:57:1-16: bad reference: + The reference to "A" failed verification. + Link (absolute) targets a local file outside the repository: + ../../a.md + +dir1/dir2/d2f1.md:58:1-18: bad reference: + The reference to "B" failed verification. + Link (absolute) targets a local file outside the repository: + b/../../b.md Invalid references dumped, 16 in total. diff --git a/tests/golden/check-local-refs/expected3.gold b/tests/golden/check-local-refs/expected3.gold index 5f551918..29cb29a6 100644 --- a/tests/golden/check-local-refs/expected3.gold +++ b/tests/golden/check-local-refs/expected3.gold @@ -1,108 +1,59 @@ -=== Invalid references found === - - ➥ In file dir2/d2f1.md - bad reference (file-local) at src:9:1-18: - - text: "bad-cf-ref" - - anchor: bad - - Anchor 'bad' is not present - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:27:1-43: - - text: "bad-file-rel" - - link: ../a/b/c/unexisting-file.md - - anchor: - - - File does not exist: - dir2/../a/b/c/unexisting-file.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:28:1-31: - - text: "bad-casing-file-rel" - - link: D2F2.md/ - - anchor: - - - File does not exist: - dir2/D2F2.md/ - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:31:1-38: - - text: "bad-anchor-rel-1" - - link: d2f2.md - - anchor: bad-anchor - - Anchor 'bad-anchor' is not present - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:32:1-49: - - text: "bad-anchor-rel-2" - - link: unexisting-file.md - - anchor: bad-anchor - - File does not exist: - dir2/unexisting-file.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:36:1-29: - - text: "file-abs-1" - - link: /dir1/./d1f1.md - - anchor: - - - File does not exist: - dir1/./d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:37:1-21: - - text: "folder-abs-1" - - link: /dir1 - - anchor: - - - File does not exist: - dir1 - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:38:1-30: - - text: "folder-abs-2" - - link: /dir1/dir2/../ - - anchor: - - - File does not exist: - dir1/dir2/../ - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:39:1-58: - - text: "anchor-abs-1" - - link: /dir1/../dir1/d1f1.md - - anchor: existing-anchor-d1f1 - - File does not exist: - dir1/../dir1/d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (absolute) at src:40:1-73: - - text: "anchor-abs-2" - - link: /dir1/dir2/../../dir1/./dir2/d2f2.md - - anchor: existing-anchor-d2f2 - - File does not exist: - dir1/dir2/../../dir1/./dir2/d2f2.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:51:1-42: - - text: "path-through-top-dir" - - link: ../../dir1/d1f1.md - - anchor: - - - Link targets a local file outside repository: - dir2/../../dir1/d1f1.md - - ➥ In file dir2/d2f1.md - bad reference (relative) at src:52:1-75: - - text: "path-through-top-dir-with-anchor" - - link: ../../dir1/d1f1.md - - anchor: existing-anchor-d1f1 - - Link targets a local file outside repository: - dir2/../../dir1/d1f1.md +dir1/dir2/d2f1.md:9:1-18: bad reference: + The reference to "bad-cf-ref" failed verification. + Anchor 'bad' is not present + +dir1/dir2/d2f1.md:27:1-43: bad reference: + The reference to "bad-file-rel" failed verification. + File does not exist: + dir2/../a/b/c/unexisting-file.md + +dir1/dir2/d2f1.md:28:1-31: bad reference: + The reference to "bad-casing-file-rel" failed verification. + File does not exist: + dir2/D2F2.md/ + +dir1/dir2/d2f1.md:31:1-38: bad reference: + The reference to "bad-anchor-rel-1" failed verification. + Anchor 'bad-anchor' is not present + +dir1/dir2/d2f1.md:32:1-49: bad reference: + The reference to "bad-anchor-rel-2" failed verification. + File does not exist: + dir2/unexisting-file.md + +dir1/dir2/d2f1.md:36:1-29: bad reference: + The reference to "file-abs-1" failed verification. + File does not exist: + dir1/./d1f1.md + +dir1/dir2/d2f1.md:37:1-21: bad reference: + The reference to "folder-abs-1" failed verification. + File does not exist: + dir1 + +dir1/dir2/d2f1.md:38:1-30: bad reference: + The reference to "folder-abs-2" failed verification. + File does not exist: + dir1/dir2/../ + +dir1/dir2/d2f1.md:39:1-58: bad reference: + The reference to "anchor-abs-1" failed verification. + File does not exist: + dir1/../dir1/d1f1.md + +dir1/dir2/d2f1.md:40:1-73: bad reference: + The reference to "anchor-abs-2" failed verification. + File does not exist: + dir1/dir2/../../dir1/./dir2/d2f2.md + +dir1/dir2/d2f1.md:51:1-42: bad reference: + The reference to "path-through-top-dir" failed verification. + Link (relative) targets a local file outside the repository: + dir2/../../dir1/d1f1.md + +dir1/dir2/d2f1.md:52:1-75: bad reference: + The reference to "path-through-top-dir-with-anchor" failed verification. + Link (relative) targets a local file outside the repository: + dir2/../../dir1/d1f1.md Invalid references dumped, 12 in total. diff --git a/tests/golden/check-redirect-parse/check-redirect-parse.bats b/tests/golden/check-redirect-parse/check-redirect-parse.bats index 973b4129..2e7a2e7e 100644 --- a/tests/golden/check-redirect-parse/check-redirect-parse.bats +++ b/tests/golden/check-redirect-parse/check-redirect-parse.bats @@ -12,72 +12,72 @@ load '../helpers' @test "No redirect rules" { golden_file=$(realpath expected1.gold) - to_temp xrefcheck -c no-rules.yaml + to_temp xrefcheck -u -c no-rules.yaml assert_diff } @test "Only outcome" { golden_file=$(realpath expected2.gold) - to_temp xrefcheck -c only-outcome.yaml + to_temp xrefcheck -u -c only-outcome.yaml assert_diff } @test "Only outcome and to" { golden_file=$(realpath expected3.gold) - to_temp xrefcheck -c only-outcome-to.yaml + to_temp xrefcheck -u -c only-outcome-to.yaml assert_diff } @test "Only outcome and on" { golden_file=$(realpath expected4.gold) - to_temp xrefcheck -c only-outcome-to.yaml + to_temp xrefcheck -u -c only-outcome-to.yaml assert_diff } @test "Full rule" { golden_file=$(realpath expected5.gold) - to_temp xrefcheck -c full-rule.yaml + to_temp xrefcheck -u -c full-rule.yaml assert_diff } @test "Rules not an array error" { - run xrefcheck -c bad-rules.yaml + run xrefcheck -u -c bad-rules.yaml assert_output --partial "expected Array, but encountered String" } @test "Rule not an object error" { - run xrefcheck -c bad-rule.yaml + run xrefcheck -u -c bad-rule.yaml assert_output --partial "expected Object, but encountered String" } @test "Bad code error" { - run xrefcheck -c bad-code.yaml + run xrefcheck -u -c bad-code.yaml assert_output --partial "expected a redirect (3XX) HTTP code or (permanent|temporary)" } @test "Bad on" { - run xrefcheck -c bad-on.yaml + run xrefcheck -u -c bad-on.yaml assert_output --partial "expected a redirect (3XX) HTTP code or (permanent|temporary)" } @test "Bad to" { - run xrefcheck -c bad-to.yaml + run xrefcheck -u -c bad-to.yaml assert_output --partial "expected String, but encountered Number" } @test "Bad outcome" { - run xrefcheck -c bad-outcome.yaml + run xrefcheck -u -c bad-outcome.yaml assert_output --partial "expected (valid|invalid|follow)" } @test "No outcome error" { - run xrefcheck -c no-outcome.yaml + run xrefcheck -u -c no-outcome.yaml assert_output --partial "key \"outcome\" not found" } diff --git a/tests/golden/check-scan-errors/check-scan-errors.bats b/tests/golden/check-scan-errors/check-scan-errors.bats index 51d8b7fb..6594fe24 100644 --- a/tests/golden/check-scan-errors/check-scan-errors.bats +++ b/tests/golden/check-scan-errors/check-scan-errors.bats @@ -12,6 +12,6 @@ load '../helpers' @test "Dump all errors along with broken links" { golden_file=$(realpath expected.gold) - to_temp xrefcheck + to_temp xrefcheck -u assert_diff } diff --git a/tests/golden/check-scan-errors/expected.gold b/tests/golden/check-scan-errors/expected.gold index 2fbc1375..77bc0a55 100644 --- a/tests/golden/check-scan-errors/expected.gold +++ b/tests/golden/check-scan-errors/expected.gold @@ -1,69 +1,40 @@ -=== Scan errors found === +check-scan-errors.md:9:1-29: scan error: + Annotation "ignore all" must be at the top of markdown or right after comments at the top - ➥ In file check-scan-errors.md - scan error at src:9:1-29: +check-scan-errors.md:13:1-36: scan error: + Expected a PARAGRAPH after "ignore paragraph" annotation, but found HEADING - Annotation "ignore all" must be at the top of markdown or right after comments at the top +check-scan-errors.md:17:1-31: scan error: + Expected a LINK after "ignore link" annotation - ➥ In file check-scan-errors.md - scan error at src:13:1-36: +check-scan-errors.md:21:1-50: scan error: + Unrecognised option "unrecognised-annotation" + Perhaps you meant <"ignore link"|"ignore paragraph"|"ignore all"> - Expected a PARAGRAPH after "ignore paragraph" annotation, but found HEADING +check-second-file.md:9:1-29: scan error: + Annotation "ignore all" must be at the top of markdown or right after comments at the top - ➥ In file check-scan-errors.md - scan error at src:17:1-31: +no_link_eof.md:9:1-31: scan error: + Expected a LINK after "ignore link" annotation - Expected a LINK after "ignore link" annotation - - ➥ In file check-scan-errors.md - scan error at src:21:1-50: - - Unrecognised option "unrecognised-annotation" perhaps you meant <"ignore link"|"ignore paragraph"|"ignore all"> - - ➥ In file check-second-file.md - scan error at src:9:1-29: - - Annotation "ignore all" must be at the top of markdown or right after comments at the top - - ➥ In file no_link_eof.md - scan error at src:9:1-31: - - Expected a LINK after "ignore link" annotation - - ➥ In file no_paragraph_eof.md - scan error at src:9:1-36: - - Expected a PARAGRAPH after "ignore paragraph" annotation, but found EOF +no_paragraph_eof.md:9:1-36: scan error: + Expected a PARAGRAPH after "ignore paragraph" annotation, but found EOF Scan errors dumped, 7 in total. -=== Invalid references found === - - ➥ In file check-scan-errors.md - bad reference (absolute) at src:11:1-28: - - text: "Bad reference" - - link: /no-file.md - - anchor: - - - File does not exist: - no-file.md - - ➥ In file check-scan-errors.md - bad reference (relative) at src:23:1-24: - - text: "Bad link" - - link: bad.link.com - - anchor: - - - File does not exist: - bad.link.com +check-scan-errors.md:11:1-28: bad reference: + The reference to "Bad reference" failed verification. + File does not exist: + no-file.md - ➥ In file check-second-file.md - bad reference (absolute) at src:11:1-30: - - text: "Another bad reference" - - link: /a.md - - anchor: - +check-scan-errors.md:23:1-24: bad reference: + The reference to "Bad link" failed verification. + File does not exist: + bad.link.com - File does not exist: - a.md +check-second-file.md:11:1-30: bad reference: + The reference to "Another bad reference" failed verification. + File does not exist: + a.md Invalid references dumped, 3 in total. diff --git a/tests/golden/check-symlinks/check-symlinks.bats b/tests/golden/check-symlinks/check-symlinks.bats index a6174fcd..2afed25c 100644 --- a/tests/golden/check-symlinks/check-symlinks.bats +++ b/tests/golden/check-symlinks/check-symlinks.bats @@ -30,7 +30,7 @@ load '../helpers' git init git add ./* - to_temp xrefcheck -v -c config-ignore.yaml + to_temp xrefcheck -u -v -c config-ignore.yaml assert_diff $golden_file } @@ -54,7 +54,7 @@ load '../helpers' git init git add ./* - to_temp xrefcheck -v + to_temp xrefcheck -u -v assert_diff } diff --git a/tests/golden/check-symlinks/expected1.gold b/tests/golden/check-symlinks/expected1.gold index 9a8e30e7..7f2350a2 100644 --- a/tests/golden/check-symlinks/expected1.gold +++ b/tests/golden/check-symlinks/expected1.gold @@ -2,11 +2,11 @@ dir/b.md: - references: - - reference (relative) at src:7:1-15: + - reference (relative) at dir/b.md:7:1-15: - text: "Empty file" - link: a - anchor: - - - reference (relative) at src:9:1-24: + - reference (relative) at dir/b.md:9:1-24: - text: "Some symlink" - link: ../ok.md - anchor: - @@ -15,7 +15,7 @@ ok.md: - references: - - reference (relative): + - reference (relative) at ok.md: - text: "Symbolic Link" - link: dir/b.md - anchor: - diff --git a/tests/golden/check-symlinks/expected2.gold b/tests/golden/check-symlinks/expected2.gold index ef837184..b589e969 100644 --- a/tests/golden/check-symlinks/expected2.gold +++ b/tests/golden/check-symlinks/expected2.gold @@ -2,7 +2,7 @@ broken.md: - references: - - reference (relative): + - reference (relative) at broken.md: - text: "Symbolic Link" - link: dir/c.md - anchor: - @@ -11,11 +11,11 @@ dir/b.md: - references: - - reference (relative) at src:7:1-15: + - reference (relative) at dir/b.md:7:1-15: - text: "Empty file" - link: a - anchor: - - - reference (relative) at src:9:1-24: + - reference (relative) at dir/b.md:9:1-24: - text: "Some symlink" - link: ../ok.md - anchor: - @@ -24,7 +24,7 @@ ok.md: - references: - - reference (relative): + - reference (relative) at ok.md: - text: "Symbolic Link" - link: dir/b.md - anchor: - @@ -33,31 +33,21 @@ outside.md: - references: - - reference (relative): + - reference (relative) at outside.md: - text: "Symbolic Link" - link: ../d.md - anchor: - - anchors: none -=== Invalid references found === +broken.md: bad reference: + The reference to "Symbolic Link" failed verification. + File does not exist: + dir/c.md - ➥ In file broken.md - bad reference (relative): - - text: "Symbolic Link" - - link: dir/c.md - - anchor: - - - File does not exist: - dir/c.md - - ➥ In file outside.md - bad reference (relative): - - text: "Symbolic Link" - - link: ../d.md - - anchor: - - - Link targets a local file outside repository: - ../d.md +outside.md: bad reference: + The reference to "Symbolic Link" failed verification. + Link (relative) targets a local file outside the repository: + ../d.md Invalid references dumped, 2 in total.