packages feed

atomic-primops-0.8.3: testing/test-atomic-primops.cabal

-- Trying a completely separate .cabal for testing.

Name:                test-atomic-primops
Version:             0.6.0.5
Build-type:          Simple
Cabal-version:       >=1.18
-- This is generally controled by the continuous integration script at a more granular level:
tested-with:         GHC == 8.4.3, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3

Flag opt
    Description: Enable GHC optimization.
    Default: False

Flag threaded
    Description: Enable GHC threaded RTS.
    Default: True

-- The MAIN test suite:
Test-Suite test-atomic-primops
    type:       exitcode-stdio-1.0
    main-is:    Test.hs
    other-modules:
        CommonTesting
        Counter
        Fetch
        Issue28
    ghc-options: -rtsopts -main-is Test.main -Wall

    if flag(opt)
       ghc-options: -O2 -funbox-strict-fields
    if flag(threaded)
       ghc-options: -threaded
       ghc-options: -rtsopts -with-rtsopts=-N4

    -- Set it to always run with some parallelism.
    build-depends: base >= 4.8 && < 5
                 , ghc-prim
                 , primitive
                 , containers
                 , random
                 , atomic-primops >= 0.6.0.5
                   -- For Testing:
                 , time
                 , HUnit
                 , test-framework
                 , test-framework-hunit
    -- Optional: Debugging generated code:
    --    ghc-options: -keep-tmp-files -dsuppress-module-prefixes -ddump-to-file -ddump-core-stats -ddump-simpl-stats -dcore-lint -dcmm-lint
    --    ghc-options: -ddump-ds -ddump-simpl -ddump-stg -ddump-asm -ddump-bcos -ddump-cmm -ddump-opt-cmm -ddump-inlinings
    default-language: Haskell2010

-- Cabal can get confused if there is no executable or library... so here's a dummy executable.
-- Also it provides a good test of compile/link issues, apart from everything else.
Executable hello-world-atomic-primops
  main-is: hello.hs
  build-depends: base >= 4.8 && < 5
               , atomic-primops
  default-language: Haskell2010

-- This is separated out, because a bug in GHC 7.6 make this fail on Linux.
Test-suite template-haskell-atomic-primops
  type:       exitcode-stdio-1.0
  main-is: ghci-test.hs
  other-modules: TemplateHaskellSplices
  Buildable: True
  build-depends: base >= 4.8 && < 5
               , atomic-primops >= 0.6.0.5
               , template-haskell
               , test-framework
               , test-framework-hunit
  default-language: Haskell2010
-- A very simple test of one primop included in GHC 7.8:
Test-suite raw_CAS
  type:    exitcode-stdio-1.0
  build-depends: base >= 4.8 && < 5
               , ghc-prim
               , atomic-primops >= 0.6.0.5
-- ghc-prim, primitive, containers, random, atomic-primops >= 0.5.0.2,
  main-is: Raw781_test.hs
  default-language: Haskell2010

Test-suite Issue28
  type:    exitcode-stdio-1.0
  build-depends: base >= 4.8 && < 5
               , ghc-prim
               , atomic-primops >= 0.6.0.5
  main-is: Issue28.hs
  ghc-options: -main-is Issue28.main
  default-language: Haskell2010

Benchmark atomic-primops-MicroBench
  type:    exitcode-stdio-1.0
  build-depends: base >= 4.8 && < 5
               , ghc-prim
               , primitive
               , containers
               , random
               , atomic-primops >= 0.6.0.5
               , deepseq >= 1.3
               , time
               , HUnit
               , test-framework
               , test-framework-hunit
               , criterion >= 1.2.1
  main-is: MicroBench.hs
  default-language: Haskell2010