mirror of
https://github.com/composewell/streamly.git
synced 2024-11-10 02:44:29 +03:00
609 lines
17 KiB
Plaintext
609 lines
17 KiB
Plaintext
cabal-version: 2.2
|
|
name: streamly-tests
|
|
version: 0.0.0
|
|
synopsis: Tests for streamly
|
|
description: See streamly-benchmarks for the reason why we use a separate
|
|
package for tests.
|
|
|
|
flag fusion-plugin
|
|
description: Use fusion plugin for benchmarks and executables
|
|
manual: True
|
|
default: False
|
|
|
|
flag limit-build-mem
|
|
description: Limits memory when building the executables
|
|
manual: True
|
|
default: False
|
|
|
|
flag use-large-mem
|
|
description: Include tests that require large amount of memory
|
|
manual: True
|
|
default: False
|
|
|
|
flag include-flaky-tests
|
|
description: Include tests that are unpredictable
|
|
manual: True
|
|
default: False
|
|
|
|
flag dev
|
|
description: Development build
|
|
manual: True
|
|
default: False
|
|
|
|
flag has-llvm
|
|
description: Use llvm backend for better performance
|
|
manual: True
|
|
default: False
|
|
|
|
flag opt
|
|
description: off=-O0 (faster builds), on=-O2
|
|
manual: True
|
|
default: True
|
|
|
|
flag use-streamly-core
|
|
description: Test only core package
|
|
manual: True
|
|
default: False
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Common stanzas
|
|
-------------------------------------------------------------------------------
|
|
|
|
common compile-options
|
|
default-language: Haskell2010
|
|
|
|
if os(darwin)
|
|
cpp-options: -DCABAL_OS_DARWIN
|
|
|
|
if os(linux)
|
|
cpp-options: -DCABAL_OS_LINUX
|
|
|
|
if os(windows)
|
|
cpp-options: -DCABAL_OS_WINDOWS
|
|
|
|
if flag(dev)
|
|
cpp-options: -DDEVBUILD
|
|
|
|
ghc-options: -Wall
|
|
-Wcompat
|
|
-Wunrecognised-warning-flags
|
|
-Widentities
|
|
-Wincomplete-record-updates
|
|
-Wincomplete-uni-patterns
|
|
-Wredundant-constraints
|
|
-Wnoncanonical-monad-instances
|
|
-Wmissing-export-lists
|
|
-Rghc-timing
|
|
-with-rtsopts "-t"
|
|
|
|
if flag(has-llvm)
|
|
ghc-options: -fllvm
|
|
|
|
if flag(dev)
|
|
ghc-options: -Wmissed-specialisations
|
|
-Wall-missed-specialisations
|
|
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M512M -RTS
|
|
|
|
if flag(use-large-mem)
|
|
cpp-options: -DUSE_LARGE_MEMORY
|
|
|
|
if flag(include-flaky-tests)
|
|
cpp-options: -DINCLUDE_FLAKY_TESTS
|
|
|
|
common default-extensions
|
|
default-extensions:
|
|
BangPatterns
|
|
CApiFFI
|
|
CPP
|
|
ConstraintKinds
|
|
DeriveDataTypeable
|
|
DeriveGeneric
|
|
DeriveTraversable
|
|
ExistentialQuantification
|
|
FlexibleContexts
|
|
FlexibleInstances
|
|
GeneralizedNewtypeDeriving
|
|
InstanceSigs
|
|
KindSignatures
|
|
LambdaCase
|
|
MagicHash
|
|
MultiParamTypeClasses
|
|
PatternSynonyms
|
|
RankNTypes
|
|
RecordWildCards
|
|
ScopedTypeVariables
|
|
TupleSections
|
|
TypeFamilies
|
|
ViewPatterns
|
|
|
|
-- MonoLocalBinds, enabled by TypeFamilies, causes performance
|
|
-- regressions. Disable it. This must come after TypeFamilies,
|
|
-- otherwise TypeFamilies will enable it again.
|
|
NoMonoLocalBinds
|
|
|
|
-- UndecidableInstances -- Does not show any perf impact
|
|
-- UnboxedTuples -- interferes with (#.)
|
|
|
|
common threading-options
|
|
ghc-options: -threaded
|
|
-with-rtsopts=-N
|
|
|
|
common optimization-options
|
|
if flag(opt) || flag(fusion-plugin)
|
|
ghc-options: -O2
|
|
-fdicts-strict
|
|
-fmax-worker-args=16
|
|
-fspec-constr-recursive=16
|
|
-- This must come after -O2
|
|
-fno-ignore-asserts
|
|
if flag(fusion-plugin) && !impl(ghcjs) && !impl(ghc < 8.6)
|
|
ghc-options: -fplugin Fusion.Plugin
|
|
else
|
|
ghc-options: -O0
|
|
|
|
common test-dependencies
|
|
build-depends:
|
|
streamly-core
|
|
, base >= 4.9 && < 4.20
|
|
, containers >= 0.5 && < 0.8
|
|
, exceptions >= 0.8 && < 0.11
|
|
, ghc
|
|
, hspec >= 2.0 && < 2.12
|
|
, mtl >= 2.2 && < 2.3.2
|
|
, random >= 1.0.0 && < 1.3
|
|
, transformers >= 0.4 && < 0.7
|
|
, QuickCheck >= 2.13 && < 2.15
|
|
, directory >= 1.2.2 && < 1.4
|
|
, filepath >= 1.4.1 && < 1.5
|
|
, temporary >= 1.3 && < 1.4
|
|
, network >= 3.1 && < 3.2
|
|
, scientific >= 0.0 && < 0.4
|
|
, template-haskell >= 2.12 && < 2.22
|
|
|
|
if !flag(use-streamly-core)
|
|
build-depends: streamly
|
|
|
|
if flag(fusion-plugin) && !impl(ghcjs) && !impl(ghc < 8.6)
|
|
build-depends:
|
|
fusion-plugin >= 0.2 && < 0.3
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Library
|
|
-------------------------------------------------------------------------------
|
|
|
|
common lib-options
|
|
import: compile-options
|
|
, optimization-options
|
|
, default-extensions
|
|
, test-dependencies
|
|
|
|
library
|
|
import: lib-options, test-dependencies
|
|
hs-source-dirs: lib
|
|
exposed-modules: Streamly.Test.Common
|
|
if !flag(use-streamly-core)
|
|
exposed-modules: Streamly.Test.Prelude.Common
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M1500M -RTS
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Test suite options
|
|
-------------------------------------------------------------------------------
|
|
|
|
common test-options
|
|
import: lib-options
|
|
, threading-options
|
|
ghc-options: -rtsopts -fno-ignore-asserts
|
|
include-dirs: .
|
|
build-depends: streamly-tests
|
|
|
|
common always-optimized
|
|
import: compile-options
|
|
, threading-options
|
|
, default-extensions
|
|
, test-dependencies
|
|
ghc-options: -O2
|
|
-fdicts-strict
|
|
-fmax-worker-args=16
|
|
-fspec-constr-recursive=16
|
|
-rtsopts
|
|
-fno-ignore-asserts
|
|
if flag(fusion-plugin) && !impl(ghcjs) && !impl(ghc < 8.6)
|
|
ghc-options: -fplugin Fusion.Plugin
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Test suites in sorted order
|
|
-------------------------------------------------------------------------------
|
|
|
|
-- The Streamly.Data.List needs to be fixed to enable this
|
|
-- test-suite Data.List
|
|
-- import: test-options
|
|
-- type: exitcode-stdio-1.0
|
|
-- main-is: Streamly/Test/Data/List.hs
|
|
-- cpp-options: -DUSE_STREAMLY_LIST
|
|
-- if !flag(dev)
|
|
-- buildable: False
|
|
|
|
test-suite Data.List.Base
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/List.hs
|
|
|
|
test-suite Data.Array.Generic
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Array/Generic.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Array.Generic.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.Array
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Array.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Array.main
|
|
|
|
test-suite Data.Stream
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Stream.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Stream.main
|
|
|
|
test-suite Data.Stream.Concurrent
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Stream/Concurrent.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Stream.Concurrent.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.Stream.Rate
|
|
import:always-optimized
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Stream/Rate.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Stream.Rate.main
|
|
if flag(dev)
|
|
buildable: True
|
|
else
|
|
buildable: False
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.MutArray
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/MutArray.hs
|
|
ghc-options: -main-is Streamly.Test.Data.MutArray.main
|
|
|
|
test-suite Data.Ring.Unboxed
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Ring/Unboxed.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Ring.Unboxed.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.Unbox.Derive.Generic
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Unbox.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Unbox.main
|
|
|
|
test-suite Data.Unbox.Derive.TH
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
cpp-options: -DUSE_TH
|
|
main-is: Streamly/Test/Data/Unbox.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Unbox.main
|
|
|
|
test-suite Data.Serialize.Derive.TH
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
cpp-options: -DUSE_SERIALIZE
|
|
main-is: Streamly/Test/Data/Unbox.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Unbox.main
|
|
|
|
test-suite Data.Unbox.TH
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Unbox/TH.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Unbox.TH.main
|
|
|
|
test-suite Data.Serialize
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Serialize.hs
|
|
other-modules:
|
|
Streamly.Test.Data.Serialize.TH
|
|
Streamly.Test.Data.Serialize.CompatV0
|
|
Streamly.Test.Data.Serialize.CompatV1
|
|
ghc-options: -main-is Streamly.Test.Data.Serialize.main
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M1500M -RTS
|
|
|
|
test-suite Data.Serialize.ENABLE_constructorTagAsString
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Serialize.hs
|
|
other-modules:
|
|
Streamly.Test.Data.Serialize.TH
|
|
Streamly.Test.Data.Serialize.CompatV0
|
|
Streamly.Test.Data.Serialize.CompatV1
|
|
cpp-options: -DENABLE_constructorTagAsString
|
|
ghc-options: -main-is Streamly.Test.Data.Serialize.main
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M1500M -RTS
|
|
|
|
test-suite Data.Array.Stream
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Array/Stream.hs
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.Fold
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Fold.hs
|
|
|
|
test-suite Data.Fold.Window
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Fold/Window.hs
|
|
ghc-options: -main-is Streamly.Test.Data.Fold.Window.main
|
|
|
|
test-suite Data.Parser
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Parser.hs
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M4000M -RTS
|
|
|
|
test-suite Data.ParserK
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/ParserK.hs
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M1500M -RTS
|
|
|
|
test-suite Data.SmallArray
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/SmallArray.hs
|
|
ghc-options: -main-is Streamly.Test.Data.SmallArray.main
|
|
if !flag(dev) || flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Data.Unfold
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Data/Unfold.hs
|
|
|
|
test-suite FileSystem.Event
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
ghc-options: -main-is Streamly.Test.FileSystem.Event
|
|
main-is: Streamly/Test/FileSystem/Event.hs
|
|
other-modules: Streamly.Test.FileSystem.Event.Common
|
|
if !(os(linux) || os(darwin) || os(windows))
|
|
buildable: False
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite FileSystem.Event.Darwin
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/FileSystem/Event/Darwin.hs
|
|
other-modules: Streamly.Test.FileSystem.Event.Common
|
|
cpp-options: -DFILESYSTEM_EVENT_DARWIN
|
|
ghc-options: -main-is Streamly.Test.FileSystem.Event.Darwin
|
|
if !os(darwin)
|
|
buildable: False
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite FileSystem.Event.Linux
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/FileSystem/Event/Linux.hs
|
|
other-modules: Streamly.Test.FileSystem.Event.Common
|
|
cpp-options: -DFILESYSTEM_EVENT_LINUX
|
|
ghc-options: -main-is Streamly.Test.FileSystem.Event.Linux
|
|
if !os(linux) || !flag(dev) || flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite FileSystem.Event.Windows
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/FileSystem/Event/Windows.hs
|
|
other-modules: Streamly.Test.FileSystem.Event.Common
|
|
cpp-options: -DFILESYSTEM_EVENT_WINDOWS
|
|
ghc-options: -main-is Streamly.Test.FileSystem.Event.Windows
|
|
if !os(windows)
|
|
buildable: False
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite FileSystem.Handle
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/FileSystem/Handle.hs
|
|
ghc-options: -main-is Streamly.Test.FileSystem.Handle.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Network.Inet.TCP
|
|
import: lib-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Network/Inet/TCP.hs
|
|
ghc-options: -rtsopts -fno-ignore-asserts
|
|
include-dirs: .
|
|
build-depends: streamly-tests
|
|
-- Cannot killThread in listen/accept on Windows threaded runtime
|
|
if !os(windows)
|
|
ghc-options: -threaded -with-rtsopts=-N
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Network.Socket
|
|
import: lib-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Network/Socket.hs
|
|
ghc-options: -rtsopts -fno-ignore-asserts
|
|
include-dirs: .
|
|
build-depends: streamly-tests
|
|
-- Cannot killThread in listen/accept on Windows threaded runtime
|
|
if !os(windows)
|
|
ghc-options: -threaded -with-rtsopts=-N
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Ahead
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Ahead.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Ahead.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Async
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Async.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Async.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Concurrent
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Concurrent.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Concurrent.main
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M2000M -RTS
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Fold
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Fold.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Fold.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Parallel
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Parallel.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Parallel.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Rate
|
|
import:always-optimized
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Rate.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Rate.main
|
|
if flag(dev)
|
|
buildable: True
|
|
else
|
|
buildable: False
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Serial
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Serial.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.Serial.main
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M1500M -RTS
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.Top
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/Top.hs
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.WAsync
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/WAsync.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.WAsync.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.WSerial
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/WSerial.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.WSerial.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.ZipAsync
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/ZipAsync.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.ZipAsync.main
|
|
if flag(limit-build-mem)
|
|
ghc-options: +RTS -M750M -RTS
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Prelude.ZipSerial
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Prelude/ZipSerial.hs
|
|
ghc-options: -main-is Streamly.Test.Prelude.ZipSerial.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Unicode.Stream
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Unicode/Stream.hs
|
|
ghc-options: -main-is Streamly.Test.Unicode.Stream.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Unicode.Parser
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Unicode/Parser.hs
|
|
ghc-options: -main-is Streamly.Test.Unicode.Parser.main
|
|
if flag(use-streamly-core)
|
|
buildable: False
|
|
|
|
test-suite Unicode.Char
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Unicode/Char.hs
|
|
ghc-options: -main-is Streamly.Test.Unicode.Char.main
|
|
if flag(use-streamly-core) || !flag(dev)
|
|
buildable: False
|
|
|
|
test-suite Serialize.Serializable
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: Streamly/Test/Serialize/Serializable.hs
|
|
|
|
test-suite version-bounds
|
|
import: test-options
|
|
type: exitcode-stdio-1.0
|
|
main-is: version-bounds.hs
|