Unverified Commit 99dd92d7 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

ctestCheckHook: init, {pdal,gifticlib,zynaddsubfx}: migrate to ctestCheckHook (#379426)

parents 97562fc7 091041ce
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -33,3 +33,21 @@ The default value is `build`.
#### `dontUseCmakeConfigure` {#dont-use-cmake-configure}

When set to true, don't use the predefined `cmakeConfigurePhase`.

## Controlling CTest invocation {#cmake-ctest}

By default tests are run by make in [`checkPhase`](#ssec-check-phase) or by [ninja](#ninja) if `ninja` is
available in `nativeBuildInputs`. Makefile and Ninja generators produce the `test` target, which invokes `ctest` under the hood.
This makes passing additional arguments to `ctest` difficult, so it's possible to invoke it directly in `checkPhase`
by adding `ctestCheckHook` to `nativeCheckInputs`.

### CTest Variables {#cmake-ctest-variables}

#### `disabledTests` {#cmake-ctest-disabled-tests}

Allows to disable running a list of tests. Note that regular expressions are not supported by `disabledTests`, but
it can be combined with `--exclude-regex` option.

#### `ctestFlags` {#cmake-ctest-flags}

Additional options passed to `ctest` together with `checkFlags`.
+12 −0
Original line number Diff line number Diff line
@@ -5,6 +5,18 @@
  "chap-release-notes": [
    "release-notes.html#chap-release-notes"
  ],
  "cmake-ctest": [
    "index.html#cmake-ctest"
  ],
  "cmake-ctest-disabled-tests": [
    "index.html#cmake-ctest-disabled-tests"
  ],
  "cmake-ctest-flags": [
    "index.html#cmake-ctest-flags"
  ],
  "cmake-ctest-variables": [
    "index.html#cmake-ctest-variables"
  ],
  "ex-build-helpers-extendMkDerivation": [
    "index.html#ex-build-helpers-extendMkDerivation"
  ],
+12 −20
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@
  # Test dependencies
  cxxtest,
  ruby,
  ctestCheckHook,
}:

assert builtins.any (g: guiModule == g) [
@@ -151,28 +152,19 @@ stdenv.mkDerivation rec {
  nativeCheckInputs = [
    cxxtest
    ruby
    ctestCheckHook
  ];

  # TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829
  checkPhase =
    let
  disabledTests =
    # PortChecker is non-deterministic. It's fixed in the master
    # branch, but backporting would require an update to rtosc, so
    # we'll just disable it until the next release.
    [ "PortChecker" ]

    # Tests fail on aarch64
    ++ lib.optionals stdenv.hostPlatform.isAarch64 [
      "MessageTest"
      "UnisonTest"
    ];
    in
    ''
      runHook preCheck
      ctest --output-on-failure -E '^${lib.concatStringsSep "|" disabledTests}$'
      runHook postCheck
    '';

  # Use Zyn-Fusion logo for zest build
  # An SVG version of the logo isn't hosted anywhere we can fetch, I
+44 −0
Original line number Diff line number Diff line
# shellcheck shell=bash disable=SC2154

ctestCheckHook() {
    echo "Executing ctestCheckHook"

    runHook preCheck

    local buildCores=1

    if [ "${enableParallelChecking-1}" ]; then
        buildCores="$NIX_BUILD_CORES"
    fi

    local flagsArray=(
        "-j$buildCores"
        # This is enabled by the cmakeConfigurePhase by exporting
        # CTEST_OUTPUT_ON_FAILURE, but it makes sense it enable it globally here
        # as well.
        "--output-on-failure"
    )

    local disabledTestsArray=()
    concatTo disabledTestsArray disabledTests

    if [ ${#disabledTestsArray[@]} -ne 0 ]; then
        local ctestExcludedTestsFile=$NIX_BUILD_TOP/.ctest-excluded-tests
        disabledTestsString="$(concatStringsSep "\n" disabledTestsArray)"
        echo -e "$disabledTestsString" >"$ctestExcludedTestsFile"
        flagsArray+=("--exclude-from-file" "$ctestExcludedTestsFile")
    fi

    concatTo flagsArray ctestFlags checkFlags checkFlagsArray

    echoCmd 'ctest flags' "${flagsArray[@]}"
    ctest "${flagsArray[@]}"

    echo "Finished ctestCheckHook"

    runHook postCheck
}

if [ -z "${dontUseCTestCheck-}" ] && [ -z "${checkPhase-}" ]; then
    checkPhase=ctestCheckHook
fi
+9 −0
Original line number Diff line number Diff line
{
  makeSetupHook,
  cmake,
}:

makeSetupHook {
  name = "ctestCheckHook";
  propagatedBuildInputs = [ cmake ];
} ./ctest-check-hook.sh
Loading