Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ghc-cabal-doctest for openSUSE:Factory checked in at 2024-07-22 17:16:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-cabal-doctest (Old) and /work/SRC/openSUSE:Factory/.ghc-cabal-doctest.new.17339 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cabal-doctest" Mon Jul 22 17:16:07 2024 rev:19 rq:1188625 version:1.0.10 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-cabal-doctest/ghc-cabal-doctest.changes 2023-04-04 21:19:01.380655841 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-cabal-doctest.new.17339/ghc-cabal-doctest.changes 2024-07-22 17:16:42.286174129 +0200 @@ -1,0 +2,8 @@ +Wed Jun 26 21:59:54 UTC 2024 - Peter Simons <[email protected]> + +- Update cabal-doctest to version 1.0.10. + Upstream has renamed and modified the change log file(s) in this + release. Unfortunately, the automatic updater cannot reliable + determine relevant entries for this release. + +------------------------------------------------------------------- Old: ---- cabal-doctest-1.0.9.tar.gz cabal-doctest.cabal New: ---- cabal-doctest-1.0.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-cabal-doctest.spec ++++++ --- /var/tmp/diff_new_pack.VSApBt/_old 2024-07-22 17:16:44.086246557 +0200 +++ /var/tmp/diff_new_pack.VSApBt/_new 2024-07-22 17:16:44.090246719 +0200 @@ -1,7 +1,7 @@ # # spec file for package ghc-cabal-doctest # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,13 +19,12 @@ %global pkg_name cabal-doctest %global pkgver %{pkg_name}-%{version} Name: ghc-%{pkg_name} -Version: 1.0.9 +Version: 1.0.10 Release: 0 Summary: A Setup.hs helper for running doctests License: BSD-3-Clause URL: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz -Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/3.cabal#/%{pkg_name}.cabal BuildRequires: ghc-Cabal-devel BuildRequires: ghc-Cabal-prof BuildRequires: ghc-base-devel @@ -70,7 +69,6 @@ %prep %autosetup -n %{pkg_name}-%{version} -cp -p %{SOURCE1} %{pkg_name}.cabal %build %ghc_lib_build @@ -88,7 +86,7 @@ %license LICENSE %files devel -f %{name}-devel.files -%doc ChangeLog.md README.md +%doc README.md changelog.md %files -n ghc-%{pkg_name}-doc -f ghc-%{pkg_name}-doc.files %license LICENSE ++++++ cabal-doctest-1.0.9.tar.gz -> cabal-doctest-1.0.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-doctest-1.0.9/ChangeLog.md new/cabal-doctest-1.0.10/ChangeLog.md --- old/cabal-doctest-1.0.9/ChangeLog.md 2001-09-09 03:46:40.000000000 +0200 +++ new/cabal-doctest-1.0.10/ChangeLog.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,50 +0,0 @@ -# 1.0.9 -- 2021-11-07 - -* Support `GHC-9.2`, `base-4.16`, and `Cabal-3.6` (thanks Alistair Burrowes). - -# 1.0.8 -- 2019-10-02 - -* Pass `-package-env=-` when compiler supports it. -* Amend examples to `unsetEnv "GHC_ENVIRONMENT"`. - -# 1.0.7 -- 2019-08-26 - -* Make `Distribution.Extra.Doctest` `-Wall`-clean. -* Support `GHC-8.8`, `base-4.13`, and `Cabal-3.0`. - -# 1.0.6 -- 2018-01-28 - -* Hook `haddock` build too. Fixes issue when `haddock` fails, as - `Build_doctests` isn't generated. - -# 1.0.5 -- 2018-01-26 - -* Add a hack so `Build_doctests` module is automatically added to - to `other-modules` and `autogen-modules` when compiled with Cabal-2.0. - Thanks to that, we don't get warnings because of `-Wmissing-home-modules`. - -# 1.0.4 -- 2017-12-05 - -* Add support for doctests in executables and (with `Cabal-2.0` or later) - internal libraries. Refer to the `README` for more details. - -# 1.0.3 -- 2017-11-02 - -* Add an explicit `Prelude` import to `Build_doctests`. - -# 1.0.2 -- 2017-05-16 - -* Add `defaultMainAutoconfWithDoctests` and `addDoctestsUserHook`. -* Add support for `.hsc` and other preprocessed files - ([#8](https://github.com/phadej/cabal-doctest/issues/8)). -* Add support for `x-doctest-source-dirs` and `x-doctest-modules`. - -# 1.0.1 -- 2017-05-05 - -* Add support for `x-doctest-options` cabal-file field. -* Proper support for `GHC-8.2.1` and `Cabal-2.0.0.0`. -* Add support to `default-extensions` in library. - -# 1 -- 2017-01-31 - -* First version. Released on an unsuspecting world. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-doctest-1.0.9/README.md new/cabal-doctest-1.0.10/README.md --- old/cabal-doctest-1.0.9/README.md 2001-09-09 03:46:40.000000000 +0200 +++ new/cabal-doctest-1.0.10/README.md 2001-09-09 03:46:40.000000000 +0200 @@ -1,71 +1,73 @@ cabal-doctest ============= -[](https://hackage.haskell.org/package/cabal-doctest) [](https://github.com/haskellari/cabal-doctest/actions/workflows/haskell-ci.yml) +[](https://hackage.haskell.org/package/cabal-doctest) [](https://github.com/ulidtko/cabal-doctest/actions/workflows/haskell-ci.yml) -A `Setup.hs` helper for running `doctests`. +A `Setup.hs` helper for running [doctests][]. + +[doctests]: https://github.com/sol/doctest#readme Simple example -------------- -For the typical use case, namely a `.cabal` file with a single library containing -doctests, adapting the [simple example](https://github.com/phadej/cabal-doctest/tree/master/simple-example) -will be sufficient. +[simple example]: https://github.com/ulidtko/cabal-doctest/tree/master/simple-example +[simple-example.cabal]: https://github.com/ulidtko/cabal-doctest/tree/master/simple-example/simple-example.cabal -To use this library in your `Setup.hs`, you should specify a `custom-setup` -section in your `.cabal` file. For example: +Follow [simple example][] for the common case of a single-library `.cabal` package with doctests. -``` -custom-setup - setup-depends: - base >= 4 && <5, - Cabal, - cabal-doctest >= 1 && <1.1 -``` +To recap the example's code: -_Note:_ The `Cabal` dependency is only needed for `cabal-install < 2.4` -(see issue [haskell/cabal#4288](https://github.com/haskell/cabal/issues/4288)). +1. specify `build-type: Custom` in your `.cabal` file; -You'll also need to specify `build-type: Custom` at the top of the `.cabal` -file. Now put this into your `Setup.hs` file: +2. declare dependencies of `Setup.hs`: -```haskell -module Main where + ``` + custom-setup + setup-depends: + base >= 4 && <5, + cabal-doctest >= 1 && <1.1 + ``` -import Distribution.Extra.Doctest (defaultMainWithDoctests) + See [Notes](#notes) below for a caveat with cabal-install < 2.4. -main :: IO () -main = defaultMainWithDoctests "doctests" -``` +3. Populate `Setup.hs` like so: -When you build your project, this `Setup` will generate a `Build_doctests` -module. To use it in a testsuite, simply do this: + ```haskell + module Main where -```haskell -module Main where + import Distribution.Extra.Doctest (defaultMainWithDoctests) -import Build_doctests (flags, pkgs, module_sources) -import Data.Foldable (traverse_) -import System.Environment.Compat (unsetEnv) -import Test.DocTest (doctest) + main :: IO () + main = defaultMainWithDoctests "doctests" + ``` -main :: IO () -main = do - traverse_ putStrLn args -- optionally print arguments - unsetEnv "GHC_ENVIRONMENT" -- see 'Notes'; you may not need this - doctest args - where - args = flags ++ pkgs ++ module_sources -``` + Assuming your test-suite is called `doctests`, this `Setup` will generate a `Build_doctests` + module during package build. If your test-suite goes by name `foo`, + `defaultMainWithDoctests "foo"` creates a `Build_foo` module. -(The `System.Environment.Compat` module is from the `base-compat` -package. That's already in the transitive closure of `doctest`'s -dependencies. `System.Environment.unsetEnv` was added with GHC 7.8 so, -if you don't need to support versions of GHC older than 7.8, you can -use `System.Environment` from `base` instead.) +4. Use the generated module in a testsuite, simply like so: -Example with multiple .cabal components ---------------------------------------- + ```haskell + module Main where + + import Build_doctests (flags, pkgs, module_sources) + import Data.Foldable (traverse_) + import System.Environment (unsetEnv) + import Test.DocTest (doctest) + + main :: IO () + main = do + traverse_ putStrLn args -- optionally print arguments + unsetEnv "GHC_ENVIRONMENT" -- see 'Notes'; you may not need this + doctest args + where + args = flags ++ pkgs ++ module_sources + ``` + +Ultimately, `cabal test` or `stack test` should run the doctests of your package. + +Example with multiple cabal components +-------------------------------------- `cabal-doctest` also supports more exotic use cases where a `.cabal` file contains more components with doctests than just the main library, including: @@ -79,7 +81,7 @@ copies of the `flags`, `pkgs`, and `module_sources` values for each additional named component. -Simplest approach is to use `x-doctest-components` field, for example: +The simplest approach is to use `x-doctest-components` field in `.cabal`: ``` x-doctest-components: lib lib:internal exe:example ``` @@ -91,7 +93,7 @@ import Build_doctests (Component (..), components) import Data.Foldable (for_) -import System.Environment.Compat (unsetEnv) +import System.Environment (unsetEnv) import Test.DocTest (doctest) main :: IO () @@ -104,12 +106,10 @@ doctest args ``` -There is also a more explicit approach: if you have an executable named `foo`, -then separate values named `flags_exe_foo`, `pkgs_exe_foo`, and `module_sources_exe_foo` will -be generated in `Build_doctests`. If the name has hyphens in it -(e.g., `my-exe`), then `cabal-doctest` will convert those hyphens to -underscores (e.g., you'd get `flags_my_exe`, `pkgs_my_exe`, and -`module_sources_my_exe`). +There is also a more explicit approach: if you have an executable named `foo`, then +`Build_doctest` will contain `flags_exe_foo`, `pkgs_exe_foo`, and `module_sources_exe_foo`. +If the name has hyphens in it (e.g., `my-exe`), `cabal-doctest` will convert them to +underscores (e.g., you'd get `flags_my_exe`, `pkgs_my_exe`, `module_sources_my_exe`). Internal library `bar` values will have a `_lib_bar` suffix. An example testsuite driver for this use case might look like this: @@ -121,7 +121,7 @@ (flags, pkgs, module_sources, flags_exe_my_exe, pkgs_exe_my_exe, module_sources_exe_my_exe) import Data.Foldable (traverse_) -import System.Environment.Compat (unsetEnv) +import System.Environment (unsetEnv) import Test.DocTest main :: IO () @@ -139,14 +139,15 @@ exeArgs = flags_exe_my_exe ++ pkgs_exe_my_exe ++ module_sources_exe_my_exe ``` -See -[this example](https://github.com/phadej/cabal-doctest/tree/master/multiple-components-example) -for more details. +See the [multiple-components-example][]. + +[multiple-components-example]: https://github.com/ulidtko/cabal-doctest/tree/master/multiple-components-example + Additional configuration ------------------------ -The `cabal-doctest` based `Setup.hs` supports few extensions fields +The `cabal-doctest` based `Setup.hs` supports a few extensions fields in `pkg.cabal` files to customise the `doctest` runner behaviour, without customising the default `doctest.hs`. @@ -156,28 +157,27 @@ x-doctest-options: -fdiagnostics-color=never x-doctest-source-dirs: test x-doctest-modules: Servant.Utils.LinksSpec - - ... ``` * `x-doctest-options` Additional arguments passed into `doctest` command. * `x-doctest-modules` Additional modules to `doctest`. May be useful if you - have `doctest` in test or executables (i.e not default library complonent). + have `doctest` in test or executables (i.e not default library component). * `x-doctest-src-dirs` Additional source directories to look for the modules. Notes ----- -* Recent versions of `Cabal` (for instance, 2.0) can choose to build a +* If support for cabal-install < 2.4 is required, you'll have to + add `Cabal` to `setup-depends`; see issue [haskell/cabal#4288][]. + +* Some versions of `Cabal` (for instance, 2.0) can choose to build a package's `doctest` test suite _before_ the library. However, in order for `cabal-doctest` to work correctly, the library _must_ be built first, as `doctest` relies on the presence of generated files that are only created - when the library is built. See - [#19](https://github.com/phadej/cabal-doctest/issues/19). + when the library is built. See [#19][]. A hacky workaround for this problem is to depend on the library itself in a - `doctests` test suite. See - [the simple example's .cabal file](https://github.com/phadej/cabal-doctest/blob/master/simple-example/simple-example.cabal) + `doctests` test suite. See [simple-example.cabal][] for a demonstration. (This assumes that the test suite has the ability to read build artifacts from the library, a separate build component. In practice, this assumption holds, which is why this library works at all.) @@ -187,8 +187,13 @@ manually. * `stack` respects `custom-setup` starting from version 1.3.3. Before that - you have to use `explicit-setup-deps` setting in your `stack.yaml`. - ([stack/GH-2094](https://github.com/commercialhaskell/stack/issues/2094)) + you have to use `explicit-setup-deps` setting in your `stack.yaml`; + [stack#2094][]. + +* With base < 4.7 (GHC < 7.8, pre-2014), `System.Environment.unsetEnv` function + will need to be imported from `base-compat` library. It is already in transitive + dependencies of `doctest`. Simply declare the dependency upon `base-compat`, and + then `import System.Environment.Compat (unsetEnv)` if you need that old GHC. * You can use `x-doctest-options` field in `test-suite doctests` to pass additional flags to the `doctest`. @@ -211,22 +216,22 @@ to the `doctest` command. This way, `QuickCheck` and `template-haskell` are available to `doctest`, otherwise you'll get errors like: -``` + ``` Variable not in scope: mkName :: [Char] -> template-haskell-2.11.1.0:Language.Haskell.TH.Syntax.Name -``` + ``` -or + or -``` + ``` Variable not in scope: polyQuickCheck :: Language.Haskell.TH.Syntax.Name -> Language.Haskell.TH.Lib.ExpQ -``` + ``` -* From version 2, Stack sets the `GHC_ENVRIONMENT` variable, and GHC +* From version 2, Stack sets the `GHC_ENVIRONMENT` variable, and GHC (as invoked by `doctest`) will pick that up. This is undesirable: `cabal-doctest` passes all the necessary information on the command line already, and can lead to ambiguous module errors as GHC will @@ -240,9 +245,49 @@ failures, try manually unsetting `GHC_ENVIRONMENT` before invoking `doctest`. + * If you are on Nix. `doctest` will not pick up your version of GHC if you + don't point it towards it, and therefore will result in "cannot satisfy -package-id" errors. + You will need to set `NIX_GHC` and `NIX_GHC_LIBDIR` within your environment in order + for doctest to pick up your GHC. Put the following in `shell.nix` and run `nix-shell`. + + ```nix + # shell.nix + { pkgs ? import <nixpkgs> {} }: + let + myHaskell = (pkgs.haskellPackages.ghcWithHoogle (p: with p; [ + # Put your dependencies here + containers + hslogger + ])); + in + pkgs.mkShell { + name = "myPackage"; + + # These environment variables are important. Without these, + # doctest doesn't pick up nix's version of ghc, and will fail + # claiming it can't find your dependencies + shellHook = '' + export NIX_GHC=${myHaskell}/bin/ghc + export NIX_GHC_LIBDIR=${myHaskell}/lib/ghc-8.10.7 + ''; + buildInputs = with pkgs; [ + myHaskell + ]; + } + ``` + +[#19]: https://github.com/ulidtko/cabal-doctest/issues/19 +[haskell/cabal#4288]: https://github.com/haskell/cabal/issues/4288 +[stack#2094]: https://github.com/commercialhaskell/stack/issues/2094 + Copyright --------- Copyright 2017 Oleg Grenrus. +With contributions from: + * Ryan Scott + * Andreas Abel + * Max Ulidtko + Available under the BSD 3-clause license. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-doctest-1.0.9/cabal-doctest.cabal new/cabal-doctest-1.0.10/cabal-doctest.cabal --- old/cabal-doctest-1.0.9/cabal-doctest.cabal 2001-09-09 03:46:40.000000000 +0200 +++ new/cabal-doctest-1.0.10/cabal-doctest.cabal 2001-09-09 03:46:40.000000000 +0200 @@ -1,58 +1,62 @@ name: cabal-doctest -version: 1.0.9 +version: 1.0.10 +-- x-revision: 0 synopsis: A Setup.hs helper for running doctests description: As of now (end of 2021), there isn't @cabal doctest@ command. Yet, to properly work, @doctest@ needs plenty of configuration. This library provides the common bits for writing a custom @Setup.hs@. -homepage: https://github.com/haskellari/cabal-doctest +homepage: https://github.com/ulidtko/cabal-doctest license: BSD3 license-file: LICENSE author: Oleg Grenrus <[email protected]> -maintainer: Andreas Abel -copyright: (c) 2017 Oleg Grenrus +maintainer: Max Ulidtko <[email protected]> +copyright: (c) 2017-2020 Oleg Grenrus, 2020- package maintainers category: Distribution build-type: Simple cabal-version: >=1.10 extra-source-files: - ChangeLog.md + changelog.md README.md tested-with: - GHC == 7.0.4 - GHC == 7.2.2 - GHC == 7.4.2 - GHC == 7.6.3 - GHC == 7.8.4 - GHC == 7.10.3 - GHC == 8.0.2 - GHC == 8.2.2 - GHC == 8.4.4 - GHC == 8.6.5 - GHC == 8.8.4 + GHC == 9.10.1 + GHC == 9.8.2 + GHC == 9.6.5 + GHC == 9.4.8 + GHC == 9.2.8 + GHC == 9.0.2 GHC == 8.10.7 - GHC == 9.0.1 - GHC == 9.2.1 + GHC == 8.8.4 + GHC == 8.6.5 + GHC == 8.4.4 + GHC == 8.2.2 + GHC == 8.0.2 + -- 2023-10-14: Dropped CI support for GHC 7.x source-repository head type: git - location: https://github.com/haskellari/cabal-doctest + location: https://github.com/ulidtko/cabal-doctest library exposed-modules: Distribution.Extra.Doctest other-modules: other-extensions: build-depends: - base >=4.3 && <4.17 - , Cabal >=1.10 && <3.8 - , directory - , filepath + -- NOTE: contrary to PVP, some upper-bounds are intentionally set to major-major. + -- This is to increase signal-to-noise ratio of CI failures. "Too tight bounds" + -- is an extremely boring (and practically guaranteed, repeatedly) failure mode. + -- OTOH, genuine build failures due to breaking changes in dependencies are: + -- 1) unlikely to occur, as this package is so small, moreso regularly; + -- 2) best caught in CI pipelines that don't induce alert fatigue. + -- In any case, revisions may set tighter bounds afterwards, if exceptional + -- circumstances would warrant that. + base >=4.9 && <5 + , Cabal >=1.10 && <3.14 + , directory >=1.3 && <2 + , filepath >=1.4 && <2 hs-source-dirs: src default-language: Haskell2010 ghc-options: -Wall - - if !impl(ghc >=7.2) - -- Work around a pattern-match coverage checking bug in GHC 7.0 - ghc-options: -fno-warn-overlapping-patterns diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-doctest-1.0.9/changelog.md new/cabal-doctest-1.0.10/changelog.md --- old/cabal-doctest-1.0.9/changelog.md 1970-01-01 01:00:00.000000000 +0100 +++ new/cabal-doctest-1.0.10/changelog.md 2001-09-09 03:46:40.000000000 +0200 @@ -0,0 +1,58 @@ +# 1.0.10 -- 2024-06-26 + +* Maintainership hand-over. See [cabal-doctest#79][]. +* Support GHC 9.4, 9.6, 9.8, 9.10. +* Drop support & CI for GHC < 8.0. + +[cabal-doctest#79]: https://github.com/ulidtko/cabal-doctest/issues/79 + +# 1.0.9 -- 2021-11-07 + +* Support `GHC-9.2`, `base-4.16`, and `Cabal-3.6` (thanks Alistair Burrowes). + +# 1.0.8 -- 2019-10-02 + +* Pass `-package-env=-` when compiler supports it. +* Amend examples to `unsetEnv "GHC_ENVIRONMENT"`. + +# 1.0.7 -- 2019-08-26 + +* Make `Distribution.Extra.Doctest` `-Wall`-clean. +* Support `GHC-8.8`, `base-4.13`, and `Cabal-3.0`. + +# 1.0.6 -- 2018-01-28 + +* Hook `haddock` build too. Fixes issue when `haddock` fails, as + `Build_doctests` isn't generated. + +# 1.0.5 -- 2018-01-26 + +* Add a hack so `Build_doctests` module is automatically added to + to `other-modules` and `autogen-modules` when compiled with Cabal-2.0. + Thanks to that, we don't get warnings because of `-Wmissing-home-modules`. + +# 1.0.4 -- 2017-12-05 + +* Add support for doctests in executables and (with `Cabal-2.0` or later) + internal libraries. Refer to the `README` for more details. + +# 1.0.3 -- 2017-11-02 + +* Add an explicit `Prelude` import to `Build_doctests`. + +# 1.0.2 -- 2017-05-16 + +* Add `defaultMainAutoconfWithDoctests` and `addDoctestsUserHook`. +* Add support for `.hsc` and other preprocessed files + ([#8](https://github.com/phadej/cabal-doctest/issues/8)). +* Add support for `x-doctest-source-dirs` and `x-doctest-modules`. + +# 1.0.1 -- 2017-05-05 + +* Add support for `x-doctest-options` cabal-file field. +* Proper support for `GHC-8.2.1` and `Cabal-2.0.0.0`. +* Add support to `default-extensions` in library. + +# 1 -- 2017-01-31 + +* First version. Released on an unsuspecting world. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cabal-doctest-1.0.9/src/Distribution/Extra/Doctest.hs new/cabal-doctest-1.0.10/src/Distribution/Extra/Doctest.hs --- old/cabal-doctest-1.0.9/src/Distribution/Extra/Doctest.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/cabal-doctest-1.0.10/src/Distribution/Extra/Doctest.hs 2001-09-09 03:46:40.000000000 +0200 @@ -1,25 +1,29 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} --- | The provided 'generateBuildModule' generates 'Build_doctests' module. --- That module exports enough configuration, so your doctests could be simply +-- | See cabal-doctest README for full-fledged recipes & caveats. +-- +-- The provided 'generateBuildModule' generates a @Build_{suffix}@ module, with +-- caller-chosen @suffix@ that is usually @"doctests"@ -- module @Build_doctests@. +-- +-- That module exports just enough compiler flags, so that doctest could be simply -- -- @ -- module Main where -- -- import Build_doctests (flags, pkgs, module_sources) --- import Data.Foldable (traverse_) -- import Test.Doctest (doctest) -- -- main :: IO () --- main = do --- traverse_ putStrLn args -- optionally print arguments --- doctest args +-- main = doctest args -- where -- args = flags ++ pkgs ++ module_sources -- @ -- --- To use this library in the @Setup.hs@, you should specify a @custom-setup@ --- section in the cabal file, for example: +-- As this module-generation is done at build-time, 'generateBuildModule' must be +-- invoked from @Setup.hs@, which also necessarily means @build-type: Custom@. +-- +-- @Setup.hs@ can use libraries, but they must be declared as dependencies in the +-- @custom-setup@ stanza of the user's cabal file. To use @cabal-doctest@ then: -- -- @ -- custom-setup @@ -28,8 +32,8 @@ -- cabal-doctest >= 1 && <1.1 -- @ -- --- /Note:/ you don't need to depend on @Cabal@ if you use only --- 'defaultMainWithDoctests' in the @Setup.hs@. +-- Finally, simple shortcuts are provided to avoid an explicit dependency on @Cabal@ +-- from @setup-depends@: 'defaultMainWithDoctests' and 'defaultMainAutoconfWithDoctests'. -- module Distribution.Extra.Doctest ( defaultMainWithDoctests, @@ -125,7 +129,7 @@ (libraryNameString) #endif -#if MIN_VERSION_Cabal(3,6,0) +#if MIN_VERSION_Cabal(3,5,0) import Distribution.Utils.Path (getSymbolicPath) #endif @@ -160,7 +164,7 @@ -- Mains ------------------------------------------------------------------------------- --- | A default main with doctests: +-- | A default @Setup.hs@ main with doctests: -- -- @ -- import Distribution.Extra.Doctest @@ -174,7 +178,7 @@ -> IO () defaultMainWithDoctests = defaultMainWithHooks . doctestsUserHooks --- | Like 'defaultMainWithDoctests', for 'build-type: Configure' packages. +-- | Like 'defaultMainWithDoctests', but for packages with @build-type: Configure@. -- -- @since 1.0.2 defaultMainAutoconfWithDoctests @@ -183,14 +187,16 @@ defaultMainAutoconfWithDoctests n = defaultMainWithHooks (addDoctestsUserHook n autoconfUserHooks) --- | 'simpleUserHooks' with 'generateBuildModule' prepended to the 'buildHook'. +-- | 'simpleUserHooks' with 'generateBuildModule' already wired-in. doctestsUserHooks :: String -- ^ doctests test-suite name -> UserHooks doctestsUserHooks testsuiteName = addDoctestsUserHook testsuiteName simpleUserHooks --- | +-- | Compose 'generateBuildModule' into Cabal's 'UserHooks' (prepending the action). +-- +-- This is exported for advanced custom Setup-s. -- -- @since 1.0.2 addDoctestsUserHook :: String -> UserHooks -> UserHooks @@ -198,9 +204,9 @@ { buildHook = \pkg lbi hooks flags -> do generateBuildModule testsuiteName flags pkg lbi buildHook uh pkg lbi hooks flags - -- We use confHook to add "Build_Doctests" to otherModules and autogenModules. + -- We use confHook to add "Build_doctests" to otherModules and autogenModules. -- - -- We cannot use HookedBuildInfo as it let's alter only the library and executables. + -- We cannot use HookedBuildInfo as it lets alter only the library and executables. , confHook = \(gpd, hbi) flags -> confHook uh (amendGPD testsuiteName gpd, hbi) flags , haddockHook = \pkg lbi hooks flags -> do @@ -331,7 +337,7 @@ <- mapM makeAbsolute $ compAutogenDir -- autogenerated files : (distPref ++ "/build") -- preprocessed files (.hsc -> .hs); "build" is hardcoded in Cabal. -#if MIN_VERSION_Cabal(3,6,0) +#if MIN_VERSION_Cabal(3,5,0) : map getSymbolicPath (hsSourceDirs compBI) #else : hsSourceDirs compBI
