From 73e655aeb5c2b74bcdb4295d89a9438d56a93635 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 10:21:04 +0200 Subject: [PATCH 01/22] (cabal check) Add "No 'name' field." test --- .../Check/ConfiguredPackage/Sanity/NoName/cabal.out | 3 +++ .../ConfiguredPackage/Sanity/NoName/cabal.test.hs | 5 +++++ .../Check/ConfiguredPackage/Sanity/NoName/pkg.cabal | 11 +++++++++++ 3 files changed, 19 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.out new file mode 100644 index 00000000000..ab65466745f --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.out @@ -0,0 +1,3 @@ +# cabal check +Warning: pkg.cabal:0:0: "name" field missing +Error: cabal: parse error diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.test.hs new file mode 100644 index 00000000000..f77c2e52762 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- No package name. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/pkg.cabal new file mode 100644 index 00000000000..5dfbc389647 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoName/pkg.cabal @@ -0,0 +1,11 @@ +cabal-version: 2.2 +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 From e4fb931e05f6c8ee8d5642dc781d4b5cf0a4c4c1 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 10:23:27 +0200 Subject: [PATCH 02/22] (cabal check) Add "No 'version' field." test --- .../ConfiguredPackage/Sanity/NoVersion/cabal.out | 3 +++ .../ConfiguredPackage/Sanity/NoVersion/cabal.test.hs | 5 +++++ .../ConfiguredPackage/Sanity/NoVersion/pkg.cabal | 11 +++++++++++ 3 files changed, 19 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.out new file mode 100644 index 00000000000..2605c4dada8 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.out @@ -0,0 +1,3 @@ +# cabal check +Warning: pkg.cabal:0:0: "version" field missing +Error: cabal: parse error diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.test.hs new file mode 100644 index 00000000000..7f83ead0ebe --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- No version. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/pkg.cabal new file mode 100644 index 00000000000..ac0d432a647 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoVersion/pkg.cabal @@ -0,0 +1,11 @@ +cabal-version: 2.2 +name: pkg +synopsis: synopsis +description: description +category: example +maintainer: none@example.com +license: GPL-3.0-or-later + +library + exposed-modules: Foo + default-language: Haskell2010 From 55beba2e656a0af983446822b1bbbd2509c7fe08 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 10:26:49 +0200 Subject: [PATCH 03/22] (cabal check) Add "No body" test No body: No executables, libraries, tests, or benchmarks found. --- .../Check/ConfiguredPackage/Sanity/NoBody/cabal.out | 6 ++++++ .../Check/ConfiguredPackage/Sanity/NoBody/cabal.test.hs | 5 +++++ .../Check/ConfiguredPackage/Sanity/NoBody/pkg.cabal | 8 ++++++++ 3 files changed, 19 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.out new file mode 100644 index 00000000000..bcf3b0fbc66 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.out @@ -0,0 +1,6 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: No executables, libraries, tests, or benchmarks found. Nothing to do. +Warning: These warnings may cause trouble when distributing the package: +Warning: pkg.cabal:0:0: A package using 'cabal-version: 2.2' must use section syntax. See the Cabal user guide for details. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.test.hs new file mode 100644 index 00000000000..fa4a9ef2372 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- No exec, library, test or benchmark. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/pkg.cabal new file mode 100644 index 00000000000..1bdd2efb111 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoBody/pkg.cabal @@ -0,0 +1,8 @@ +cabal-version: 2.2 +name: pkg +synopsis: synopsis +description: description +version: 0 +category: example +maintainer: none@example.com +license: GPL-3.0-or-later From 464ea041d843d0e3cd75e9cf49967fc64481dae6 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 10:55:18 +0200 Subject: [PATCH 04/22] (cabal check) Add "No duplicate names" test --- .../Sanity/NoDupNames/cabal.out | 3 +++ .../Sanity/NoDupNames/cabal.test.hs | 5 +++++ .../Sanity/NoDupNames/pkg.cabal | 17 +++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.out new file mode 100644 index 00000000000..d1b03551437 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.out @@ -0,0 +1,3 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: Duplicate sections: dup. The name of every library, executable, test suite, and benchmark section in the package must be unique. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.test.hs new file mode 100644 index 00000000000..975ee117919 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- Duplicate section names. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/pkg.cabal new file mode 100644 index 00000000000..58f13667fb3 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoDupNames/pkg.cabal @@ -0,0 +1,17 @@ +cabal-version: 2.2 +name: pkg +synopsis: synopsis +description: description +version: 0 +category: example +maintainer: none@example.com +license: GPL-3.0-or-later + +library dup + exposed-modules: Foo + default-language: Haskell2010 + +test-suite dup + main-is: Main.hs + type: exitcode-stdio-1.0 + default-language: Haskell2010 From b93f3b63a26a1382cad4908a75bbfd2d768a6595 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 11:01:57 +0200 Subject: [PATCH 05/22] (cabal check) Add "OK duplicate exes names" test Executables can have the same name as the external library. --- .../Sanity/OkDupNamesExe/cabal.out | 2 ++ .../Sanity/OkDupNamesExe/cabal.test.hs | 5 +++++ .../Sanity/OkDupNamesExe/pkg.cabal | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.out new file mode 100644 index 00000000000..37aa169b416 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.out @@ -0,0 +1,2 @@ +# cabal check +No errors or warnings could be found in the package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.test.hs new file mode 100644 index 00000000000..cff44832998 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- It is OK for executables to have the same name of the external library. +main = cabalTest $ + cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/pkg.cabal new file mode 100644 index 00000000000..5ed64fee6e1 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/OkDupNamesExe/pkg.cabal @@ -0,0 +1,16 @@ +cabal-version: 2.2 +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 + +executable pkg + main-is: Main.hs + default-language: Haskell2010 From caf2da1e720d225abc3368da9af6d12b003e8763 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 11:19:20 +0200 Subject: [PATCH 06/22] (cabal check) Add "No internal name clash" test Internal libraries cannot have the same name as the pacakge. --- .../Sanity/NoInternalNameClash/cabal.out | 4 ++++ .../Sanity/NoInternalNameClash/cabal.test.hs | 5 +++++ .../Sanity/NoInternalNameClash/pkg.cabal | 12 ++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.out new file mode 100644 index 00000000000..fbeefcb7140 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: Illegal internal library name pkg. Internal libraries cannot have the same name as the package. Maybe you wanted a non-internal library? If so, rewrite the section stanza from 'library: 'pkg' to 'library'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.test.hs new file mode 100644 index 00000000000..66ad00ddbd2 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- Internal library / package name clash. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/pkg.cabal new file mode 100644 index 00000000000..f56cc44a638 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoInternalNameClash/pkg.cabal @@ -0,0 +1,12 @@ +cabal-version: 2.2 +name: pkg +synopsis: synopsis +description: description +version: 0 +category: example +maintainer: none@example.com +license: GPL-3.0-or-later + +library pkg + exposed-modules: Foo + default-language: Haskell2010 From 4a95843032881da17a99d507579d435e67a6c926 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 14:03:36 +0200 Subject: [PATCH 07/22] (cabal check) Add "No exposed modules" test --- .../Sanity/NoExposedModules/cabal.out | 4 ++++ .../Sanity/NoExposedModules/cabal.test.hs | 5 +++++ .../Sanity/NoExposedModules/pkg.cabal | 11 +++++++++++ 3 files changed, 20 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.out new file mode 100644 index 00000000000..62d7b27ba34 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: These warnings may cause trouble when distributing the package: +Warning: library does not expose any modules + diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.test.hs new file mode 100644 index 00000000000..603e9a04ed7 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- No exposed modules. +main = cabalTest $ + cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/pkg.cabal new file mode 100644 index 00000000000..3457c076a3a --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoExposedModules/pkg.cabal @@ -0,0 +1,11 @@ +cabal-version: 2.2 +name: pkg +synopsis: synopsis +description: description +version: 0 +category: example +maintainer: none@example.com +license: GPL-3.0-or-later + +library + default-language: Haskell2010 From 3106faeeefa66aaf3ef215d43984d92bb97b6277 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 14:30:52 +0200 Subject: [PATCH 08/22] (cabal check) Add "Version signatures" test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `signatures` field can be used only with `cabal-version` ≥ 2.0 --- .../Sanity/VersionSignatures/LICENSE | 0 .../Sanity/VersionSignatures/Setup.hs | 0 .../Sanity/VersionSignatures/cabal.out | 3 +++ .../Sanity/VersionSignatures/cabal.test.hs | 5 +++++ .../Sanity/VersionSignatures/pkg.cabal | 17 +++++++++++++++++ 5 files changed, 25 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/LICENSE create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/Setup.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/LICENSE new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/Setup.hs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.out new file mode 100644 index 00000000000..7abcdcbd17a --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.out @@ -0,0 +1,3 @@ +# cabal check +Warning: These warnings may cause trouble when distributing the package: +Warning: pkg.cabal:17:3: The field "signatures" is available only since the Cabal specification version 2.0. This field will be ignored. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.test.hs new file mode 100644 index 00000000000..2ef34c34581 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- `signatures` field used with cabal-version < 2.0 +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/pkg.cabal new file mode 100644 index 00000000000..1babc29c4e0 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/VersionSignatures/pkg.cabal @@ -0,0 +1,17 @@ +cabal-version: 1.24 +build-type: Custom +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: Foo + default-language: Haskell2010 + signatures: Str From 35fcb0eb121407626807f1928f85f35d8f80b977 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 14:42:03 +0200 Subject: [PATCH 09/22] (cabal check) Add "Autogen modules" test All in `autogen-modules` has to be present either in `other-modules` or `exposed-modules`. --- .../Sanity/AutogenExposedOther/cabal.out | 4 ++++ .../Sanity/AutogenExposedOther/cabal.test.hs | 6 ++++++ .../Sanity/AutogenExposedOther/pkg.cabal | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.out new file mode 100644 index 00000000000..6ab0552908f --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: An 'autogen-module' is neither on 'exposed-modules' or 'other-modules'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.test.hs new file mode 100644 index 00000000000..c4993d305a0 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-modules` have to appear in `other-modules` or +-- `exposed-modules`. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/pkg.cabal new file mode 100644 index 00000000000..70a246f1e66 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOther/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 + autogen-modules: AutoGenMod From 395f94dbd3f294a528d8e8c299f4249396c2bd31 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 14:53:09 +0200 Subject: [PATCH 10/22] (cabal check) Add "Autogen include" test All in `autogen-includes` hs to be in either `includes` or `install-includes`. --- .../Sanity/AutogenIncludes/cabal.out | 4 ++++ .../Sanity/AutogenIncludes/cabal.test.hs | 6 ++++++ .../Sanity/AutogenIncludes/pkg.cabal | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.out new file mode 100644 index 00000000000..ddf7b473d98 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: An include in 'autogen-includes' is neither in 'includes' or 'install-includes'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.test.hs new file mode 100644 index 00000000000..4aa8ec52fa3 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-includes` should appear in `install-includes` or +-- `includes`. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/pkg.cabal new file mode 100644 index 00000000000..3883446e39d --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludes/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 + autogen-includes: AutoGenInc From 27384d367e14417ef19a383c603241bab5bc4e8f Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 14:59:53 +0200 Subject: [PATCH 11/22] (cabal check) Add "No `main-is`" test --- .../Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out | 4 ++++ .../ConfiguredPackage/Sanity/NoMainIs/cabal.test.hs | 5 +++++ .../Check/ConfiguredPackage/Sanity/NoMainIs/pkg.cabal | 11 +++++++++++ 3 files changed, 20 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out new file mode 100644 index 00000000000..33e622b6422 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: No 'main-is' field found for executable exe +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.test.hs new file mode 100644 index 00000000000..b7417753322 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- Missing `main-is`. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/pkg.cabal new file mode 100644 index 00000000000..970662c948b --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/NoMainIs/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 + +executable exe + default-language: Haskell2010 From 43f615b4236eee932fd6cd876b055d1ff1ce90db Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 15:03:42 +0200 Subject: [PATCH 12/22] (cabal check) Add "Malformed `main-is`" test `main-is` has to be one of: .hs, .lhs, C/C++/obj-C source file. --- .../Sanity/MalformedMainIs/cabal.out | 4 ++++ .../Sanity/MalformedMainIs/cabal.test.hs | 5 +++++ .../Sanity/MalformedMainIs/pkg.cabal | 12 ++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.out new file mode 100644 index 00000000000..2a5d655986f --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: The 'main-is' field must specify a '.hs' or '.lhs' file (even if it is generated by a preprocessor), or it may specify a C/C++/obj-C source file. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.test.hs new file mode 100644 index 00000000000..7b9587e9dd4 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- `main-is` has to be a `.hs` or `.lhs` file (or C* source file). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/pkg.cabal new file mode 100644 index 00000000000..4dbb9433c55 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIs/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 + +executable exe + main-is: Main + default-language: Haskell2010 From 80b10b859c5ca03d1380ddf9ddf19c87837e1d14 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 15:17:05 +0200 Subject: [PATCH 13/22] (cabal check) Add "`main-is` C obj" test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit You need `cabal-version` ≥ 1.18 to use C/C++/obj-C source files in `main-is`. --- .../Sanity/CMainIsVersion/LICENSE | 0 .../Sanity/CMainIsVersion/Setup.hs | 0 .../Sanity/CMainIsVersion/cabal.out | 4 ++++ .../Sanity/CMainIsVersion/cabal.test.hs | 6 ++++++ .../Sanity/CMainIsVersion/pkg.cabal | 16 ++++++++++++++++ 5 files changed, 26 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/LICENSE create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/Setup.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/LICENSE new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/Setup.hs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.out new file mode 100644 index 00000000000..7601cdfe961 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The following errors will cause portability problems on other environments: +Warning: The package uses a C/C++/obj-C source file for the 'main-is' field. To use this feature you need to specify 'cabal-version: 1.18' or higher. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.test.hs new file mode 100644 index 00000000000..9ea2870a5a7 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- You need `cabal-version` ≥ 1.18 to use C/C++/obj-C source files +-- in `main-is`. +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/pkg.cabal new file mode 100644 index 00000000000..67c7c77e304 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersion/pkg.cabal @@ -0,0 +1,16 @@ +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 + +custom-setup + +executable exe + main-is: main.c + default-language: Haskell2010 From 04d418c12bd390cffa835c9709c1324803b69d84 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 15:32:07 +0200 Subject: [PATCH 14/22] (cabal check) Add "Autogen include" test for exes All in `autogen-includes` hs to be in either `includes` or `install-includes`. --- .../Sanity/AutogenIncludesExe/cabal.out | 4 ++++ .../Sanity/AutogenIncludesExe/cabal.test.hs | 6 ++++++ .../Sanity/AutogenIncludesExe/pkg.cabal | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.out new file mode 100644 index 00000000000..9e561d01843 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: An include in 'autogen-includes' is not in 'includes'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.test.hs new file mode 100644 index 00000000000..16bea7097fa --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-includes` should appear in `install-includes` or +-- `includes` (executable). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/pkg.cabal new file mode 100644 index 00000000000..dee9ecac257 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesExe/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 + +executable exe + main-is: Main.hs + autogen-includes: AutoGenInc + default-language: Haskell2010 From 65b4d2b3254e8f83c1301d1e5b5faeb322de47e6 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 15:35:42 +0200 Subject: [PATCH 15/22] (cabal check) Add "Autogen modules" test for exes All in `autogen-modules` has to be present either in `other-modules` or `exposed-modules`. --- .../Sanity/AutogenExposedOtherExe/cabal.out | 4 ++++ .../Sanity/AutogenExposedOtherExe/cabal.test.hs | 6 ++++++ .../Sanity/AutogenExposedOtherExe/pkg.cabal | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.out new file mode 100644 index 00000000000..da988f6cbfd --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: On executable 'exe' an 'autogen-module' is not on 'other-modules' +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.test.hs new file mode 100644 index 00000000000..5ae464e34c8 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-modules` have to appear in `other-modules` or +-- `exposed-modules` (executables). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/pkg.cabal new file mode 100644 index 00000000000..5f77032a190 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherExe/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 + +executable exe + main-is: Main.hs + default-language: Haskell2010 + autogen-modules: AutoGenMod From 2ce5531d2a2540362af3725bb2542b774a6e06a0 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:35:49 +0200 Subject: [PATCH 16/22] (cabal check) Add "Malformed `main-is`" test (ts) `main-is` has to be one of: .hs, .lhs, C/C++/obj-C source file. (testsuite) --- .../Sanity/MalformedMainIsTestsuite/cabal.out | 4 ++++ .../Sanity/MalformedMainIsTestsuite/cabal.test.hs | 5 +++++ .../Sanity/MalformedMainIsTestsuite/pkg.cabal | 14 ++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.out new file mode 100644 index 00000000000..2a5d655986f --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: The 'main-is' field must specify a '.hs' or '.lhs' file (even if it is generated by a preprocessor), or it may specify a C/C++/obj-C source file. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.test.hs new file mode 100644 index 00000000000..9e146620e9c --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- `main-is` has to be a `.hs` or `.lhs` file (or C* source file) (testsuite). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/pkg.cabal new file mode 100644 index 00000000000..417760a7b0b --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsTestsuite/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 + +test-suite test + Main-is: Main + type: exitcode-stdio-1.0 + default-language: Haskell2010 + From 9e862dc5962db5b1de8e623244bd17fb4c0d1955 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:38:35 +0200 Subject: [PATCH 17/22] (cabal check) Add "`main-is` C obj" test (ts) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit You need `cabal-version` ≥ 1.18 to use C/C++/obj-C source files in `main-is`. (testsuite) --- .../Sanity/CMainIsVersionTestsuite/LICENSE | 0 .../Sanity/CMainIsVersionTestsuite/Setup.hs | 0 .../Sanity/CMainIsVersionTestsuite/cabal.out | 4 ++++ .../CMainIsVersionTestsuite/cabal.test.hs | 6 ++++++ .../Sanity/CMainIsVersionTestsuite/pkg.cabal | 17 +++++++++++++++++ 5 files changed, 27 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/LICENSE create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/Setup.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/LICENSE b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/LICENSE new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/Setup.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/Setup.hs new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.out new file mode 100644 index 00000000000..7601cdfe961 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The following errors will cause portability problems on other environments: +Warning: The package uses a C/C++/obj-C source file for the 'main-is' field. To use this feature you need to specify 'cabal-version: 1.18' or higher. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.test.hs new file mode 100644 index 00000000000..321d9f405c0 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- You need `cabal-version` ≥ 1.18 to use C/C++/obj-C source files +-- in `main-is`. (testsuite) +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/pkg.cabal new file mode 100644 index 00000000000..f630ad2f7ef --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/CMainIsVersionTestsuite/pkg.cabal @@ -0,0 +1,17 @@ +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 + +custom-setup + +test-suite test + main-is: main.c + default-language: Haskell2010 + type: exitcode-stdio-1.0 From db5dfe5f6d68226a872facaf87020630260716e0 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:43:23 +0200 Subject: [PATCH 18/22] (cabal check) Add "Autogen include" test for ts All in `autogen-includes` hs to be in either `includes` or `install-includes` (testsuite). --- .../Sanity/AutogenIncludesTestsuite/cabal.out | 4 ++++ .../Sanity/AutogenIncludesTestsuite/cabal.test.hs | 6 ++++++ .../Sanity/AutogenIncludesTestsuite/pkg.cabal | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.out new file mode 100644 index 00000000000..9e561d01843 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: An include in 'autogen-includes' is not in 'includes'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.test.hs new file mode 100644 index 00000000000..4831b0d10ce --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-includes` should appear in `install-includes` or +-- `includes` (testsuite). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/pkg.cabal new file mode 100644 index 00000000000..77c3dea90da --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesTestsuite/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 + +test-suite test + main-is: Main.hs + autogen-includes: AutoGenInc + default-language: Haskell2010 + type: exitcode-stdio-1.0 From cf21e5c095f0ac3759c24e007968fdb701edd09b Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:46:08 +0200 Subject: [PATCH 19/22] (cabal check) Add "Autogen modules" test for ts All in `autogen-modules` has to be present either in `other-modules` or `exposed-modules` (testsuite). --- .../Sanity/AutogenExposedOtherTestsuite/cabal.out | 4 ++++ .../AutogenExposedOtherTestsuite/cabal.test.hs | 6 ++++++ .../Sanity/AutogenExposedOtherTestsuite/pkg.cabal | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.out new file mode 100644 index 00000000000..4f41f16f1b8 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: On test suite 'test' an 'autogen-module' is not on 'other-modules' +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.test.hs new file mode 100644 index 00000000000..b1376d3e707 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-modules` have to appear in `other-modules` or +-- `exposed-modules` (testsuite). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/pkg.cabal new file mode 100644 index 00000000000..2a3a7b8d9f6 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherTestsuite/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 + +test-suite test + main-is: Main.hs + default-language: Haskell2010 + autogen-modules: AutoGenMod + type: exitcode-stdio-1.0 From 603092e7462889ea13322077a1b2678213991630 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:54:16 +0200 Subject: [PATCH 20/22] (cabal check) Add "Malformed `main-is`" test (bm) `main-is` has to be one of: .hs, .lhs, C/C++/obj-C source file. (benchmark) --- .../Sanity/MalformedMainIsBenchmark/cabal.out | 4 ++++ .../Sanity/MalformedMainIsBenchmark/cabal.test.hs | 5 +++++ .../Sanity/MalformedMainIsBenchmark/pkg.cabal | 14 ++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.out new file mode 100644 index 00000000000..75b0c3501b5 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: The 'main-is' field must specify a '.hs' or '.lhs' file (even if it is generated by a preprocessor). +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.test.hs new file mode 100644 index 00000000000..8a04366f0ff --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +-- `main-is` has to be a `.hs` or `.lhs` file (or C* source file) (benchmark). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/pkg.cabal new file mode 100644 index 00000000000..64eb428d975 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/MalformedMainIsBenchmark/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 + +benchmark benchmark + Main-is: Main + type: exitcode-stdio-1.0 + default-language: Haskell2010 + From 318fb29079a52ffadfb2ee2a5a90faaaa657e4d9 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:55:43 +0200 Subject: [PATCH 21/22] (cabal check) Add "Autogen modules" test for bm All in `autogen-modules` has to be present either in `other-modules` or `exposed-modules` (benchmark). --- .../Sanity/AutogenExposedOtherBenchmark/cabal.out | 4 ++++ .../AutogenExposedOtherBenchmark/cabal.test.hs | 6 ++++++ .../Sanity/AutogenExposedOtherBenchmark/pkg.cabal | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.out new file mode 100644 index 00000000000..b68d84b92ca --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: On benchmark 'benchmark' an 'autogen-module' is not on 'other-modules' +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.test.hs new file mode 100644 index 00000000000..f5bae2b7719 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-modules` have to appear in `other-modules` or +-- `exposed-modules` (benchmark). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/pkg.cabal new file mode 100644 index 00000000000..c0974d47744 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenExposedOtherBenchmark/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 + +benchmark benchmark + main-is: Main.hs + default-language: Haskell2010 + autogen-modules: AutoGenMod + type: exitcode-stdio-1.0 From 156fb34c6209b4e309997d595d2768b92d8e5823 Mon Sep 17 00:00:00 2001 From: Francesco Ariis Date: Wed, 22 Jun 2022 16:59:40 +0200 Subject: [PATCH 22/22] (cabal check) Add "Autogen include" test for bm All in `autogen-includes` hs to be in either `includes` or `install-includes` (benchmark). --- .../Sanity/AutogenIncludesBenchmark/cabal.out | 4 ++++ .../Sanity/AutogenIncludesBenchmark/cabal.test.hs | 6 ++++++ .../Sanity/AutogenIncludesBenchmark/pkg.cabal | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.out create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.out new file mode 100644 index 00000000000..9e561d01843 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.out @@ -0,0 +1,4 @@ +# cabal check +Warning: The package will not build sanely due to these errors: +Warning: An include in 'autogen-includes' is not in 'includes'. +Warning: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.test.hs b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.test.hs new file mode 100644 index 00000000000..b77926c7b20 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- All `autogen-includes` should appear in `install-includes` or +-- `includes` (benchmark). +main = cabalTest $ + fails $ cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/pkg.cabal new file mode 100644 index 00000000000..41994a39eaf --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Sanity/AutogenIncludesBenchmark/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 + +benchmark benchmark + main-is: Main.hs + autogen-includes: AutoGenInc + default-language: Haskell2010 + type: exitcode-stdio-1.0