mirror of
https://github.com/ilyakooo0/haskell.nix.git
synced 2024-10-26 09:37:17 +03:00
tests: Add test cases for dev environments
This commit is contained in:
parent
8642facf1e
commit
ce0f5e0393
@ -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.
|
||||
|
12
test/with-packages/Point.hs
Normal file
12
test/with-packages/Point.hs
Normal 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 }
|
2
test/with-packages/Setup.hs
Normal file
2
test/with-packages/Setup.hs
Normal file
@ -0,0 +1,2 @@
|
||||
import Distribution.Simple
|
||||
main = defaultMain
|
6
test/with-packages/TestWithPackages.hs
Normal file
6
test/with-packages/TestWithPackages.hs
Normal file
@ -0,0 +1,6 @@
|
||||
-- | Haddock test stuff
|
||||
module TestWithPackages (hello) where
|
||||
|
||||
-- | Standard hello text.
|
||||
hello :: String
|
||||
hello = "Hello, world!"
|
68
test/with-packages/default.nix
Normal file
68
test/with-packages/default.nix
Normal 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;
|
||||
}
|
99
test/with-packages/plan.nix
Normal file
99
test/with-packages/plan.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
15
test/with-packages/test-with-packages.cabal
Normal file
15
test/with-packages/test-with-packages.cabal
Normal 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
|
36
test/with-packages/test-with-packages.nix
Normal file
36
test/with-packages/test-with-packages.nix
Normal 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 ./.;
|
||||
}
|
Loading…
Reference in New Issue
Block a user