mirror of
https://github.com/simplex-chat/haskell.nix.git
synced 2026-06-03 09:17:32 +00:00
Also refactors the way tests are filtered to use `meta.disabled` where possible.
58 lines
1.7 KiB
Nix
58 lines
1.7 KiB
Nix
# Test a package set
|
|
{ stdenv, lib, util, cabalProject', haskellLib, recurseIntoAttrs, testSrc, compiler-nix-name }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
project = cabalProject' {
|
|
inherit compiler-nix-name;
|
|
src = testSrc "sublib-docs";
|
|
};
|
|
|
|
packages = project.hsPkgs;
|
|
|
|
in recurseIntoAttrs {
|
|
# Haddock is not included with cross compilers currently
|
|
meta.disabled = haskellLib.isCrossHost;
|
|
ifdInputs = {
|
|
inherit (project) plan-nix;
|
|
};
|
|
run = stdenv.mkDerivation {
|
|
name = "sublib-docs-test";
|
|
|
|
buildCommand = ''
|
|
exe="${packages.sublib-docs.components.exes.sublib-docs.exePath}"
|
|
|
|
size=$(command stat --format '%s' "$exe")
|
|
printf "size of executable $exe is $size. \n" >& 2
|
|
|
|
# fixme: run on target platform when cross-compiled
|
|
printf "checking whether executable runs... " >& 2
|
|
cat ${haskellLib.check packages.sublib-docs.components.exes.sublib-docs}/test-stdout
|
|
|
|
'' +
|
|
# Musl and Aarch are statically linked..
|
|
optionalString (!stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64 && !stdenv.hostPlatform.isMusl) (''
|
|
printf "checking that executable is dynamically linked to system libraries... " >& 2
|
|
'' + optionalString (stdenv.isLinux && !stdenv.hostPlatform.isMusl) ''
|
|
ldd $exe | grep libgmp
|
|
'' + optionalString stdenv.isDarwin ''
|
|
otool -L $exe |grep .dylib
|
|
'') + ''
|
|
|
|
# Check that it looks like we have docs
|
|
test -f "${packages.sublib-docs.components.library.doc}/share/doc/sublib-docs/html/Lib.html"
|
|
test -f "${packages.sublib-docs.components.sublibs.slib.doc}/share/doc/slib/html/Slib.html"
|
|
|
|
touch $out
|
|
'';
|
|
|
|
meta.platforms = platforms.all;
|
|
|
|
passthru = {
|
|
# Used for debugging with nix repl
|
|
inherit packages;
|
|
};
|
|
};
|
|
}
|