octavePackages.{buildOctavePackage: allow specifying inputs for package tests, image: fix tests} (#494226)
This commit is contained in:
@@ -76,6 +76,17 @@ See [Symbolic](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/oct
|
||||
`requiredOctavePackages`
|
||||
: This is a special dependency that ensures the specified Octave packages are dependent on others, and are made available simultaneously when loading them in Octave.
|
||||
|
||||
### Testing Octave packages {#sssec-testing-octave-packages}
|
||||
|
||||
Octave packages built using the `buildOctavePackage` function do not have a `checkPhase` or `installCheckPhase`.
|
||||
Instead, the tests `testOctaveBuildEnv` and `testOctavePkgTests` are added to the package's `passthru.tests`.
|
||||
|
||||
`passthru.tests.testOctaveBuildEnv` tests whether the package can be used by `octave.withPackages` successfully.
|
||||
|
||||
`passthru.tests.testOctavePkgTests` runs a `pkg test` command for the package.
|
||||
If the package needs additional inputs to successfully run the tests, the `nativeOctavePkgTestInputs` attribute can be specified.
|
||||
If the package needs environment variables to be set to successfully run the tests, ensure that `__structuredAttrs = true;` in the package, then set the environment variables you need in `octavePkgTestEnv` (which should be an attrset where the key is the name of the variable and the value is its value (as a string)).
|
||||
|
||||
### Installing Octave Packages {#sssec-installing-octave-packages}
|
||||
|
||||
By default, the `buildOctavePackage` function does _not_ install the requested package into Octave for use.
|
||||
|
||||
@@ -695,6 +695,9 @@
|
||||
"footnote-stdenv-find-inputs-location.__back.0": [
|
||||
"index.html#footnote-stdenv-find-inputs-location.__back.0"
|
||||
],
|
||||
"sssec-testing-octave-packages": [
|
||||
"index.html#sssec-testing-octave-packages"
|
||||
],
|
||||
"strictflexarrays1": [
|
||||
"index.html#strictflexarrays1"
|
||||
],
|
||||
|
||||
@@ -46,6 +46,11 @@
|
||||
# requiredOctavePackages are ALSO installed into octave.
|
||||
requiredOctavePackages ? [ ],
|
||||
|
||||
# Dependencies and `env` for octave package tests,
|
||||
# which are run with .passthru.tests.testOctavePkgTests
|
||||
nativeOctavePkgTestInputs ? [ ],
|
||||
octavePkgTestEnv ? { },
|
||||
|
||||
preBuild ? "",
|
||||
|
||||
meta ? { },
|
||||
@@ -74,6 +79,7 @@ let
|
||||
# itself, causing everything to fail.
|
||||
attrs' = removeAttrs attrs [
|
||||
"nativeBuildInputs"
|
||||
"nativeOctavePkgTestInputs"
|
||||
"passthru"
|
||||
];
|
||||
in
|
||||
@@ -143,7 +149,9 @@ stdenv.mkDerivation (
|
||||
testOctaveBuildEnv = (octave.withPackages (os: [ finalAttrs.finalPackage ])).overrideAttrs (old: {
|
||||
name = "${finalAttrs.name}-pkg-install";
|
||||
});
|
||||
testOctavePkgTests = callPackage ./run-pkg-test.nix { } finalAttrs.finalPackage;
|
||||
testOctavePkgTests = callPackage ./run-pkg-test.nix {
|
||||
inherit nativeOctavePkgTestInputs octavePkgTestEnv;
|
||||
} finalAttrs.finalPackage;
|
||||
}
|
||||
// passthru.tests or { };
|
||||
};
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
{
|
||||
octave,
|
||||
runCommand,
|
||||
nativeOctavePkgTestInputs,
|
||||
octavePkgTestEnv,
|
||||
}:
|
||||
package:
|
||||
|
||||
@@ -8,7 +10,10 @@ runCommand "${package.name}-pkg-test"
|
||||
{
|
||||
nativeBuildInputs = [
|
||||
(octave.withPackages (os: [ package ]))
|
||||
];
|
||||
]
|
||||
++ nativeOctavePkgTestInputs;
|
||||
|
||||
env = octavePkgTestEnv;
|
||||
}
|
||||
''
|
||||
{ octave-cli --eval 'pkg test ${package.pname}' || touch FAILED_ERRCODE; } \
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
buildOctavePackage,
|
||||
lib,
|
||||
fetchurl,
|
||||
mesa,
|
||||
gnuplot,
|
||||
makeFontsConf,
|
||||
writableTmpDirAsHomeHook,
|
||||
}:
|
||||
|
||||
buildOctavePackage rec {
|
||||
@@ -13,6 +17,16 @@ buildOctavePackage rec {
|
||||
sha256 = "sha256-pYY8E5LZd+pPNwzFVH4EsXY8K3fXs6Hyz2zYweXkmRk=";
|
||||
};
|
||||
|
||||
nativeOctavePkgTestInputs = [
|
||||
mesa
|
||||
gnuplot
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
|
||||
octavePkgTestEnv.FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; };
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gnu-octave.github.io/packages/image/";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
|
||||
@@ -116,7 +116,14 @@ makeScope newScope (
|
||||
inherit (pkgs) gsl;
|
||||
};
|
||||
|
||||
image = callPackage ../development/octave-modules/image { };
|
||||
image = callPackage ../development/octave-modules/image {
|
||||
inherit (pkgs)
|
||||
mesa
|
||||
gnuplot
|
||||
makeFontsConf
|
||||
writableTmpDirAsHomeHook
|
||||
;
|
||||
};
|
||||
|
||||
image-acquisition = callPackage ../development/octave-modules/image-acquisition { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user