diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-03 13:39:30 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-03-03 13:57:08 +0100 |
commit | 497997cc388ce791ca0b4dc55f46ab515e8fb5d9 (patch) | |
tree | 867053bb31858180d2b439d1c63c610c58be54ee /nixos | |
parent | ad7c518e45221533e2094acb20fea6ade477da75 (diff) | |
download | nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.gz nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.bz2 nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.lz nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.xz nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.tar.zst nixlib-497997cc388ce791ca0b4dc55f46ab515e8fb5d9.zip |
Move generation of coverage reports from nixos/lib/testing to releaseTools
Also, turn some stdenv adapters into setup hooks.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/lib/testing.nix | 54 | ||||
-rw-r--r-- | nixos/release.nix | 3 | ||||
-rw-r--r-- | nixos/tests/quake3.nix | 4 | ||||
-rw-r--r-- | nixos/tests/subversion.nix | 2 |
4 files changed, 10 insertions, 53 deletions
diff --git a/nixos/lib/testing.nix b/nixos/lib/testing.nix index 3407229e921a..d5338bc04cac 100644 --- a/nixos/lib/testing.nix +++ b/nixos/lib/testing.nix @@ -67,62 +67,16 @@ rec { }; - # Generate a coverage report from the coverage data produced by - # runTests. - makeReport = x: runCommand "report" { buildInputs = [rsync]; } - '' - mkdir -p $TMPDIR/gcov/ - - for d in ${x}/coverage-data/*; do - echo "doing $d" - [ -n "$(ls -A "$d")" ] || continue - - for i in $(cd $d/nix/store && ls); do - if ! test -e $TMPDIR/gcov/nix/store/$i; then - echo "copying $i" - mkdir -p $TMPDIR/gcov/$(echo $i | cut -c34-) - rsync -rv /nix/store/$i/.build/* $TMPDIR/gcov/ - fi - done - - chmod -R u+w $TMPDIR/gcov - - find $TMPDIR/gcov -name "*.gcda" -exec rm {} \; - - for i in $(cd $d/nix/store && ls); do - rsync -rv $d/nix/store/$i/.build/* $TMPDIR/gcov/ - done - - find $TMPDIR/gcov -name "*.gcda" -exec chmod 644 {} \; - - echo "producing info..." - ${pkgs.lcov}/bin/geninfo --ignore-errors source,gcov $TMPDIR/gcov --output-file $TMPDIR/app.info - cat $TMPDIR/app.info >> $TMPDIR/full.info - done - - echo "making report..." - mkdir -p $out/coverage - ${pkgs.lcov}/bin/genhtml --show-details $TMPDIR/full.info -o $out/coverage - cp $TMPDIR/full.info $out/coverage/ - - mkdir -p $out/nix-support - cat ${x}/nix-support/hydra-build-products >> $out/nix-support/hydra-build-products - echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products - [ ! -e ${x}/nix-support/failed ] || touch $out/nix-support/failed - ''; # */ - - makeTest = testFun: complete (call testFun); makeTests = testsFun: lib.mapAttrs (name: complete) (call testsFun); apply = makeTest; # compatibility call = f: f { inherit pkgs system; }; - complete = t: t // rec { + complete = { testScript, ... } @ t: t // rec { + nodes = buildVirtualNetwork ( - if t ? nodes then t.nodes else - if t ? machine then { machine = t.machine; } - else { } ); + t.nodes or (if t ? machine then { machine = t.machine; } else { })); testScript = # Call the test script with the computed nodes. @@ -162,7 +116,7 @@ rec { test = runTests driver; - report = makeReport test; + report = releaseTools.gcovReport { coverageRuns = [ test ]; }; }; diff --git a/nixos/release.nix b/nixos/release.nix index ff094cce05fa..b98976c2ccea 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -213,7 +213,8 @@ in rec { with lib; let testsFor = system: - mapAttrsRecursiveCond (x: !x ? test) (n: v: listToAttrs [(nameValuePair system v.test)]) + mapAttrsRecursiveCond (x: !x ? test) + (n: v: listToAttrs [(nameValuePair system (if v.makeCoverageReport or false then v.report else v.test))]) (import ./tests { inherit nixpkgs system; }); in fold recursiveUpdate {} (map testsFor systems); } diff --git a/nixos/tests/quake3.nix b/nixos/tests/quake3.nix index 925011077805..fefbd75b4a3c 100644 --- a/nixos/tests/quake3.nix +++ b/nixos/tests/quake3.nix @@ -14,11 +14,13 @@ in rec { + makeCoverageReport = true; + client = { config, pkgs, ... }: { imports = [ ./common/x11.nix ]; - services.xserver.driSupport = true; + hardware.opengl.driSupport = true; services.xserver.defaultDepth = pkgs.lib.mkOverride 0 16; environment.systemPackages = [ pkgs.quake3demo ]; nixpkgs.config.packageOverrides = overrides; diff --git a/nixos/tests/subversion.nix b/nixos/tests/subversion.nix index 309da90c5df1..49450c78f3b8 100644 --- a/nixos/tests/subversion.nix +++ b/nixos/tests/subversion.nix @@ -20,7 +20,7 @@ let # To build the kernel with coverage instrumentation, we need a # special patch to make coverage data available under /proc. linux = pkgs.linux.override (orig: { - stdenv = cleanupBuildTree (keepBuildTree orig.stdenv); + stdenv = overrideInStdenv pkgs.stdenv [ pkgs.keepBuildTree ]; extraConfig = '' GCOV_KERNEL y |