diff --git a/Cabal/src/Distribution/PackageDescription/Check.hs b/Cabal/src/Distribution/PackageDescription/Check.hs
index f1c528752da3f25e70574e5679cc143422264a1c..5d11072b354578744e30d88453285a786b1465ad 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 28a6cd72ac0a58976a1fd1909fdc822b90ce4fb1..4cb629752f45f062f92cc41f3ff66624fae8db86 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 0000000000000000000000000000000000000000..3e3396952670d9cd9115eb2e06bac54dc24601b1
--- /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 28a6cd72ac0a58976a1fd1909fdc822b90ce4fb1..4cb629752f45f062f92cc41f3ff66624fae8db86 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
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 f97aa4a73f75a855386f9a68d9da4831c28da2dd..d2df818ef58ce30d4a8b686d9e8e7145af47aacd 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 28a6cd72ac0a58976a1fd1909fdc822b90ce4fb1..4cb629752f45f062f92cc41f3ff66624fae8db86 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 5bb91450c8736aa60b791397371e7166ceb49ae5..b491c58e1a627703abd2ee0c264b6f301c6076f0 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 5bb91450c8736aa60b791397371e7166ceb49ae5..b491c58e1a627703abd2ee0c264b6f301c6076f0 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" []