on iko/ghcjs-patch-master help sign in
Add tests for benchmarks and hspec-discover (#181)

* tests: Add benchmarks and hspec-discover to cabal-22 test

commit53c0498ec4011a9747ae1995df699849b5bacaa1 authorRodney Lorrimar <rodney.lorrimar@iohk.io> dateTue 1 Oct 2019, 12:01 (7 years ago) parentdcec48a
10 files changed+120−9
test/cabal-22/.plan.nix/project.nix+11 test/cabal-22/default.nix+12−2 test/cabal-22/pkgs.nix+44 test/cabal-22/project.cabal+19−5 test/cabal-22/project.nix+11 test/cabal-22/test/LibSpec.hs+11 test/cabal-22/test/Main.hs+1 test/default.nix+1−1 test/shell-for/pkgs.nix+1−1 test/tests.sh+9
test/cabal-22/.plan.nix/project.nix+11
@@ -17,5 +17,16 @@
1717 components = {
1818 "library" = { depends = [ (hsPkgs.base) ]; };
1919 exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
20+ tests = {
21+ "unit" = {
22+ depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
23+ build-tools = [
24+ (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
25+ ];
26+ };
27+ };
28+ benchmarks = {
29+ "project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
30+ };
2031 };
2132 } // rec { src = (pkgs.lib).mkDefault ../.; }
test/cabal-22/default.nix+12−2
@@ -1,4 +1,4 @@
1−{ stdenv, mkCabalProjectPkgSet }:
1+{ stdenv, mkCabalProjectPkgSet, util }:
22
33with stdenv.lib;
44
@@ -45,7 +45,17 @@ in
4545 otool -L $sofile | grep libHSghc-prim
4646 '') + ''
4747 touch $out
48+
49+ printf "checking whether benchmark runs... " >& 2
50+ ${packages.project.components.benchmarks.project-bench}/*/project-bench
51+
52+ printf "checking whether tests run... " >& 2
53+ ${packages.project.components.tests.unit}/*/unit
4854 '';
4955
5056 meta.platforms = platforms.all;
51−} // { inherit (packages) project; }
57+ passthru = {
58+ inherit (packages) project;
59+ shell = util.addCabalInstall packages.project.components.all;
60+ };
61+ }
test/cabal-22/pkgs.nix+44
@@ -2,9 +2,41 @@
22 pkgs = hackage:
33 {
44 packages = {
5+ "tf-random".revision = (((hackage."tf-random")."0.5").revisions).default;
56 "ghc-prim".revision = (((hackage."ghc-prim")."0.5.2.0").revisions).default;
7+ "stm".revision = (((hackage."stm")."2.4.5.1").revisions).default;
8+ "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default;
69 "rts".revision = (((hackage."rts")."1.0").revisions).default;
10+ "clock".revision = (((hackage."clock")."0.8").revisions).default;
11+ "clock".flags.llvm = false;
12+ "QuickCheck".revision = (((hackage."QuickCheck")."2.13.1").revisions).default;
13+ "QuickCheck".flags.templatehaskell = true;
14+ "hspec-discover".revision = (((hackage."hspec-discover")."2.7.1").revisions).default;
15+ "deepseq".revision = (((hackage."deepseq")."1.4.3.0").revisions).default;
16+ "random".revision = (((hackage."random")."1.1").revisions).default;
17+ "splitmix".revision = (((hackage."splitmix")."0.0.2").revisions).default;
18+ "HUnit".revision = (((hackage."HUnit")."1.6.0.0").revisions).default;
19+ "directory".revision = (((hackage."directory")."1.3.1.5").revisions).default;
20+ "template-haskell".revision = (((hackage."template-haskell")."2.13.0.0").revisions).default;
21+ "hspec-expectations".revision = (((hackage."hspec-expectations")."0.8.2").revisions).default;
22+ "call-stack".revision = (((hackage."call-stack")."0.1.0").revisions).default;
23+ "primitive".revision = (((hackage."primitive")."0.7.0.0").revisions).default;
24+ "ansi-terminal".revision = (((hackage."ansi-terminal")."0.9.1").revisions).default;
25+ "ansi-terminal".flags.example = false;
26+ "containers".revision = (((hackage."containers")."0.5.11.0").revisions).default;
27+ "bytestring".revision = (((hackage."bytestring")."0.10.8.2").revisions).default;
28+ "setenv".revision = (((hackage."setenv")."0.1.1.3").revisions).default;
729 "base".revision = (((hackage."base")."4.11.1.0").revisions).default;
30+ "hspec".revision = (((hackage."hspec")."2.7.1").revisions).default;
31+ "time".revision = (((hackage."time")."1.8.0.2").revisions).default;
32+ "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default;
33+ "quickcheck-io".revision = (((hackage."quickcheck-io")."0.2.0").revisions).default;
34+ "colour".revision = (((hackage."colour")."2.3.5").revisions).default;
35+ "filepath".revision = (((hackage."filepath")."1.4.2").revisions).default;
36+ "hspec-core".revision = (((hackage."hspec-core")."2.7.1").revisions).default;
37+ "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default;
38+ "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.4.4").revisions).default;
39+ "array".revision = (((hackage."array")."0.5.2.0").revisions).default;
840 "integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
941 };
1042 compiler = {
@@ -12,8 +44,20 @@
1244 nix-name = "ghc844";
1345 packages = {
1446 "ghc-prim" = "0.5.2.0";
47+ "stm" = "2.4.5.1";
48+ "unix" = "2.7.2.2";
1549 "rts" = "1.0";
50+ "deepseq" = "1.4.3.0";
51+ "directory" = "1.3.1.5";
52+ "template-haskell" = "2.13.0.0";
53+ "containers" = "0.5.11.0";
54+ "bytestring" = "0.10.8.2";
1655 "base" = "4.11.1.0";
56+ "time" = "1.8.0.2";
57+ "filepath" = "1.4.2";
58+ "pretty" = "1.1.3.6";
59+ "ghc-boot-th" = "8.4.4";
60+ "array" = "0.5.2.0";
1761 "integer-gmp" = "1.0.2.0";
1862 };
1963 };
test/cabal-22/project.cabal+19−5
@@ -15,17 +15,31 @@ maintainer: rodney.lorrimar@iohk.io
1515
1616library
1717 exposed-modules: Lib
18− -- other-modules:
19− -- other-extensions:
2018 build-depends: base ^>=4.11.1.0
2119 hs-source-dirs: lib
2220 default-language: Haskell2010
2321
2422executable project
2523 main-is: Main.hs
26− -- other-modules:
27− -- other-extensions:
2824 build-depends: base ^>=4.11.1.0
2925 , project
30− -- hs-source-dirs:
3126 default-language: Haskell2010
27+
28+benchmark project-bench
29+ type: exitcode-stdio-1.0
30+ main-is: Main.hs
31+ build-depends: base ^>=4.11.1.0
32+ , project
33+ default-language: Haskell2010
34+ ghc-options: -threaded -rtsopts -Wall -O2
35+
36+test-suite unit
37+ type: exitcode-stdio-1.0
38+ main-is: Main.hs
39+ build-depends: base ^>=4.11.1.0
40+ , project
41+ , hspec
42+ build-tools: hspec-discover
43+ other-modules: LibSpec
44+ default-language: Haskell2010
45+ hs-source-dirs: test
test/cabal-22/project.nix+11
@@ -17,5 +17,16 @@
1717 components = {
1818 "library" = { depends = [ (hsPkgs.base) ]; };
1919 exes = { "project" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; }; };
20+ tests = {
21+ "unit" = {
22+ depends = [ (hsPkgs.base) (hsPkgs.project) (hsPkgs.hspec) ];
23+ build-tools = [
24+ (hsPkgs.buildPackages.hspec-discover or (pkgs.buildPackages.hspec-discover))
25+ ];
26+ };
27+ };
28+ benchmarks = {
29+ "project-bench" = { depends = [ (hsPkgs.base) (hsPkgs.project) ]; };
30+ };
2031 };
2132 } // rec { src = (pkgs.lib).mkDefault ./.; }
test/cabal-22/test/LibSpec.hsnew file+11
@@ -0,0 +1,11 @@
1+module LibSpec
2+ ( spec
3+ ) where
4+
5+import Test.Hspec
6+import Lib
7+
8+spec :: Spec
9+spec = describe "Lib message" $
10+ it "should greet appropriately" $
11+ message `shouldContain` "Hello"
test/cabal-22/test/Main.hsnew file+1
@@ -0,0 +1 @@
1+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
test/default.nix+1−1
@@ -12,7 +12,7 @@ in pkgs.recurseIntoAttrs {
1212 cabal-simple = haskell.callPackage ./cabal-simple { inherit util; };
1313 cabal-simple-prof = haskell.callPackage ./cabal-simple-prof { inherit util; };
1414 cabal-sublib = haskell.callPackage ./cabal-sublib { inherit util; };
15− cabal-22 = haskell.callPackage ./cabal-22 {};
15+ cabal-22 = haskell.callPackage ./cabal-22 { inherit util; };
1616 with-packages = haskell.callPackage ./with-packages { inherit util; };
1717 builder-haddock = haskell.callPackage ./builder-haddock {};
1818 stack-simple = haskell.callPackage ./stack-simple {};
test/shell-for/pkgs.nix+1−1
@@ -189,4 +189,4 @@
189189 {
190190 packages = { pkga = ./.plan.nix/pkga.nix; pkgb = ./.plan.nix/pkgb.nix; };
191191 };
192− }
192+ }
test/tests.sh+9
@@ -51,6 +51,15 @@ nix-shell $NIX_BUILD_ARGS \
5151 --run 'echo CABAL_CONFIG=$CABAL_CONFIG && echo GHC_ENVIRONMENT=$GHC_ENVIRONMENT && cd with-packages && cabal new-build'
5252echo >& 2
5353
54+printf "*** Checking that a nix-shell works for a project with test-suite build-tools and benchmarks...\n" >& 2
55+printf "!!! This is expected to fail until https://github.com/input-output-hk/haskell.nix/issues/231 is resolved! \n" >& 2
56+nix-shell $NIX_BUILD_ARGS \
57+ --pure ./default.nix \
58+ -A cabal-22.shell \
59+ --run 'cd cabal-22 && cabal new-build all --enable-tests --enable-benchmarks' \
60+ || true
61+echo >& 2
62+
5463printf "*** Checking that a nix-shell works for a multi-target project...\n" >& 2
5564nix-shell $NIX_BUILD_ARGS \
5665 --pure ./default.nix \