From cc75891e41cfbd23fa57ffa723a93198037c7fc1 Mon Sep 17 00:00:00 2001 From: Wismill Date: Sun, 12 Feb 2023 09:48:10 +0100 Subject: [PATCH] cabal-install: check: Whitelist doc file extensions (#8747) * check: Test only doc files with supported extensions * Cleanup --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> (cherry picked from commit bae536f8fe67ce06b5d8e268cd1cb0d42101c4f1) --- Cabal/src/Distribution/PackageDescription/Check.hs | 12 +++++++----- .../ChangeLog/NotExisting/cabal.test.hs | 2 -- .../ChangeLog/NotIncluded/.gitignore | 2 ++ .../{V3.0/ChangeLog.md => V1.12/ChangeLog.md~} | 0 .../ChangeLog/NotIncluded/V1.12/cabal.test.hs | 2 -- .../ChangeLog/NotIncluded/V3.0/CHANGELOG.TXT | 0 .../ChangeLog/NotIncluded/V3.0/cabal.out | 2 +- .../ChangeLog/NotIncluded/V3.0/cabal.test.hs | 2 -- .../ChangeLog/WrongField/V1.12/cabal.test.hs | 2 -- .../ChangeLog/WrongField/V3.0/cabal.test.hs | 2 -- 10 files changed, 10 insertions(+), 16 deletions(-) create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/.gitignore rename cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/{V3.0/ChangeLog.md => V1.12/ChangeLog.md~} (100%) create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/CHANGELOG.TXT diff --git a/Cabal/src/Distribution/PackageDescription/Check.hs b/Cabal/src/Distribution/PackageDescription/Check.hs index f1c528752da..5d11072b354 100644 --- a/Cabal/src/Distribution/PackageDescription/Check.hs +++ b/Cabal/src/Distribution/PackageDescription/Check.hs @@ -2545,12 +2545,13 @@ checkGlobFiles verbosity pkg root = do ) -- Predicate for desirable documentation file on Hackage server - isDesirableExtraDocFile :: [FilePath] -> FilePath -> Bool - isDesirableExtraDocFile paths path = map toLower basename `elem` paths + isDesirableExtraDocFile :: ([FilePath], [FilePath]) -> FilePath -> Bool + isDesirableExtraDocFile (basenames, extensions) path = + basename `elem` basenames && ext `elem` extensions where - (basename, _ext) = splitExtension path + (basename, ext) = splitExtension (map toLower path) - -- Changelog patterns + -- Changelog patterns (basenames & extensions) -- Source: hackage-server/src/Distribution/Server/Packages/ChangeLog.hs desirableChangeLog = [ "news" @@ -2558,6 +2559,7 @@ checkGlobFiles verbosity pkg root = do , "change_log" , "changes" ] + desirableChangeLogExtensions = ["", ".txt", ".md", ".markdown", ".rst"] -- [TODO] Check readme. Observations: -- • Readme is not necessary if package description is good. -- • Some readmes exists only for repository browsing. @@ -2567,7 +2569,7 @@ checkGlobFiles verbosity pkg root = do -- -- Readme patterns -- -- Source: hackage-server/src/Distribution/Server/Packages/Readme.hs -- desirableReadme = ["readme"] - desirableDocFiles = desirableChangeLog + desirableDocFiles = (desirableChangeLog, desirableChangeLogExtensions) -- If there's a missing directory in play, since our globs don't -- (currently) support disjunction, that will always mean there are no diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotExisting/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotExisting/cabal.test.hs index 28a6cd72ac0..4cb629752f4 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotExisting/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotExisting/cabal.test.hs @@ -1,7 +1,5 @@ import Test.Cabal.Prelude -import System.Directory (createDirectoryIfMissing) - -- Omitting ChangeLog.md but not README in extra-doc-files main = cabalTest $ do cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/.gitignore b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/.gitignore new file mode 100644 index 00000000000..3e339695267 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/.gitignore @@ -0,0 +1,2 @@ +# Needed for test, to ensure we test the file extension as well. +!ChangeLog.md~ diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/ChangeLog.md b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/ChangeLog.md~ similarity index 100% rename from cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/ChangeLog.md rename to cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/ChangeLog.md~ diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/cabal.test.hs index 28a6cd72ac0..4cb629752f4 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/cabal.test.hs @@ -1,7 +1,5 @@ import Test.Cabal.Prelude -import System.Directory (createDirectoryIfMissing) - -- Omitting ChangeLog.md but not README in extra-doc-files main = cabalTest $ do cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/CHANGELOG.TXT b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/CHANGELOG.TXT new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.out index f97aa4a73f7..d2df818ef58 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.out +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.out @@ -1,3 +1,3 @@ # cabal check Warning: These warnings may cause trouble when distributing the package: -Warning: Please consider including the file './ChangeLog.md' in the 'extra-doc-files' section of the .cabal file if it contains useful information for users of the package. +Warning: Please consider including the file './CHANGELOG.TXT' in the 'extra-doc-files' section of the .cabal file if it contains useful information for users of the package. diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.test.hs index 28a6cd72ac0..4cb629752f4 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.test.hs @@ -1,7 +1,5 @@ import Test.Cabal.Prelude -import System.Directory (createDirectoryIfMissing) - -- Omitting ChangeLog.md but not README in extra-doc-files main = cabalTest $ do cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V1.12/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V1.12/cabal.test.hs index 5bb91450c87..b491c58e1a6 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V1.12/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V1.12/cabal.test.hs @@ -1,7 +1,5 @@ import Test.Cabal.Prelude -import System.Directory (createDirectoryIfMissing) - -- Included ChangeLog.md but not in extra-doc-files main = cabalTest $ do cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V3.0/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V3.0/cabal.test.hs index 5bb91450c87..b491c58e1a6 100644 --- a/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V3.0/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V3.0/cabal.test.hs @@ -1,7 +1,5 @@ import Test.Cabal.Prelude -import System.Directory (createDirectoryIfMissing) - -- Included ChangeLog.md but not in extra-doc-files main = cabalTest $ do cabal "check" []