Commit 867caaea authored by Hans-Peter Deifel's avatar Hans-Peter Deifel 🐢
Browse files

Switch to custom Setup.hs file for cabal-doctests

doctest doesn't respect the `default-extensions` field from the cabal
file, so we previously had to put every extension at the start of each
and every file so that doctests would compile.

Using the `cabal-doctest` package, we can pass the right options to
`doctest` at build time and move extension declarations to the cabal
file.
parent 6b087239
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
{-# LANGUAGE CPP #-}

module Main (main) where

#ifndef MIN_VERSION_cabal_doctest
#define MIN_VERSION_cabal_doctest(x,y,z) 0
#endif

#if MIN_VERSION_cabal_doctest(1,0,0)

import Distribution.Extra.Doctest ( defaultMainWithDoctests )
main :: IO ()
main = defaultMainWithDoctests "doctests"

#else

#ifdef MIN_VERSION_Cabal
-- If the macro is defined, we have new cabal-install,
-- but for some reason we don't have cabal-doctest in package-db
--
-- Probably we are running cabal sdist, when otherwise using new-build
-- workflow
#warning You are configuring this package without cabal-doctest installed. \
         The doctests test-suite will not work as a result. \
         To fix this, install cabal-doctest before configuring.
#endif

import Distribution.Simple

main :: IO ()
main = defaultMain

#endif
+6 −2
Original line number Diff line number Diff line
@@ -11,8 +11,12 @@ author: Hans-Peter Deifel
maintainer:          hans-peter.deifel@fau.de
-- copyright:
-- category:
build-type:          Simple
cabal-version:       >=1.10
build-type:          Custom
cabal-version:       >=1.24
                     
custom-setup
  setup-depends:
    base, Cabal, cabal-doctest >= 1.0.2 && <1.1

library
  hs-source-dirs:      src
+6 −2
Original line number Diff line number Diff line
{-# LANGUAGE GADTs #-}
module Main where

import Test.DocTest
import Build_doctests (flags, pkgs, module_sources)
import Data.Foldable (traverse_)
import Test.DocTest (doctest)

main = doctest ["src/"]
main :: IO ()
main = doctest (flags ++ pkgs ++ module_sources)