`cabal check`: clearly mark Errors (#8908)
commitaee92c9737abaec9d91344b3a2734c84c8e9bf9f
authorffaf1 <fa-ml@ariis.it>
Thu, 1 Jun 2023 16:13:15 +0000 (1 18:13 +0200)
committerGitHub <noreply@github.com>
Thu, 1 Jun 2023 16:13:15 +0000 (1 16:13 +0000)
treeca390ca8d19ac03a613da80c651aa25c5c98e776
parentc30d246f4ef1ed670d63f4fad3b695463c820e22
`cabal check`: clearly mark Errors (#8908)

* Fix typo

American spelling.

* Switch from `show` to `ppPackageCheck`

Show instance for `PackageCheck` is broken (not bijective with `read`) and
in the future will be deprecated.

* Add `warnError`

`warnError` is like `warn`, but instead of "Warning: …" prepends
"Error: …" to the message.  It is useful in those cases where you
want to highlight something is broken but do not want to stop the
program yet.

* cabal check: highlight error messages

Warnings that make `cabal check` fail (i.e. the package will be
refused by Hackage) are prepended by an "Error: " string, like
this:

Error: Instead of 'cc-options: -Llibdir' use 'extra-lib-dirs: libdir'

This commit also gets away from list comprehension.

* Make testsuite pass

`NoDupNames` is now caught with an `error` before check has the opportunity
to run.

* Add changelog for #8908

* Respect concordance

(Artem’s review) summary message will now say “The following errors…”
if the issues are “Error: …”s and “The following warnings…” otherwise.

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
116 files changed:
Cabal/src/Distribution/Simple/Utils.hs
cabal-install/src/Distribution/Client/Check.hs
cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.test.hs
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RecursiveGlobInRoot/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.test.hs
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.out
cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.out
cabal-testsuite/PackageTests/Check/DifferentGhcOptions/cabal.out
cabal-testsuite/PackageTests/Check/InvalidGlob/cabal.out
cabal-testsuite/PackageTests/Check/MissingGlobDirectory/cabal.out
cabal-testsuite/PackageTests/Check/MissingGlobDirectory2/cabal.out
cabal-testsuite/PackageTests/Check/MultiDotGlob2.2/check.out
cabal-testsuite/PackageTests/Check/NoGlobMatches/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out
cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V1.12/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/NotIncluded/V3.0/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V1.12/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/MissingExpectedDocFiles/ChangeLog/WrongField/V3.0/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.out
cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.out
changelog.d/pr-8908 [new file with mode: 0644]