tests: Add test cases for dev environments

This commit is contained in:
Rodney Lorrimar 2019-01-30 15:28:02 +10:00
parent 8642facf1e
commit ce0f5e0393
No known key found for this signature in database
GPG Key ID: 2CCD588917A9A868
8 changed files with 239 additions and 0 deletions

View File

@ -18,6 +18,7 @@ let
in {
cabal-simple = callPackage ./cabal-simple { inherit haskell; };
cabal-22 = callPackage ./cabal-22 { inherit haskell; };
with-packages = callPackage ./with-packages { inherit haskell; };
# Run unit tests with: nix-instantiate --eval --strict -A unit
# An empty list means success.

View File

@ -0,0 +1,12 @@
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Control.Lens
data Point = Point { _x :: Double, _y :: Double }
makeLenses ''Point
main :: IO ()
main = print (point^.x + point^.y)
where
point = Point { _x = 40.0, _y = 2.0 }

View File

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

View File

@ -0,0 +1,6 @@
-- | Haddock test stuff
module TestWithPackages (hello) where
-- | Standard hello text.
hello :: String
hello = "Hello, world!"

View File

@ -0,0 +1,68 @@
{ pkgs
, haskell
, stdenv
}:
with stdenv.lib;
let
pkgSet = haskell.mkPkgSet {
inherit pkgs;
# generated with:
# cabal new-build
# plan-to-nix dist-newstyle/cache/plan.json > plan.nix
# cabal-to-nix test-with-packages.cabal > test-with-packages.nix
pkg-def = import ./plan.nix;
pkg-def-overlays = [
{ test-with-packages = ./test-with-packages.nix; }
];
modules = [
# overrides to fix the build
{
packages.transformers-compat.components.library.doExactConfig = true;
}
];
};
packages = pkgSet.config.hsPkgs;
# Add cabal as a buildInput for a haskell derivation. Useful for nix-shell.
addCabalInstall = drv: drv.overrideAttrs (oldAttrs: {
buildInputs = (oldAttrs.buildInputs or []) ++ [ pkgs.cabal-install ];
});
in
stdenv.mkDerivation {
name = "with-packages-test";
buildCommand = let
package = packages.test-with-packages;
inherit (package.components) library;
in ''
########################################################################
# test with-packages
printf "checking that the 'all' component works... " >& 2
echo ${package.components.all}
# echo >& 2
printf "checking that the package env has the dependencies... " >& 2
${package.components.all.env}/bin/runghc ${./Point.hs}
echo >& 2
printf "checking that components.library.env has the dependencies... " >& 2
${library.env}/bin/runghc ${./Point.hs}
# echo >& 2
touch $out
'';
meta.platforms = platforms.all;
} // {
# Used for debugging with nix repl
inherit packages pkgSet;
# Used for testing externally with nix-shell (../tests.sh).
# This just adds cabal-install to the existing shells.
test-shell = addCabalInstall packages.test-with-packages.components.all;
}

View File

