From 1cfe7c4c7257aa7ae450209d34b4a359e6703a10 Mon Sep 17 00:00:00 2001
From: ffaf1 <87714215+ffaf1@users.noreply.github.com>
Date: Fri, 1 Jul 2022 17:14:46 +0200
Subject: [PATCH] `cabal-check` testsuite: add Package/File tests (#8250)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* (cabal check) Add “Unknown OS” test

* (cabal check) Add “Unknown arch” test

* (cabal check) Add “Unknown compiler” test

* (cabal check) Add “Package versions” check

* (cabal check) Add “`-Werror`” test

* (cabal check) Add “-j[n]” test

* (cabal check) Add “Defer type errors” test

* (cabal check) Add “Debug flag” test

* (cabal check) Add “Profiling flag” test

* (cabal check) Add “Unused flag” test

* (cabal check) Add “Custom fields” check

* (cabal check) Add “Paths_module extension” test

* (cabal check) Add “Setup bounds” test

* (cabal check) Add “Duplicate module” test

* (cabal check) Add “No license” check

* (cabal check) Add “NONE license” test

* (cabal check) Add AllRightsReserved warning test

* (cabal check) Add “compatibility” license test

With cabal-version < 1.4, some license (e.g. ISC) mess up the
parser.

* (cabal check) Add “Unknown license” test

* (cabal check) Add “Suspicious BSD4” test

* (cabal check) Add “Suspicious version” test

* (cabal check) Add “`license-file` missing” test

* (cabal check) Add “Unrecognised repo type” test

* (cabal check) Add “No `type`” test

* (cabal test) Add “No `location`” test

* (cabal check) Add “No `module`” test

Only for CVS repos.

* (cabal check) Add “`tag` needed” test

For `this`-type source-repositories.

* (cabal check) Add “Relative path” test

* (cabal check) Add “Good relative path” test

* (cabal check) Add “ghc-options” test.

Checks if there is a tricky GHC option in `ghc-options`. We will
*not* write an integration test for each offending option, just
one (in this case for `-fasm`) to make sure the field is scanned.

* (cabal check) Add “ghc-shared-options” test.

Checks if there is a tricky GHC option in `ghc-shared-options`. We
will *not* write an integration test for each offending option, just
one (in this case for `-fglasgow-exts`) to make sure the field is
scanned.

* (cabal check) Add “ghc-prof-options” test.

Checks if there is a tricky GHC option in `ghc-prof-options`. We
will *not* write an integration test for each offending option,
just one (in this case for `-o`) to make sure the field is scanned.

* (cabal check) Add “`cc-options` include” test

* (cabal check) Add “Cxx `extra-libraries`” test

* (cabal check) Add “`cc-options` libdir” test

* (cabal check) Add `Cxx -Os` test.

* (cabal check) Add “Portable CPP flags” test

* (cabal check) Add “Invalid on Win” test

* (cabal check) Add “Outside relative path” test

Note that this test is not atomic; it comes with a "not a good
relative path" error, and this is unavoidable.

* (cabal check) Add “Absolute path” test.

Note that this test is not atomic; comes with a "not a good relative
path" *and* a "does not match any file" warning. This is unfortunately
unavoidable.

* (cabal check) Add “points to dist/” test

* (cabal check) Add “Testsuite ≥1.8” test

* (cabal check) Add “Default language” test

* (cabal check) Add “Default language spec” test

* (cabal check) Add “Extra doc” test

* (cabal check) Add “Multilib/namedlib” test

* (cabal check) Add “Reexported module” test

* (cabal check) Add “Mixins” test

* (cabal check) Add “Extra framework dirs” test

* (cabal check) Add “Default extensions” test

* (cabal check) Add `extensions` test

* (cabal check) Add Sources test

* (cabal check) Add “Extra libs” test

* (cabal check) Add “Virtual modules” test

* (cabal check) Add “Source repository” test

* (cabal check) Add “Extension break” test

* (cabal check) Add “Custom setup” test

* (cabal check) Add “Autogen modules” test

* (cabal check) Add “No z-prefixed check” test

* (cabal check) Add “No `build-type` specified” test

* (cabal check) Add “Ignoring custom-setup” test

* (cabal check) Add “Unknown compiler” test

In `tested-with`

* (cabal check) Add “Unknown language” test

* (cabal check) Add “Unknown extension” test

* (cabal check) Add “Language as extension” test

Languages cannot be listed in `default-extensions`.

* (cabal check) Add “Deprecated extension” test

* (cabal check) Add “No synopsis” test

* (cabal check) Add “No description” test

* (cabal check) Add “No category” test

* (cabal check) Add “No maintainer” test

* (cabal check) Add “Short description” test

`description` should be longer than `synopsis`.

* (cabal check) Add “Invalid tested with range” test

* (cabal check) Add “Internal library” test

On impossible version ranges for internal libraries.

* (cabal check) Add BOM test

* (cabal check) Add “Name mismatch” test

* (cabal check) Add “Missing .cabal” test

* (cabal check) Add “Missing license file” test

* (cabal check) Add “No setup file” test

* (cabal check) Add “No configure file” test

* (cabal check) Add “Local paths” check

* (cabal check) Add “Missing VCS info” test

* (cabal check) Add “Partial extension match” test

* (cabal check) Add “Filename too long” check
---
 .../COptions/CCOptionsExtraLibDirs/cabal.out  |  4 ++++
 .../CCOptionsExtraLibDirs/cabal.test.hs       |  5 +++++
 .../COptions/CCOptionsExtraLibDirs/pkg.cabal  | 13 +++++++++++++
 .../COptions/CCOptionsInclude/cabal.out       |  4 ++++
 .../COptions/CCOptionsInclude/cabal.test.hs   |  5 +++++
 .../COptions/CCOptionsInclude/pkg.cabal       | 13 +++++++++++++
 .../COptions/CppNotPortable/cabal.out         |  4 ++++
 .../COptions/CppNotPortable/cabal.test.hs     |  5 +++++
 .../COptions/CppNotPortable/pkg.cabal         | 13 +++++++++++++
 .../CxxOptionsExtraLibraries/cabal.out        |  4 ++++
 .../CxxOptionsExtraLibraries/cabal.test.hs    |  5 +++++
 .../CxxOptionsExtraLibraries/pkg.cabal        | 13 +++++++++++++
 .../COptions/CxxOs/cabal.out                  |  3 +++
 .../COptions/CxxOs/cabal.test.hs              |  5 +++++
 .../COptions/CxxOs/pkg.cabal                  | 13 +++++++++++++
 .../CabalVersion/AutoGenMods/LICENSE          |  0
 .../CabalVersion/AutoGenMods/Setup.hs         |  0
 .../CabalVersion/AutoGenMods/cabal.out        |  4 ++++
 .../CabalVersion/AutoGenMods/cabal.test.hs    |  5 +++++
 .../CabalVersion/AutoGenMods/pkg.cabal        | 15 +++++++++++++++
 .../CabalVersion/CustomSetup/LICENSE          |  0
 .../CabalVersion/CustomSetup/Setup.hs         |  0
 .../CabalVersion/CustomSetup/cabal.out        |  3 +++
 .../CabalVersion/CustomSetup/cabal.test.hs    |  5 +++++
 .../CabalVersion/CustomSetup/pkg.cabal        | 14 ++++++++++++++
 .../CabalVersion/DefaultExtension/LICENSE     |  0
 .../CabalVersion/DefaultExtension/cabal.out   |  3 +++
 .../DefaultExtension/cabal.test.hs            |  5 +++++
 .../CabalVersion/DefaultExtension/pkg.cabal   | 14 ++++++++++++++
 .../CabalVersion/DefaultLanguage/LICENSE      |  0
 .../CabalVersion/DefaultLanguage/cabal.out    |  3 +++
 .../DefaultLanguage/cabal.test.hs             |  5 +++++
 .../CabalVersion/DefaultLanguage/pkg.cabal    | 14 ++++++++++++++
 .../DefaultLanguageSpec/cabal.out             |  4 ++++
 .../DefaultLanguageSpec/cabal.test.hs         |  5 +++++
 .../DefaultLanguageSpec/pkg.cabal             | 11 +++++++++++
 .../CabalVersion/ExtensionBreak/LICENSE       |  0
 .../CabalVersion/ExtensionBreak/cabal.out     |  4 ++++
 .../CabalVersion/ExtensionBreak/cabal.test.hs |  5 +++++
 .../CabalVersion/ExtensionBreak/pkg.cabal     | 14 ++++++++++++++
 .../CabalVersion/Extensions/LICENSE           |  0
 .../CabalVersion/Extensions/cabal.out         |  6 ++++++
 .../CabalVersion/Extensions/cabal.test.hs     |  5 +++++
 .../CabalVersion/Extensions/pkg.cabal         | 15 +++++++++++++++
 .../CabalVersion/ExtraDoc/LICENSE             |  0
 .../CabalVersion/ExtraDoc/cabal.out           |  4 ++++
 .../CabalVersion/ExtraDoc/cabal.test.hs       |  5 +++++
 .../CabalVersion/ExtraDoc/docs                |  0
 .../CabalVersion/ExtraDoc/pkg.cabal           | 16 ++++++++++++++++
 .../ExtraDynamicLibraryFlavour/LICENSE        |  0
 .../ExtraDynamicLibraryFlavour/cabal.out      |  3 +++
 .../ExtraDynamicLibraryFlavour/cabal.test.hs  |  5 +++++
 .../ExtraDynamicLibraryFlavour/pkg.cabal      | 15 +++++++++++++++
 .../CabalVersion/ExtraFrameworkDirs/LICENSE   |  0
 .../CabalVersion/ExtraFrameworkDirs/cabal.out |  3 +++
 .../ExtraFrameworkDirs/cabal.test.hs          |  5 +++++
 .../CabalVersion/ExtraFrameworkDirs/dir/file  |  0
 .../CabalVersion/ExtraFrameworkDirs/pkg.cabal | 15 +++++++++++++++
 .../CabalVersion/Mixins/LICENSE               |  0
 .../CabalVersion/Mixins/cabal.out             |  3 +++
 .../CabalVersion/Mixins/cabal.test.hs         |  5 +++++
 .../CabalVersion/Mixins/pkg.cabal             | 15 +++++++++++++++
 .../CabalVersion/MultiLibs/LICENSE            |  0
 .../CabalVersion/MultiLibs/cabal.out          |  4 ++++
 .../CabalVersion/MultiLibs/cabal.test.hs      |  5 +++++
 .../CabalVersion/MultiLibs/pkg.cabal          | 13 +++++++++++++
 .../CabalVersion/Reexported/LICENSE           |  0
 .../CabalVersion/Reexported/cabal.out         |  4 ++++
 .../CabalVersion/Reexported/cabal.test.hs     |  5 +++++
 .../CabalVersion/Reexported/pkg.cabal         | 15 +++++++++++++++
 .../CabalVersion/SourceRepository/LICENSE     |  0
 .../CabalVersion/SourceRepository/cabal.out   |  4 ++++
 .../SourceRepository/cabal.test.hs            |  5 +++++
 .../CabalVersion/SourceRepository/pkg.cabal   | 17 +++++++++++++++++
 .../CabalVersion/Sources/LICENSE              |  0
 .../CabalVersion/Sources/cabal.out            |  3 +++
 .../CabalVersion/Sources/cabal.test.hs        |  5 +++++
 .../CabalVersion/Sources/pkg.cabal            | 15 +++++++++++++++
 .../CabalVersion/Testsuite1.8/LICENSE         |  0
 .../CabalVersion/Testsuite1.8/cabal.out       |  4 ++++
 .../CabalVersion/Testsuite1.8/cabal.test.hs   |  5 +++++
 .../CabalVersion/Testsuite1.8/pkg.cabal       | 14 ++++++++++++++
 .../CabalVersion/VirtualModules/LICENSE       |  0
 .../CabalVersion/VirtualModules/cabal.out     |  3 +++
 .../CabalVersion/VirtualModules/cabal.test.hs |  5 +++++
 .../CabalVersion/VirtualModules/pkg.cabal     | 15 +++++++++++++++
 .../Fields/DeprecatedExtension/cabal.out      |  3 +++
 .../Fields/DeprecatedExtension/cabal.test.hs  |  5 +++++
 .../Fields/DeprecatedExtension/pkg.cabal      | 13 +++++++++++++
 .../ImpossibleVersionRangeLib/cabal.out       |  4 ++++
 .../ImpossibleVersionRangeLib/cabal.test.hs   |  5 +++++
 .../ImpossibleVersionRangeLib/pkg.cabal       | 18 ++++++++++++++++++
 .../Fields/InvalidTestedWithRange/cabal.out   |  4 ++++
 .../InvalidTestedWithRange/cabal.test.hs      |  5 +++++
 .../Fields/InvalidTestedWithRange/pkg.cabal   | 13 +++++++++++++
 .../Fields/LanguageAsExtension/cabal.out      |  4 ++++
 .../Fields/LanguageAsExtension/cabal.test.hs  |  5 +++++
 .../Fields/LanguageAsExtension/pkg.cabal      | 13 +++++++++++++
 .../Fields/NoBuildTypeSpecified/LICENSE       |  0
 .../Fields/NoBuildTypeSpecified/Setup.hs      |  0
 .../Fields/NoBuildTypeSpecified/cabal.out     |  4 ++++
 .../Fields/NoBuildTypeSpecified/cabal.test.hs |  5 +++++
 .../Fields/NoBuildTypeSpecified/pkg.cabal     | 15 +++++++++++++++
 .../Fields/NoCategory/cabal.out               |  3 +++
 .../Fields/NoCategory/cabal.test.hs           |  5 +++++
 .../Fields/NoCategory/pkg.cabal               | 11 +++++++++++
 .../Fields/NoCustom/cabal.out                 |  4 ++++
 .../Fields/NoCustom/cabal.test.hs             |  5 +++++
 .../Fields/NoCustom/pkg.cabal                 | 15 +++++++++++++++
 .../Fields/NoDescription/cabal.out            |  3 +++
 .../Fields/NoDescription/cabal.test.hs        |  5 +++++
 .../Fields/NoDescription/pkg.cabal            | 11 +++++++++++
 .../Fields/NoMaintainer/cabal.out             |  3 +++
 .../Fields/NoMaintainer/cabal.test.hs         |  5 +++++
 .../Fields/NoMaintainer/pkg.cabal             | 11 +++++++++++
 .../Fields/NoSynopsis/cabal.out               |  3 +++
 .../Fields/NoSynopsis/cabal.test.hs           |  5 +++++
 .../Fields/NoSynopsis/pkg.cabal               | 11 +++++++++++
 .../Fields/NoZPrefix/cabal.out                |  4 ++++
 .../Fields/NoZPrefix/cabal.test.hs            |  5 +++++
 .../Fields/NoZPrefix/z-pkg.cabal              | 12 ++++++++++++
 .../Fields/ShortDescription/cabal.out         |  3 +++
 .../Fields/ShortDescription/cabal.test.hs     |  5 +++++
 .../Fields/ShortDescription/pkg.cabal         | 12 ++++++++++++
 .../Fields/UnknownCompiler/cabal.out          |  4 ++++
 .../Fields/UnknownCompiler/cabal.test.hs      |  5 +++++
 .../Fields/UnknownCompiler/pkg.cabal          | 13 +++++++++++++
 .../Fields/UnknownExtension/cabal.out         |  4 ++++
 .../Fields/UnknownExtension/cabal.test.hs     |  5 +++++
 .../Fields/UnknownExtension/pkg.cabal         | 13 +++++++++++++
 .../Fields/UnknownLanguage/cabal.out          |  4 ++++
 .../Fields/UnknownLanguage/cabal.test.hs      |  5 +++++
 .../Fields/UnknownLanguage/pkg.cabal          | 12 ++++++++++++
 .../GHCOptions/GHCOptions/cabal.out           |  4 ++++
 .../GHCOptions/GHCOptions/cabal.test.hs       |  5 +++++
 .../GHCOptions/GHCOptions/pkg.cabal           | 13 +++++++++++++
 .../GHCOptions/GHCProfOptions/cabal.out       |  4 ++++
 .../GHCOptions/GHCProfOptions/cabal.test.hs   |  5 +++++
 .../GHCOptions/GHCProfOptions/pkg.cabal       | 13 +++++++++++++
 .../GHCOptions/GHCSharedOptions/cabal.out     |  3 +++
 .../GHCOptions/GHCSharedOptions/cabal.test.hs |  5 +++++
 .../GHCOptions/GHCSharedOptions/pkg.cabal     | 13 +++++++++++++
 .../License/Compatibility/LICENSE             |  0
 .../License/Compatibility/Setup.hs            |  0
 .../License/Compatibility/cabal.out           |  4 ++++
 .../License/Compatibility/cabal.test.hs       |  5 +++++
 .../License/Compatibility/pkg.cabal           | 15 +++++++++++++++
 .../License/NoFileSpecified/LICENSE           |  0
 .../License/NoFileSpecified/Setup.hs          |  0
 .../License/NoFileSpecified/cabal.out         |  3 +++
 .../License/NoFileSpecified/cabal.test.hs     |  5 +++++
 .../License/NoFileSpecified/pkg.cabal         | 15 +++++++++++++++
 .../License/NoLicense/cabal.out               |  4 ++++
 .../License/NoLicense/cabal.test.hs           |  5 +++++
 .../License/NoLicense/pkg.cabal               | 11 +++++++++++
 .../License/NoneLicense/cabal.out             |  4 ++++
 .../License/NoneLicense/cabal.test.hs         |  5 +++++
 .../License/NoneLicense/pkg.cabal             | 12 ++++++++++++
 .../License/SuspiciousLicense/LICENSE         |  0
 .../License/SuspiciousLicense/Setup.hs        |  0
 .../License/SuspiciousLicense/cabal.out       |  3 +++
 .../License/SuspiciousLicense/cabal.test.hs   |  5 +++++
 .../License/SuspiciousLicense/pkg.cabal       | 16 ++++++++++++++++
 .../License/SuspiciousVersion/LICENSE         |  0
 .../License/SuspiciousVersion/Setup.hs        |  0
 .../License/SuspiciousVersion/cabal.out       |  3 +++
 .../License/SuspiciousVersion/cabal.test.hs   |  5 +++++
 .../License/SuspiciousVersion/pkg.cabal       | 16 ++++++++++++++++
 .../License/UnknownLicence/LICENSE            |  0
 .../License/UnknownLicence/Setup.hs           |  0
 .../License/UnknownLicence/cabal.out          |  4 ++++
 .../License/UnknownLicence/cabal.test.hs      |  5 +++++
 .../License/UnknownLicence/pkg.cabal          | 16 ++++++++++++++++
 .../License/WarnAllRightsReserved/LICENSE     |  0
 .../License/WarnAllRightsReserved/Setup.hs    |  0
 .../License/WarnAllRightsReserved/cabal.out   |  3 +++
 .../WarnAllRightsReserved/cabal.test.hs       |  5 +++++
 .../License/WarnAllRightsReserved/pkg.cabal   | 16 ++++++++++++++++
 .../Paths/AbsolutePath/cabal.out              |  7 +++++++
 .../Paths/AbsolutePath/cabal.test.hs          |  5 +++++
 .../Paths/AbsolutePath/pkg.cabal              | 13 +++++++++++++
 .../Paths/DistPoint/cabal.out                 |  4 ++++
 .../Paths/DistPoint/cabal.test.hs             |  5 +++++
 .../Paths/DistPoint/pkg.cabal                 | 13 +++++++++++++
 .../Paths/InvalidWin/cabal.out                |  4 ++++
 .../Paths/InvalidWin/cabal.test.hs            | 13 +++++++++++++
 .../Paths/InvalidWin/pkg.cabal                | 13 +++++++++++++
 .../RelativeOutsideInner/cabal.out            |  6 ++++++
 .../RelativeOutsideInner/cabal.test.hs        |  5 +++++
 .../RelativeOutsideInner/pkg.cabal            | 13 +++++++++++++
 .../Paths/RelativeOutside/outside             |  0
 .../SourceRepos/NoGoodRelative/cabal.out      |  4 ++++
 .../SourceRepos/NoGoodRelative/cabal.test.hs  |  5 +++++
 .../SourceRepos/NoGoodRelative/pkg.cabal      | 17 +++++++++++++++++
 .../SourceRepos/NoLocation/cabal.out          |  4 ++++
 .../SourceRepos/NoLocation/cabal.test.hs      |  5 +++++
 .../SourceRepos/NoLocation/pkg.cabal          | 15 +++++++++++++++
 .../SourceRepos/NoModuleCVS/cabal.out         |  4 ++++
 .../SourceRepos/NoModuleCVS/cabal.test.hs     |  5 +++++
 .../SourceRepos/NoModuleCVS/pkg.cabal         | 16 ++++++++++++++++
 .../SourceRepos/NoType/cabal.out              |  4 ++++
 .../SourceRepos/NoType/cabal.test.hs          |  5 +++++
 .../SourceRepos/NoType/pkg.cabal              | 15 +++++++++++++++
 .../SourceRepos/NonRecognisedRepo/cabal.out   |  4 ++++
 .../NonRecognisedRepo/cabal.test.hs           |  5 +++++
 .../SourceRepos/NonRecognisedRepo/pkg.cabal   | 16 ++++++++++++++++
 .../SourceRepos/SubdirRelative/cabal.out      |  4 ++++
 .../SourceRepos/SubdirRelative/cabal.test.hs  |  5 +++++
 .../SourceRepos/SubdirRelative/pkg.cabal      | 17 +++++++++++++++++
 .../SourceRepos/ThisTag/cabal.out             |  4 ++++
 .../SourceRepos/ThisTag/cabal.test.hs         |  5 +++++
 .../SourceRepos/ThisTag/pkg.cabal             | 16 ++++++++++++++++
 .../Conditionals/UnknownArch/cabal.out        |  4 ++++
 .../Conditionals/UnknownArch/cabal.test.hs    |  5 +++++
 .../Conditionals/UnknownArch/pkg.cabal        | 15 +++++++++++++++
 .../Conditionals/UnknownCompiler/cabal.out    |  4 ++++
 .../UnknownCompiler/cabal.test.hs             |  5 +++++
 .../Conditionals/UnknownCompiler/pkg.cabal    | 15 +++++++++++++++
 .../Conditionals/UnknownOS/cabal.out          |  4 ++++
 .../Conditionals/UnknownOS/cabal.test.hs      |  5 +++++
 .../Conditionals/UnknownOS/pkg.cabal          | 15 +++++++++++++++
 .../DevOnlyFlags/DebugFlag/cabal.out          |  4 ++++
 .../DevOnlyFlags/DebugFlag/cabal.test.hs      |  5 +++++
 .../DevOnlyFlags/DebugFlag/pkg.cabal          | 14 ++++++++++++++
 .../DevOnlyFlags/FDeferTypeErrors/cabal.out   |  4 ++++
 .../FDeferTypeErrors/cabal.test.hs            |  5 +++++
 .../DevOnlyFlags/FDeferTypeErrors/pkg.cabal   | 14 ++++++++++++++
 .../NonConfCheck/DevOnlyFlags/Jn/cabal.out    |  4 ++++
 .../DevOnlyFlags/Jn/cabal.test.hs             |  5 +++++
 .../NonConfCheck/DevOnlyFlags/Jn/pkg.cabal    | 14 ++++++++++++++
 .../DevOnlyFlags/Profiling/cabal.out          |  3 +++
 .../DevOnlyFlags/Profiling/cabal.test.hs      |  5 +++++
 .../DevOnlyFlags/Profiling/pkg.cabal          | 14 ++++++++++++++
 .../DevOnlyFlags/WError/cabal.out             |  4 ++++
 .../DevOnlyFlags/WError/cabal.test.hs         |  5 +++++
 .../DevOnlyFlags/WError/pkg.cabal             | 14 ++++++++++++++
 .../NonConfCheck/DuplicatedModules/cabal.out  |  4 ++++
 .../DuplicatedModules/cabal.test.hs           |  8 ++++++++
 .../NonConfCheck/DuplicatedModules/pkg.cabal  | 19 +++++++++++++++++++
 .../NonConfCheck/PackageVersions/cabal.out    |  4 ++++
 .../PackageVersions/cabal.test.hs             |  5 +++++
 .../NonConfCheck/PackageVersions/pkg.cabal    | 14 ++++++++++++++
 .../NonConfCheck/PathsExtensions/LICENSE      |  0
 .../NonConfCheck/PathsExtensions/cabal.out    |  4 ++++
 .../PathsExtensions/cabal.test.hs             |  7 +++++++
 .../NonConfCheck/PathsExtensions/pkg.cabal    | 18 ++++++++++++++++++
 .../Check/NonConfCheck/SetupBounds/Setup.hs   |  0
 .../Check/NonConfCheck/SetupBounds/cabal.out  |  4 ++++
 .../NonConfCheck/SetupBounds/cabal.test.hs    |  5 +++++
 .../Check/NonConfCheck/SetupBounds/pkg.cabal  | 17 +++++++++++++++++
 .../UnicodeCustomFields/cabal.test.hs         |  9 +++++++++
 .../UnicodeCustomFields/pkg.cabal             | 13 +++++++++++++
 .../Check/NonConfCheck/UnusedFlags/cabal.out  |  3 +++
 .../NonConfCheck/UnusedFlags/cabal.test.hs    |  5 +++++
 .../Check/NonConfCheck/UnusedFlags/pkg.cabal  | 14 ++++++++++++++
 .../Check/PackageFiles/BOM/LICENSE            |  0
 .../Check/PackageFiles/BOM/cabal.out          |  6 ++++++
 .../Check/PackageFiles/BOM/cabal.test.hs      |  5 +++++
 .../Check/PackageFiles/BOM/pkg.cabal          | 13 +++++++++++++
 .../Check/PackageFiles/ExtensionMatch/LICENSE |  0
 .../PackageFiles/ExtensionMatch/cabal.out     |  4 ++++
 .../PackageFiles/ExtensionMatch/cabal.test.hs |  5 +++++
 .../PackageFiles/ExtensionMatch/doc.eo.html   |  0
 .../PackageFiles/ExtensionMatch/pkg.cabal     | 15 +++++++++++++++
 .../Check/PackageFiles/FileName/cabal.out     |  4 ++++
 .../Check/PackageFiles/FileName/cabal.test.hs |  5 +++++
 .../Check/PackageFiles/FileName/pkg.cabal     | 12 ++++++++++++
 .../Check/PackageFiles/LocalPaths/cabal.out   |  4 ++++
 .../PackageFiles/LocalPaths/cabal.test.hs     |  5 +++++
 .../Check/PackageFiles/LocalPaths/pkg.cabal   | 13 +++++++++++++
 .../Check/PackageFiles/Missing/cabal.out      |  3 +++
 .../Check/PackageFiles/Missing/cabal.test.hs  |  5 +++++
 .../PackageFiles/NoConfigureFile/Setup.hs     |  0
 .../PackageFiles/NoConfigureFile/cabal.out    |  4 ++++
 .../NoConfigureFile/cabal.test.hs             |  5 +++++
 .../PackageFiles/NoConfigureFile/pkg.cabal    | 13 +++++++++++++
 .../PackageFiles/NoLicenseFile/cabal.out      |  4 ++++
 .../PackageFiles/NoLicenseFile/cabal.test.hs  |  5 +++++
 .../PackageFiles/NoLicenseFile/pkg.cabal      | 13 +++++++++++++
 .../Check/PackageFiles/NoSetupFile/cabal.out  |  4 ++++
 .../PackageFiles/NoSetupFile/cabal.test.hs    |  5 +++++
 .../Check/PackageFiles/NoSetupFile/pkg.cabal  | 15 +++++++++++++++
 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg |  0
 .../Check/PackageFiles/PathTooLong/cabal.out  |  6 ++++++
 .../PackageFiles/PathTooLong/cabal.test.hs    |  7 +++++++
 .../Check/PackageFiles/PathTooLong/pkg.cabal  | 13 +++++++++++++
 .../PackageFiles/VCSInfo/_darcs/.gitkeep      |  0
 .../Check/PackageFiles/VCSInfo/cabal.out      |  3 +++
 .../Check/PackageFiles/VCSInfo/cabal.test.hs  |  5 +++++
 .../Check/PackageFiles/VCSInfo/pkg.cabal      | 12 ++++++++++++
 290 files changed, 1903 insertions(+)
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/docs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/dir/file
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/z-pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/outside
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/BOM/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/BOM/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/LICENSE
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/doc.eo.html
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/FileName/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/Setup.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/pkg.cabal
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/_darcs/.gitkeep
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.out
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.test.hs
 create mode 100644 cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/pkg.cabal

diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.out
new file mode 100644
index 0000000000..f9681d87a0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Instead of 'cc-options: -Llibdir' use 'extra-lib-dirs: libdir'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.test.hs
new file mode 100644
index 0000000000..c737bd44a7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cc-options`, use `extra-lib-dirs` instead of `-L`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/pkg.cabal
new file mode 100644
index 0000000000..aeb65f0d30
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsExtraLibDirs/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  cc-options: -Llibdir
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.out
new file mode 100644
index 0000000000..c982bef5a1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Instead of 'cc-options: -Ifolder' use 'include-dirs: folder'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.test.hs
new file mode 100644
index 0000000000..ffffa21236
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cc-options`, use `include-dirs` instead of `-I`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/pkg.cabal
new file mode 100644
index 0000000000..92f30b6ff2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CCOptionsInclude/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  cc-options: -Ifolder
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.out
new file mode 100644
index 0000000000..cfc4becef8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: 'cpp-options: -Q' is not a portable C-preprocessor flag.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.test.hs
new file mode 100644
index 0000000000..6696307dde
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cpp-options`, do not use use non portable flags.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/pkg.cabal
new file mode 100644
index 0000000000..bb8ab6787f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CppNotPortable/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  cpp-options: -Q
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.out
new file mode 100644
index 0000000000..891b62c0a5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Instead of 'cxx-options: -lgame' use 'extra-libraries: game'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.test.hs
new file mode 100644
index 0000000000..bc28ce906e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cxx-options`, use `extra-libraries` instead of `-l`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/pkg.cabal
new file mode 100644
index 0000000000..ca2f12d7f1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOptionsExtraLibraries/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  cxx-options: -lgame
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.out
new file mode 100644
index 0000000000..bf34faed5c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: 'cxx-options: -O[n]' is generally not needed. When building with  optimisations Cabal automatically adds '-O2' for C++ code. Setting it yourself interferes with the --disable-optimization flag.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.test.hs
new file mode 100644
index 0000000000..9706be3059
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cxx-options`, do not use `-O1`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/pkg.cabal
new file mode 100644
index 0000000000..68547620fa
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/COptions/CxxOs/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  cxx-options: -O1
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.out
new file mode 100644
index 0000000000..75379f0b1d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Packages using 'cabal-version: 2.0' and the autogenerated module Paths_* must include it also on the 'autogen-modules' field besides 'exposed-modules' and 'other-modules'. This specifies that the module does not come with the package and is generated on setup. Modules built with a custom Setup.hs script also go here to ensure that commands like sdist don't fail.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.test.hs
new file mode 100644
index 0000000000..01f93e1b83
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- autogenerated modules in `autogen-modules` w/ ≥ 2.0.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/pkg.cabal
new file mode 100644
index 0000000000..a00327cd1b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/AutoGenMods/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 2.0
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  other-modules: Paths_pkg
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.out
new file mode 100644
index 0000000000..d198d56fe8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: From version 1.24 cabal supports specifying explicit dependencies for Custom setup scripts. Consider using 'cabal-version: 1.24' or higher and adding a 'custom-setup' section with a 'setup-depends' field that specifies the dependencies of the Setup.hs script itself. The 'setup-depends' field uses the same syntax as 'build-depends', so a simple example would be 'setup-depends: base, Cabal'.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.test.hs
new file mode 100644
index 0000000000..e338049d49
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `custom-setup` on ≥1.24.
+main = cabalTest $
+  cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/pkg.cabal
new file mode 100644
index 0000000000..c9290adce0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/CustomSetup/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 1.12
+build-type: Custom
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.out
new file mode 100644
index 0000000000..ba545343e1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "default-extensions" is available only since the Cabal specification version 1.10. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.test.hs
new file mode 100644
index 0000000000..558722a1e7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `default-extensions` need ≥1.10.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/pkg.cabal
new file mode 100644
index 0000000000..35eb8f8b16
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultExtension/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: >= 1.8
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-extensions: ScopedTypeVariables
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.out
new file mode 100644
index 0000000000..b8e96488db
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "default-language" is available only since the Cabal specification version 1.10. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.test.hs
new file mode 100644
index 0000000000..9b2fb76f2f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `default-language` need ≥1.10.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/pkg.cabal
new file mode 100644
index 0000000000..1b0f946d8f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguage/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: >= 1.8
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.out
new file mode 100644
index 0000000000..873802c7a6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Packages using 'cabal-version: >= 1.10' and before 'cabal-version: 3.4' must specify the 'default-language' field for each component (e.g. Haskell98 or Haskell2010). If a component uses different languages in different modules then list the other ones in the 'other-languages' field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.test.hs
new file mode 100644
index 0000000000..15dc554b94
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- You need to specify `default-language`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/pkg.cabal
new file mode 100644
index 0000000000..d1e86489db
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/DefaultLanguageSpec/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.out
new file mode 100644
index 0000000000..f355c63243
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Unfortunately the language extensions 'MonoPatBinds' break the parser in earlier Cabal versions so you need to specify 'cabal-version: >= 1.4'. Alternatively if you require compatibility with earlier Cabal versions then you may be able to use an equivalent compiler-specific flag.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.test.hs
new file mode 100644
index 0000000000..f72156fdb4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Some extension need ≥1.2.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/pkg.cabal
new file mode 100644
index 0000000000..7e6b953bf5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtensionBreak/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: >= 1.2
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: BSD3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  extensions: MonoPatBinds
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.out
new file mode 100644
index 0000000000..351d74dff8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.out
@@ -0,0 +1,6 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: For packages using 'cabal-version: >= 1.10' the 'extensions' field is deprecated. The new 'default-extensions' field lists extensions that are used in all modules in the component, while the 'other-extensions' field lists extensions that are used in some modules, e.g. via the {-# LANGUAGE #-} pragma.
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "extensions" is deprecated in the Cabal specification version 1.12. Please use 'default-extensions' or 'other-extensions' fields.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.test.hs
new file mode 100644
index 0000000000..e83235af11
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `extensions` deprecated.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/pkg.cabal
new file mode 100644
index 0000000000..5691774e4f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Extensions/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 1.12
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  extensions: ScopedTypeVariables
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.out
new file mode 100644
index 0000000000..2432aa3188
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: To use the 'extra-doc-files' field the package needs to specify 'cabal-version: 1.18' or higher.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.test.hs
new file mode 100644
index 0000000000..d116082bb1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `extra-doc-files` need ≥1.18.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/docs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/docs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/pkg.cabal
new file mode 100644
index 0000000000..c065e8bf71
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDoc/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: >= 1.10
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+extra-doc-files: docs
+
+test-suite test
+  main-is: Main.hs
+  type: exitcode-stdio-1.0
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.out
new file mode 100644
index 0000000000..122fee2ffa
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "extra-dynamic-library-flavours" is available only since the Cabal specification version 3.0. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.test.hs
new file mode 100644
index 0000000000..d6de120a48
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `extra-dynamic-library-flavour` need ≥3.0.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/pkg.cabal
new file mode 100644
index 0000000000..382bbfe1d9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraDynamicLibraryFlavour/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 1.12
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  extra-dynamic-library-flavours: asm
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.out
new file mode 100644
index 0000000000..b5329d39d4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: To use the 'extra-framework-dirs' field the package needs to specify 'cabal-version: 1.24' or higher.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.test.hs
new file mode 100644
index 0000000000..058046b0fc
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `extra-framework-dirs` need ≥1.24. (just warning)
+main = cabalTest $
+  cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/dir/file b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/dir/file
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/pkg.cabal
new file mode 100644
index 0000000000..e2d8e89cb8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/ExtraFrameworkDirs/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: >= 1.10
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-language: Haskell98
+  extra-framework-dirs: dir
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.out
new file mode 100644
index 0000000000..57a5c7fa86
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:15:3: The field "mixins" is available only since the Cabal specification version 2.0. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.test.hs
new file mode 100644
index 0000000000..59b761f800
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `mixins` need ≥2.0.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/pkg.cabal
new file mode 100644
index 0000000000..6a87e846bb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Mixins/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: >= 1.10
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-language: Haskell98
+  mixins: base
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.out
new file mode 100644
index 0000000000..9b72a6e6fd
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: To use multiple 'library' sections or a named library section the package needs to specify at least 'cabal-version: 2.0'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.test.hs
new file mode 100644
index 0000000000..927052c994
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Multilibs or named libs need ≥2.0.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/pkg.cabal
new file mode 100644
index 0000000000..486cc3ccd2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/MultiLibs/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: >= 1.8
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library lib
+  exposed-modules: Module
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.out
new file mode 100644
index 0000000000..80956ae0a3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: To use the 'reexported-module' field the package needs to specify 'cabal-version: 1.22' or higher.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.test.hs
new file mode 100644
index 0000000000..e173ed3f70
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `reexported-module` need ≥1.22.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/pkg.cabal
new file mode 100644
index 0000000000..22d3e36c6d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Reexported/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: >= 1.10
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  default-language: Haskell98
+  reexported-modules: Mu
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.out
new file mode 100644
index 0000000000..01a7bec505
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'source-repository' section is new in Cabal 1.6. Unfortunately it messes up the parser in earlier Cabal versions so you need to specify 'cabal-version: >= 1.6'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.test.hs
new file mode 100644
index 0000000000..36ef8b047c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `source-repository` need ≥1.6.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/pkg.cabal
new file mode 100644
index 0000000000..09f7b6e2fe
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/SourceRepository/pkg.cabal
@@ -0,0 +1,17 @@
+cabal-version: >= 1.4
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+
+source-repository head
+  type: darcs
+  location: http://www.example.org/darcs
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.out
new file mode 100644
index 0000000000..0a4fcea5d3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "cmm-sources" is available only since the Cabal specification version 3.0. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.test.hs
new file mode 100644
index 0000000000..4b34bdad91
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `cmm-sources` and friends need ≥3.0.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/pkg.cabal
new file mode 100644
index 0000000000..8750af9e03
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Sources/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 1.12
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  cmm-sources: asm
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.out
new file mode 100644
index 0000000000..248ca6c3f6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'test-suite' section is new in Cabal 1.10. Unfortunately it messes up the parser in older Cabal versions so you must specify at least 'cabal-version: >= 1.8', but note that only Cabal 1.10 and later can actually run such test suites.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.test.hs
new file mode 100644
index 0000000000..91087a24a2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- test-suite need ≥1.8.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/pkg.cabal
new file mode 100644
index 0000000000..fedacfe8c5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/Testsuite1.8/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: >= 1.4
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+test-suite test
+  main-is: Main.hs
+  type: exitcode-stdio-1.0
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.out
new file mode 100644
index 0000000000..b0c046c525
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:14:3: The field "virtual-modules" is available only since the Cabal specification version 2.2. This field will be ignored.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.test.hs
new file mode 100644
index 0000000000..4672147a48
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `virtual-modules` need ≥2.2.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/pkg.cabal
new file mode 100644
index 0000000000..155004363b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/CabalVersion/VirtualModules/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 1.12
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Module
+  virtual-modules: Virtual
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.out
new file mode 100644
index 0000000000..8256caeae6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: Deprecated extensions: 'RecordPuns'. Instead of 'RecordPuns' use 'NamedFieldPuns'.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.test.hs
new file mode 100644
index 0000000000..1d31f4c583
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Deprecated extension.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/pkg.cabal
new file mode 100644
index 0000000000..3502a59f4f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/DeprecatedExtension/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  default-extensions: RecordPuns
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out
new file mode 100644
index 0000000000..2dee1b698e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The package will not build sanely due to these errors:
+Warning: The package has an impossible version range for a dependency on an internal library: pkg:internal >1.0. This version range does not include the current package, and must be removed as the current package's library will always be used.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.test.hs
new file mode 100644
index 0000000000..b87d9515df
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Impossible version range for internal library.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal
new file mode 100644
index 0000000000..71c35a369a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal
@@ -0,0 +1,18 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  build-depends: base == 4.*,
+                 internal > 1.0
+  default-language: Haskell2010
+
+library internal
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.out
new file mode 100644
index 0000000000..e0208991ec
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Invalid 'tested-with' version range: ghc ==6.10 && ==7.1. To indicate that you have tested a package with multiple different versions of the same compiler use multiple entries, for example 'tested-with: GHC==6.10.4, GHC==6.12.3' and not 'tested-with: GHC==6.10.4 && ==6.12.3'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.test.hs
new file mode 100644
index 0000000000..b6c5f5181a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Invalid `tested-with` range.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/pkg.cabal
new file mode 100644
index 0000000000..e05f4642ac
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/InvalidTestedWithRange/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+tested-with: GHC== 6.10 && ==7.1
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.out
new file mode 100644
index 0000000000..7064ceed69
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Languages listed as extensions: Haskell98. Languages must be specified in either the 'default-language'  or the 'other-languages' field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.test.hs
new file mode 100644
index 0000000000..777c89b63d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Language listed as extension.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/pkg.cabal
new file mode 100644
index 0000000000..c4f3fcbf31
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/LanguageAsExtension/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  default-extensions: Haskell98
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.out
new file mode 100644
index 0000000000..007bdd3a10
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: No 'build-type' specified. If you do not need a custom Setup.hs or ./configure script then use 'build-type: Simple'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.test.hs
new file mode 100644
index 0000000000..6a714da135
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No build-type specified.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/pkg.cabal
new file mode 100644
index 0000000000..b4d7c8d2f4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoBuildTypeSpecified/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 2.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.out
new file mode 100644
index 0000000000..d8613b62ef
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: No 'category' field.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.test.hs
new file mode 100644
index 0000000000..484b17857a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No category.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/pkg.cabal
new file mode 100644
index 0000000000..47b3ee1370
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCategory/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.out
new file mode 100644
index 0000000000..9dca65dd91
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Ignoring the 'custom-setup' section because the 'build-type' is not 'Custom'. Use 'build-type: Custom' if you need to use a custom Setup.hs script.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.test.hs
new file mode 100644
index 0000000000..9856b9b34c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No custom-setup with build-type: simple.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/pkg.cabal
new file mode 100644
index 0000000000..cccedaf4a9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoCustom/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+custom-setup
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.out
new file mode 100644
index 0000000000..21a566a179
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: No 'description' field.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.test.hs
new file mode 100644
index 0000000000..388d77437d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No description.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/pkg.cabal
new file mode 100644
index 0000000000..04a17298ed
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoDescription/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.out
new file mode 100644
index 0000000000..2d81a0970b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: No 'maintainer' field.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.test.hs
new file mode 100644
index 0000000000..6a615a7ee6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No maintainer.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/pkg.cabal
new file mode 100644
index 0000000000..c3a398c5bc
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoMaintainer/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.out
new file mode 100644
index 0000000000..487a645302
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: No 'synopsis' field.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.test.hs
new file mode 100644
index 0000000000..ea88909bb5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No synopsis.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/pkg.cabal
new file mode 100644
index 0000000000..d17a0dedc9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoSynopsis/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.out
new file mode 100644
index 0000000000..84deddb040
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Package names with the prefix 'z-' are reserved by Cabal and cannot be used.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.test.hs
new file mode 100644
index 0000000000..66da874df8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- no z-prefixed package names
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/z-pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/z-pkg.cabal
new file mode 100644
index 0000000000..e879f8348b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/NoZPrefix/z-pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: z-pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.out
new file mode 100644
index 0000000000..5531fc778e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: The 'description' field should be longer than the 'synopsis' field. It's useful to provide an informative 'description' to allow Haskell programmers who have never heard about your package to understand the purpose of your package. The 'description' field content is typically shown by tooling (e.g. 'cabal info', Haddock, Hackage) below the 'synopsis' which serves as a headline. Please refer to <https://cabal.readthedocs.io/en/stable/cabal-package.html#package-properties> for more details.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.test.hs
new file mode 100644
index 0000000000..9974626c7a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Description should be longer than synopsis.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/pkg.cabal
new file mode 100644
index 0000000000..cdf0dc32b9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ShortDescription/pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis, elaborated one
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.out
new file mode 100644
index 0000000000..34c7a83e4d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Unknown compiler 'figforth' in 'tested-with' field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.test.hs
new file mode 100644
index 0000000000..ac58286df3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown compiler in `tested-with`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/pkg.cabal
new file mode 100644
index 0000000000..94514c5e83
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownCompiler/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+tested-with: figforth
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.out
new file mode 100644
index 0000000000..e7e2b6bf9f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Unknown extensions: ObliqueTypes
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.test.hs
new file mode 100644
index 0000000000..622972f066
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown extension.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/pkg.cabal
new file mode 100644
index 0000000000..9ffa1a32eb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownExtension/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  default-extensions: ObliqueTypes
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.out
new file mode 100644
index 0000000000..38dcc1ceb0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: Unknown languages: Haskell2030
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.test.hs
new file mode 100644
index 0000000000..0c728375b0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown language.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/pkg.cabal
new file mode 100644
index 0000000000..8ee5115285
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/UnknownLanguage/pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2030
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.out
new file mode 100644
index 0000000000..68a0f0414b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'ghc-options: -fasm' is unnecessary and will not work on CPU architectures other than x86, x86-64, ppc or sparc.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.test.hs
new file mode 100644
index 0000000000..d4f68cb45f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Tricky option in `ghc-options`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/pkg.cabal
new file mode 100644
index 0000000000..15ad9e26f7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCOptions/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  ghc-options: -fasm
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.out
new file mode 100644
index 0000000000..9a01ad49fb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: 'ghc-prof-options: -o' is not needed. The output files are named automatically.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.test.hs
new file mode 100644
index 0000000000..f80a80c47e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Tricky option in `ghc-prof-options`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/pkg.cabal
new file mode 100644
index 0000000000..0fd9e4b5f6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCProfOptions/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  ghc-prof-options: -o
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.out
new file mode 100644
index 0000000000..0bbdc46da2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: Instead of 'ghc-shared-options: -fglasgow-exts' it is preferable to use the 'extensions' field.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.test.hs
new file mode 100644
index 0000000000..8974491ac0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Tricky option in `ghc-shared-options`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/pkg.cabal
new file mode 100644
index 0000000000..7ebc1b09c8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/GHCOptions/GHCSharedOptions/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  ghc-shared-options: -fglasgow-exts
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.out
new file mode 100644
index 0000000000..09363396aa
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Unfortunately the license 'ISC' messes up the parser in earlier Cabal versions so you need to specify 'cabal-version: >= 1.4'. Alternatively if you require compatibility with earlier Cabal versions then use 'OtherLicense'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.test.hs
new file mode 100644
index 0000000000..f9314ffefe
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Compatibility w/ ≤1.4.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/pkg.cabal
new file mode 100644
index 0000000000..268c90d5d3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/Compatibility/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: >= 1.2
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: ISC
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Foo
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.out
new file mode 100644
index 0000000000..e5d4dd5a95
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: A 'license-file' is not specified.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.test.hs
new file mode 100644
index 0000000000..65cef73d45
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `licence-file` missing.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/pkg.cabal
new file mode 100644
index 0000000000..2e6186952b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoFileSpecified/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 2.0
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.out
new file mode 100644
index 0000000000..97d51e4a9e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'license' field is missing or is NONE.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.test.hs
new file mode 100644
index 0000000000..5fca021e0e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No license.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/pkg.cabal
new file mode 100644
index 0000000000..56c4e99c72
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoLicense/pkg.cabal
@@ -0,0 +1,11 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.out
new file mode 100644
index 0000000000..97d51e4a9e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'license' field is missing or is NONE.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.test.hs
new file mode 100644
index 0000000000..8f0167886b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- NONE license.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/pkg.cabal
new file mode 100644
index 0000000000..922a082c2b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/NoneLicense/pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: NONE
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.out
new file mode 100644
index 0000000000..8655c81e5e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: Using 'license: BSD4' is almost always a misunderstanding. 'BSD4' refers to the old 4-clause BSD license with the advertising clause. 'BSD3' refers the new 3-clause BSD license.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.test.hs
new file mode 100644
index 0000000000..086abf3430
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Suspicious license BSD4.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/pkg.cabal
new file mode 100644
index 0000000000..855492a3bb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousLicense/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 2.0
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: BSD4
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.out
new file mode 100644
index 0000000000..5b5b542a26
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: 'license: GPL-5' is not a known version of that license. The known versions are 2, 3. If this is not a mistake and you think it should be a known version then please file a ticket.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.test.hs
new file mode 100644
index 0000000000..ae6610af42
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Suspicious license version.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/pkg.cabal
new file mode 100644
index 0000000000..1ca07eb421
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/SuspiciousVersion/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 2.0
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-5
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.out
new file mode 100644
index 0000000000..91bf9dac72
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: 'license: Illiberal' is not a recognised license. The known licenses are: GPL, GPL-2, GPL-3, LGPL, LGPL-2.1, LGPL-3, AGPL, AGPL-3, BSD2, BSD3, MIT, ISC, MPL-2.0, Apache, Apache-2.0, PublicDomain, AllRightsReserved, OtherLicense
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.test.hs
new file mode 100644
index 0000000000..e044445d91
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Unknown license.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/pkg.cabal
new file mode 100644
index 0000000000..70c973bc8e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/UnknownLicence/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 2.0
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: Illiberal
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.out
new file mode 100644
index 0000000000..ab626433ad
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: The 'license' is AllRightsReserved. Is that really what you want?
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.test.hs
new file mode 100644
index 0000000000..f618ac6fb3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Dubious AllRightsReserved.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/pkg.cabal
new file mode 100644
index 0000000000..39614965d3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/License/WarnAllRightsReserved/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 2.0
+build-type: Custom
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: AllRightsReserved
+license-file: LICENSE
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.out
new file mode 100644
index 0000000000..e38f0f28ef
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.out
@@ -0,0 +1,7 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: In 'extra-source-files': the pattern '/home/user/file' does not match any files.
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'extra-source-files: /home/user/file' specifies an absolute path, but the 'extra-source-files' field must use relative paths.
+Warning: 'extra-source-files: /home/user/file' is not a good relative path: "posix absolute path"
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.test.hs
new file mode 100644
index 0000000000..313653d572
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Absolute path.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/pkg.cabal
new file mode 100644
index 0000000000..b645950a4f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/AbsolutePath/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+extra-source-files: /home/user/file
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.out
new file mode 100644
index 0000000000..763c0309cd
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'ghc-options' contain the path 'dist/file' which points inside the 'dist' directory. This is not reliable because the location of this directory is configurable by the user (or package manager). In addition the layout of the 'dist' directory is subject to change in future versions of Cabal.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.test.hs
new file mode 100644
index 0000000000..88daf4d4c0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Points to dist.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/pkg.cabal
new file mode 100644
index 0000000000..0c532d2b69
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/DistPoint/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
+  ghc-options: -m dist/file
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.out
new file mode 100644
index 0000000000..349dbe5f54
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The path 'n?ul/*.a' is invalid on Windows, which would cause portability problems for this package. Windows file names cannot contain any of the characters ":*?<>|" and there a few reserved names including "aux", "nul", "con", "prn", "com1-9", "lpt1-9" and "clock$".
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.test.hs
new file mode 100644
index 0000000000..e99fccc6bc
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/cabal.test.hs
@@ -0,0 +1,13 @@
+import Test.Cabal.Prelude
+
+import System.Directory (createDirectoryIfMissing)
+
+-- Invalid Windows filepath.
+main = cabalTest . withSourceCopy $ do
+  skipIfWindows
+  cwd <- testCurrentDir <$> getTestEnv
+  liftIO $ createDirectoryIfMissing False $ cwd </> "n?ul"
+  liftIO $ writeFile (cwd </> "n?ul" </> "test.a") ""
+    -- A directory named like `n?ul` on Windows will make external
+    -- tools like git — and hence the whole testsuite — error.
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/pkg.cabal
new file mode 100644
index 0000000000..bda5efb37a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/InvalidWin/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+extra-source-files: n?ul/*.a
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.out
new file mode 100644
index 0000000000..e108ccef07
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.out
@@ -0,0 +1,6 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: 'extra-source-files: ../outside' is a relative path outside of the source tree. This will not work when generating a tarball with 'sdist'.
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'extra-source-files: ../outside' is not a good relative path: "parent directory segment: .."
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.test.hs
new file mode 100644
index 0000000000..09a670ffb2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Relative filepath outside source tree.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/pkg.cabal
new file mode 100644
index 0000000000..7f7e36cb69
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/RelativeOutsideInner/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+extra-source-files: ../outside
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/outside b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Paths/RelativeOutside/outside
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.out
new file mode 100644
index 0000000000..6f9a5f22b8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'subdir' field of a source-repository is not a good relative path: "empty path segment"
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.test.hs
new file mode 100644
index 0000000000..5807e5dd6b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `subdir` is not a good relative path.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/pkg.cabal
new file mode 100644
index 0000000000..5e63d4a5f1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoGoodRelative/pkg.cabal
@@ -0,0 +1,17 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository head
+  subdir: .//
+  type:     darcs
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.out
new file mode 100644
index 0000000000..4e2729e684
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The source-repository 'location' is a required field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.test.hs
new file mode 100644
index 0000000000..1c134698b8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No `location`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/pkg.cabal
new file mode 100644
index 0000000000..3838d8fb95
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoLocation/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository head
+  type:     darcs
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.out
new file mode 100644
index 0000000000..fdbd6de786
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: For a CVS source-repository, the 'module' is a required field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.test.hs
new file mode 100644
index 0000000000..579548e5ae
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No `module` (CVS only).
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/pkg.cabal
new file mode 100644
index 0000000000..de5405db20
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoModuleCVS/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository head
+  type:     CVS
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.out
new file mode 100644
index 0000000000..f896f829bf
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The source-repository 'type' is a required field.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.test.hs
new file mode 100644
index 0000000000..082ea0f519
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No `type`.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/pkg.cabal
new file mode 100644
index 0000000000..3a710304b9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NoType/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository head
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.out
new file mode 100644
index 0000000000..9ebbaff398
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'tail' is not a recognised kind of source-repository. The repo kind is usually 'head' or 'this'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.test.hs
new file mode 100644
index 0000000000..d7cd8fd959
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Non-regonised (head, this, etc.) repo.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/pkg.cabal
new file mode 100644
index 0000000000..db311b24d2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/NonRecognisedRepo/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository tail
+  type:     darcs
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.out
new file mode 100644
index 0000000000..90c3197fc7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The 'subdir' field of a source-repository must be a relative path.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.test.hs
new file mode 100644
index 0000000000..b29b30c2cc
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `subdir` is not a relative path.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/pkg.cabal
new file mode 100644
index 0000000000..b92b623897
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/SubdirRelative/pkg.cabal
@@ -0,0 +1,17 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository head
+  subdir: \\home
+  type:     darcs
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.out
new file mode 100644
index 0000000000..65b849f6ff
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: For the 'this' kind of source-repository, the 'tag' is a required field. It should specify the tag corresponding to this version or release of the package.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.test.hs
new file mode 100644
index 0000000000..4b7ef7bab8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `tag` needed in `this` repos.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/pkg.cabal
new file mode 100644
index 0000000000..20d8e6936f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/SourceRepos/ThisTag/pkg.cabal
@@ -0,0 +1,16 @@
+cabal-version: 3.0
+name: pkg
+version: 0
+category: example
+maintainer: none@example.com
+synopsis: synopsis
+description: description
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
+source-repository this
+  type:     darcs
+  location: http://www.example.org
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.out
new file mode 100644
index 0000000000..da3d5ef8f9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Unknown architecture name 'subleq'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.test.hs
new file mode 100644
index 0000000000..0101fcda52
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown arch name.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/pkg.cabal
new file mode 100644
index 0000000000..9946735aeb
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownArch/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  if arch(subleq)
+    exposed-modules: Bar
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.out
new file mode 100644
index 0000000000..ed1dca4768
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Unknown compiler name 'MHC'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.test.hs
new file mode 100644
index 0000000000..ff47c4f5a0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown compiler.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/pkg.cabal
new file mode 100644
index 0000000000..9a3e9471a1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownCompiler/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  if !impl(MHC)
+    exposed-modules: Bar
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.out
new file mode 100644
index 0000000000..0025900cb0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: Unknown operating system name 'plan9'
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.test.hs
new file mode 100644
index 0000000000..93bf2b230c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Uknown OS name.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/pkg.cabal
new file mode 100644
index 0000000000..bf8acbe101
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/Conditionals/UnknownOS/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  if os(plan9)
+    exposed-modules: Bar
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.out
new file mode 100644
index 0000000000..559691f8af
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'ghc-prof-options: -d*' debug flags are not appropriate for a distributed package. Alternatively, if you want to use this, make it conditional based on a Cabal configuration flag (with 'manual: True' and 'default: False') and enable that flag during development.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.test.hs
new file mode 100644
index 0000000000..4201f98493
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Debug flags are inappropriate for release.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/pkg.cabal
new file mode 100644
index 0000000000..32db050937
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/DebugFlag/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  ghc-prof-options: -ddump-asm
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.out
new file mode 100644
index 0000000000..053f690452
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'ghc-options: -fdefer-type-errors' is fine during development but is not appropriate for a distributed package. Alternatively, if you want to use this, make it conditional based on a Cabal configuration flag (with 'manual: True' and 'default: False') and enable that flag during development.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.test.hs
new file mode 100644
index 0000000000..205edb3f12
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- -fdefer-type-errors
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/pkg.cabal
new file mode 100644
index 0000000000..f8dab6086d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/FDeferTypeErrors/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  ghc-options: -fdefer-type-errors
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.out
new file mode 100644
index 0000000000..7205e9fd4e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'ghc-shared-options: -j[N]' can make sense for specific user's setup, but it is not appropriate for a distributed package. Alternatively, if you want to use this, make it conditional based on a Cabal configuration flag (with 'manual: True' and 'default: False') and enable that flag during development.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.test.hs
new file mode 100644
index 0000000000..91996417d9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- j[n].
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/pkg.cabal
new file mode 100644
index 0000000000..5b4c651a3a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Jn/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  ghc-shared-options: -j4
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.out
new file mode 100644
index 0000000000..2499ad5964
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: 'ghc-shared-options: -fprof*' profiling flags are typically not appropriate for a distributed library package. These flags are useful to profile this package, but when profiling other packages that use this one these flags clutter the profile output with excessive detail. If you think other packages really want to see cost centres from this package then use '-fprof-auto-exported' which puts cost centres only on exported functions. Alternatively, if you want to use this, make it conditional based on a Cabal configuration flag (with 'manual: True' and 'default: False') and enable that flag during development.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.test.hs
new file mode 100644
index 0000000000..ad9c8f4bb7
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Profiling flags unsuited for distribution.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/pkg.cabal
new file mode 100644
index 0000000000..0221ac0e1b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/Profiling/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  ghc-shared-options: -caf-all
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.out
new file mode 100644
index 0000000000..1f93b2de38
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: 'ghc-prof-options: -Werror' makes the package easy to break with future GHC versions because new GHC versions often add new warnings. Alternatively, if you want to use this, make it conditional based on a Cabal configuration flag (with 'manual: True' and 'default: False') and enable that flag during development.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.test.hs
new file mode 100644
index 0000000000..1a0686e118
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- WError without -W/-Wall.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/pkg.cabal
new file mode 100644
index 0000000000..86073cab7b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DevOnlyFlags/WError/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  ghc-prof-options: -Werror
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.out
new file mode 100644
index 0000000000..022bed1a68
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The package will not build sanely due to these errors:
+Warning: Duplicate modules in library: Foo
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.test.hs
new file mode 100644
index 0000000000..42bdba4b1e
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/cabal.test.hs
@@ -0,0 +1,8 @@
+import Test.Cabal.Prelude
+
+-- Duplicated module.
+main = cabalTest $
+  fails $ cabal "check" []
+
+  -- TODO: note how conditional give a “potential duplicate”,
+  --       which is not true at all.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/pkg.cabal
new file mode 100644
index 0000000000..b2911e06f5
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/DuplicatedModules/pkg.cabal
@@ -0,0 +1,19 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+    exposed-modules: Foo,
+                     Foo
+
+--   if os(linux)
+--     exposed-modules: Bar
+--   if !os(linux)
+--     exposed-modules: Bar
+
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out
new file mode 100644
index 0000000000..c487673952
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The dependency 'build-depends: base' does not specify an upper bound on the version number. Each major release of the 'base' package changes the API in various ways and most packages will need some changes to compile with it. The recommended practice is to specify an upper bound on the version of the 'base' package. This ensures your package will continue to build when a new major version of the 'base' package is released. If you are not sure what upper bound to use then use the next  major version. For example if you have tested your package with 'base' version 4.5 and 4.6 then use 'build-depends: base >= 4.5 && < 4.7'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs
new file mode 100644
index 0000000000..52dbeb0e1b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Unbounded (top) base.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal
new file mode 100644
index 0000000000..843edfb025
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  build-depends: base >= 3.10
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/LICENSE b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.out
new file mode 100644
index 0000000000..2efd21d37f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The package will not build sanely due to these errors:
+Warning: Packages using RebindableSyntax with OverloadedStrings or OverloadedLists in default-extensions, in conjunction with the autogenerated module Paths_*, are known to cause compile failures with Cabal < 2.2. To use these default-extensions with a Paths_* autogen module, specify at least 'cabal-version: 2.2'.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.test.hs
new file mode 100644
index 0000000000..f734494908
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/cabal.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+-- cabal-version <2.2, Paths_pkg *and* `default extensions` w/
+-- RebindableSyntax plus OverloadedList or similar do not get well
+-- together.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/pkg.cabal
new file mode 100644
index 0000000000..a3f160d87d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PathsExtensions/pkg.cabal
@@ -0,0 +1,18 @@
+cabal-version: 2.0
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+license-file: LICENSE
+
+library
+  exposed-modules: Foo
+  autogen-modules: Paths_pkg
+  other-modules: Paths_pkg
+  default-language: Haskell2010
+  default-extensions: RebindableSyntax,
+                      OverloadedLists
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/Setup.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out
new file mode 100644
index 0000000000..f0d085f128
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The dependency 'setup-depends: 'base' does not specify an upper bound on the version number. Each major release of the 'base' package changes the API in various ways and most packages will need some changes to compile with it. If you are not sure what upper bound to use then use the next major version.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs
new file mode 100644
index 0000000000..26f10dec4c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- `custom-setup` bounds.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal
new file mode 100644
index 0000000000..1c184cb17d
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal
@@ -0,0 +1,17 @@
+cabal-version: 3.0
+build-type: Custom
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+custom-setup
+  setup-depends: base > 1
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/cabal.test.hs
new file mode 100644
index 0000000000..83304dd613
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/cabal.test.hs
@@ -0,0 +1,9 @@
+import Test.Cabal.Prelude
+
+-- No unicode in custom fields.
+main = cabalTest . recordMode DoNotRecord $
+  fails $ cabal "check" []
+
+  -- You cannot check this against the output,
+  -- as the way to display “Wnknown unicode
+  -- char” wobbles between OSes.
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/pkg.cabal
new file mode 100644
index 0000000000..7afe3a7bae
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnicodeCustomFields/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+x-field-ä: content
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.out b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.out
new file mode 100644
index 0000000000..935c748dae
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: Declared and used flag sets differ: test-flag /= . 
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.test.hs b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.test.hs
new file mode 100644
index 0000000000..7bbbaf8e4c
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Unused flag.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/pkg.cabal
new file mode 100644
index 0000000000..3ce0f246c6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/UnusedFlags/pkg.cabal
@@ -0,0 +1,14 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+flag test-flag
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/LICENSE b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.out
new file mode 100644
index 0000000000..8d2ce00a95
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.out
@@ -0,0 +1,6 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: pkg.cabal:1:2: Byte-order mark found at the beginning of the file
+Warning: The following errors will cause portability problems on other environments:
+Warning: ./pkg.cabal starts with an Unicode byte order mark (BOM). This may cause problems with older cabal versions.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.test.hs
new file mode 100644
index 0000000000..2699c60af4
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- BOM at top of .cabal file.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/pkg.cabal
new file mode 100644
index 0000000000..76dfdfa0b3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/BOM/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: >= 1.2
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: BSD3
+license-file: LICENSE
+
+library
+  exposed-modules: Foo
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/LICENSE b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/LICENSE
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.out
new file mode 100644
index 0000000000..85fbc17d59
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: In the 'extra-doc-files' field: invalid file glob '***.html'. Wildcards '*' may only totally replace the file's base name, not only parts of it.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.test.hs
new file mode 100644
index 0000000000..0bd96291d1
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Partial extension match & <2.4.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/doc.eo.html b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/doc.eo.html
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/pkg.cabal
new file mode 100644
index 0000000000..86a249bd76
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/ExtensionMatch/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 2.0
+build-type: Simple
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3
+extra-doc-files: ***.html
+license-file: LICENSE
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.out
new file mode 100644
index 0000000000..847b700bd9
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The filename './pkg.cabal' does not match package name (expected: 'package.cabal')
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.test.hs
new file mode 100644
index 0000000000..01e7ef31ba
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Mismatched package name/filename.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/pkg.cabal
new file mode 100644
index 0000000000..7d5182ca65
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/FileName/pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: package
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.out
new file mode 100644
index 0000000000..e0ce81ef97
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: 'extra-lib-dirs: lib-folder' specifies a directory which does not exist.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.test.hs
new file mode 100644
index 0000000000..25ab96fa0b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Invalid local paths.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/pkg.cabal
new file mode 100644
index 0000000000..709a7df714
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/LocalPaths/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
+  extra-lib-dirs: lib-folder
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.out
new file mode 100644
index 0000000000..a6e3af2aa8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Error: cabal: No cabal file found.
+Please create a package description file <pkgname>.cabal
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.test.hs
new file mode 100644
index 0000000000..044ca815df
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/Missing/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No .cabal file.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/Setup.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/Setup.hs
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.out
new file mode 100644
index 0000000000..abf66d36c8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: The 'build-type' is 'Configure' but there is no 'configure' script. You probably need to run 'autoreconf -i' to generate it.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.test.hs
new file mode 100644
index 0000000000..9f833f51ee
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No `configure` script.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/pkg.cabal
new file mode 100644
index 0000000000..7642bdff1b
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoConfigureFile/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+build-type: Configure
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.out
new file mode 100644
index 0000000000..ebb911f371
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following warnings are likely to affect your build negatively:
+Warning: The 'license-file' field refers to the file 'LICENSE' which does not exist.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.test.hs
new file mode 100644
index 0000000000..68ab3bee60
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Missing license file.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/pkg.cabal
new file mode 100644
index 0000000000..f73d4cde20
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoLicenseFile/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+license-file: LICENSE
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.out
new file mode 100644
index 0000000000..ea51b9fae2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.out
@@ -0,0 +1,4 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The package is missing a Setup.hs or Setup.lhs script.
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.test.hs
new file mode 100644
index 0000000000..4b8afd255a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- No Setup.hs/lhs.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/pkg.cabal
new file mode 100644
index 0000000000..fef24f3d76
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/NoSetupFile/pkg.cabal
@@ -0,0 +1,15 @@
+cabal-version: 3.0
+build-type: Custom
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+custom-setup
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.out
new file mode 100644
index 0000000000..56757831a2
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.out
@@ -0,0 +1,6 @@
+# cabal check
+Warning: The following errors will cause portability problems on other environments:
+Warning: The following file name is too long to store in a portable POSIX format tar archive. The maximum length for the name part (including extension) is 100 ASCII characters. The maximum length for any individual directory component is 155.
+The file in question is:
+  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg
+Warning: Hackage would reject this package.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.test.hs
new file mode 100644
index 0000000000..6455e9e4c6
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/cabal.test.hs
@@ -0,0 +1,7 @@
+import Test.Cabal.Prelude
+
+import System.Directory (createDirectoryIfMissing)
+
+-- Path too long for .tar distribution.
+main = cabalTest $ do
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/pkg.cabal
new file mode 100644
index 0000000000..81c876d716
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/PathTooLong/pkg.cabal
@@ -0,0 +1,13 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+extra-source-files: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.hg
+
+library
+  exposed-modules: Module
+  default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/_darcs/.gitkeep b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/_darcs/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.out b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.out
new file mode 100644
index 0000000000..0f5dbb733a
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.out
@@ -0,0 +1,3 @@
+# cabal check
+Warning: These warnings may cause trouble when distributing the package:
+Warning: When distributing packages it is encouraged to specify source control information in the .cabal file using one or more 'source-repository' sections. See the Cabal user guide for details.
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.test.hs b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.test.hs
new file mode 100644
index 0000000000..0d6ac3d42f
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/cabal.test.hs
@@ -0,0 +1,5 @@
+import Test.Cabal.Prelude
+
+-- Missing VCS info.
+main = cabalTest $
+  fails $ cabal "check" []
diff --git a/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/pkg.cabal b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/pkg.cabal
new file mode 100644
index 0000000000..c1d907fbe3
--- /dev/null
+++ b/cabal-testsuite/PackageTests/Check/PackageFiles/VCSInfo/pkg.cabal
@@ -0,0 +1,12 @@
+cabal-version: 3.0
+name: pkg
+synopsis: synopsis
+description: description
+version: 0
+category: example
+maintainer: none@example.com
+license: GPL-3.0-or-later
+
+library
+  exposed-modules: Foo
+  default-language: Haskell2010
-- 
GitLab