packages feed

explainable-predicates-0.1.2.4: explainable-predicates.cabal

cabal-version:      2.4
name:               explainable-predicates
version:            0.1.2.4
synopsis:           Predicates that can explain themselves.
description:        Explainable predicates are essentially functions from types
                    to 'Bool' which can additionally describe themselves and
                    explain why an argument does or doesn't match.  They are
                    intended to be used during unit tests to provide better
                    error messages when tests fail.  For example, if a
                    collection is missing an element, an explainable predicate
                    can tell you which element is missing.
category:           Testing
homepage:           https://github.com/cdsmith/explainable-predicates
bug-reports:        https://github.com/cdsmith/explainable-predicates/issues
license:            BSD-3-Clause
license-file:       LICENSE

author:             Chris Smith <cdsmith@gmail.com>
maintainer:         Chris Smith <cdsmith@gmail.com>

extra-source-files: CHANGELOG.md, README.md

tested-with:        GHC == 8.6.5 || == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.8 || == 9.4.5 || == 9.6.2 || == 9.8.1

source-repository head
    type:     git
    location: git://github.com/cdsmith/explainable-predicates.git

flag regex
    description:       Enable regular expression matching
    manual:            True
    default:           True

flag containers
    description:       Enable container matching, which depends on mono-traversable
    manual:            True
    default:           True

flag quickcheck
    description:       Enable QuickCheck integration
    manual:            True
    default:           True

flag hunit
    description:       Enable HUnit/Hspec integration
    manual:            True
    default:           True

flag dev
    description:       Developer build
    manual:            True
    default:           False

library
    exposed-modules:     Test.Predicates,
                         Test.Predicates.Internal.FlowMatcher
    other-modules:       Test.Predicates.Internal.Util
    build-depends:       array >= 0.5.2 && < 0.6,
                         base >=4.12.0 && < 4.20,
                         syb >= 0.7.2 && < 0.8,
                         template-haskell >= 2.13.0 && < 2.22,
    hs-source-dirs:      src
    default-language:    Haskell2010
    ghc-options:         -Wall -Wcompat -Wincomplete-uni-patterns

    if flag(regex)
        build-depends:   regex-tdfa >= 1.3.1 && < 1.4,
        cpp-options:     -DREGEX

    if flag(containers)
        build-depends:   mono-traversable >= 1.0.15 && < 1.1,
        cpp-options:     -DCONTAINERS

    if flag(quickcheck)
        build-depends:   QuickCheck >= 2.8 && < 2.15,
        exposed-modules: Test.Predicates.QuickCheck

    if flag(hunit)
        build-depends:   HUnit >= 1.3.0 && < 1.7,
        exposed-modules: Test.Predicates.HUnit

    if flag(dev)
        ghc-options:     -Werror

test-suite tests
    type:                exitcode-stdio-1.0
    main-is:             Main.hs
    build-depends:       base,
                         doctest-exitcode-stdio,
                         doctest-lib,
                         explainable-predicates,
                         hspec,
    hs-source-dirs:      test
    default-language:    Haskell2010
    ghc-options:         -threaded -Wall -Wcompat -Wincomplete-uni-patterns

    if flag(regex)
        cpp-options:     -DREGEX

    if flag(containers)
        cpp-options:     -DCONTAINERS

    if flag(regex) && flag(containers)
        other-modules:   DocTests.All,
                         DocTests.Test.Predicates,
                         DocTests.Test.Predicates.Internal.FlowMatcher
        cpp-options:     -DDOCTESTS

    if flag(dev)
        ghc-options:     -Werror