@ -0,0 +1,99 @@
hackage:
{
packages = {
"void".revision = hackage."void"."0.7.2".revisions.default;
"semigroupoids".revision = hackage."semigroupoids"."5.2.2".revisions.default;
"free".revision = hackage."free"."5.0.2".revisions.default;
"exceptions".revision = hackage."exceptions"."0.10.0".revisions.default;
"binary".revision = hackage."binary"."0.8.5.1".revisions.default;
"ghc-prim".revision = hackage."ghc-prim"."0.5.2.0".revisions.default;
"bifunctors".revision = hackage."bifunctors"."5.5.3".revisions.default;
"stm".revision = hackage."stm"."2.4.5.1".revisions.default;
"mtl".revision = hackage."mtl"."2.2.2".revisions.default;
"rts".revision = hackage."rts"."1.0".revisions.default;
"adjunctions".revision = hackage."adjunctions"."4.4".revisions.default;
"invariant".revision = hackage."invariant"."0.5.1".revisions.default;
"distributive".revision = hackage."distributive"."0.5.3".revisions.default;
"parallel".revision = hackage."parallel"."3.2.2.0".revisions.default;
"deepseq".revision = hackage."deepseq"."1.4.3.0".revisions.default;
"semigroups".revision = hackage."semigroups"."0.18.5".revisions.default;
"transformers-compat".revision = hackage."transformers-compat"."0.6.2".revisions.default;
"template-haskell".revision = hackage."template-haskell"."2.13.0.0".revisions.default;
"vector".revision = hackage."vector"."0.12.0.1".revisions.default;
"call-stack".revision = hackage."call-stack"."0.1.0".revisions.default;
"primitive".revision = hackage."primitive"."0.6.3.0".revisions.default;
"profunctors".revision = hackage."profunctors"."5.2.2".revisions.default;
"tagged".revision = hackage."tagged"."0.8.5".revisions.default;
"lens".revision = hackage."lens"."4.16.1".revisions.default;
"containers".revision = hackage."containers"."0.5.11.0".revisions.default;
"reflection".revision = hackage."reflection"."2.1.4".revisions.default;
"bytestring".revision = hackage."bytestring"."0.10.8.2".revisions.default;
"StateVar".revision = hackage."StateVar"."1.1.1.1".revisions.default;
"contravariant".revision = hackage."contravariant"."1.4.1".revisions.default;
"text".revision = hackage."text"."1.2.3.1".revisions.default;
"unordered-containers".revision = hackage."unordered-containers"."0.2.9.0".revisions.default;
"base".revision = hackage."base"."4.11.1.0".revisions.default;
"comonad".revision = hackage."comonad"."5.0.4".revisions.default;
"transformers".revision = hackage."transformers"."0.5.5.0".revisions.default;
"hashable".revision = hackage."hashable"."1.2.7.0".revisions.default;
"transformers-base".revision = hackage."transformers-base"."0.4.5.2".revisions.default;
"filepath".revision = hackage."filepath"."1.4.2".revisions.default;
"kan-extensions".revision = hackage."kan-extensions"."5.2".revisions.default;
"pretty".revision = hackage."pretty"."1.1.3.6".revisions.default;
"ghc-boot-th".revision = hackage."ghc-boot-th"."8.4.4".revisions.default;
"base-orphans".revision = hackage."base-orphans"."0.7".revisions.default;
"th-abstraction".revision = hackage."th-abstraction"."0.2.8.0".revisions.default;
"array".revision = hackage."array"."0.5.2.0".revisions.default;
"integer-gmp".revision = hackage."integer-gmp"."1.0.2.0".revisions.default;
};
compiler = {
version = "8.4.4";
nix-name = "ghc844";
packages = {
"void" = "0.7.2";
"semigroupoids" = "5.2.2";
"free" = "5.0.2";
"exceptions" = "0.10.0";
"binary" = "0.8.5.1";
"ghc-prim" = "0.5.2.0";
"bifunctors" = "5.5.3";
"stm" = "2.4.5.1";
"mtl" = "2.2.2";
"rts" = "1.0";
"adjunctions" = "4.4";
"invariant" = "0.5.1";
"distributive" = "0.5.3";
"parallel" = "3.2.2.0";
"deepseq" = "1.4.3.0";
"semigroups" = "0.18.5";
"transformers-compat" = "0.6.2";
"template-haskell" = "2.13.0.0";
"vector" = "0.12.0.1";
"call-stack" = "0.1.0";
"primitive" = "0.6.3.0";
"profunctors" = "5.2.2";
"tagged" = "0.8.5";
"lens" = "4.16.1";
"containers" = "0.5.11.0";
"reflection" = "2.1.4";
"bytestring" = "0.10.8.2";
"StateVar" = "1.1.1.1";
"contravariant" = "1.4.1";
"text" = "1.2.3.1";
"unordered-containers" = "0.2.9.0";
"base" = "4.11.1.0";
"comonad" = "5.0.4";
"transformers" = "0.5.5.0";
"hashable" = "1.2.7.0";
"transformers-base" = "0.4.5.2";
"filepath" = "1.4.2";
"kan-extensions" = "5.2";
"pretty" = "1.1.3.6";
"ghc-boot-th" = "8.4.4";
"base-orphans" = "0.7";
"th-abstraction" = "0.2.8.0";
"array" = "0.5.2.0";
"integer-gmp" = "1.0.2.0";
};
};
}

View File

@ -0,0 +1,15 @@
cabal-version: 2.2
name: test-with-packages
version: 0.1.0.0
license: NONE
author: Rodney Lorrimar
maintainer: rodney.lorrimar@iohk.io
library
exposed-modules: TestWithPackages
-- other-modules:
-- other-extensions:
build-depends: base ^>=4.11.1.0
, lens
-- hs-source-dirs:
default-language: Haskell2010

View File

@ -0,0 +1,36 @@
{ system
, compiler
, flags
, pkgs
, hsPkgs
, pkgconfPkgs
, ... }:
{
flags = {};
package = {
specVersion = "2.2";
identifier = {
name = "test-with-packages";
version = "0.1.0.0";
};
license = "NONE";
copyright = "";
maintainer = "rodney.lorrimar@iohk.io";
author = "Rodney Lorrimar";
homepage = "";
url = "";
synopsis = "";
description = "";
buildType = "Simple";
};
components = {
"library" = {
depends = [
(hsPkgs.base)
(hsPkgs.lens)
];
};
};
} // rec {
src = pkgs.lib.mkDefault ./.;
}