Hopefully. Also add a couple of tests to check that.main
parent
fe630fcb1f
commit
968d180452
@ -0,0 +1,116 @@ |
||||
{ lib |
||||
, php |
||||
, runCommand |
||||
}: |
||||
|
||||
let |
||||
runTest = name: body: runCommand name { } '' |
||||
testFailed= |
||||
checking() { |
||||
echo -n "Checking $1... " > /dev/stderr |
||||
} |
||||
ok() { |
||||
echo ok > /dev/stderr |
||||
} |
||||
nok() { |
||||
echo fail > /dev/stderr |
||||
testFailed=1 |
||||
} |
||||
|
||||
${body} |
||||
|
||||
if test -n "$testFailed"; then |
||||
exit 1 |
||||
fi |
||||
|
||||
touch $out |
||||
''; |
||||
|
||||
check = cond: if cond then "ok" else "nok"; |
||||
in |
||||
{ |
||||
withExtensions-enables-previously-disabled-extensions = runTest "php-test-withExtensions-enables-previously-disabled-extensions" '' |
||||
php="${php}" |
||||
|
||||
checking "that imagick is not present by default" |
||||
$php/bin/php -r 'exit(extension_loaded("imagick") ? 1 : 0);' && ok || nok |
||||
|
||||
phpWithImagick="${php.withExtensions ({ all, ... }: [ all.imagick ])}" |
||||
checking "that imagick extension is present when enabled" |
||||
$phpWithImagick/bin/php -r 'exit(extension_loaded("imagick") ? 0 : 1);' && ok || nok |
||||
''; |
||||
|
||||
overrideAttrs-preserves-enabled-extensions = |
||||
let |
||||
customPhp = |
||||
(php.withExtensions ({ all, ... }: [ all.imagick ])).overrideAttrs (attrs: { |
||||
postInstall = attrs.postInstall or "" + '' |
||||
touch "$out/oApee-was-here" |
||||
''; |
||||
}); |
||||
in |
||||
runTest "php-test-overrideAttrs-preserves-enabled-extensions" '' |
||||
php="${customPhp}" |
||||
phpUnwrapped="${customPhp.unwrapped}" |
||||
|
||||
checking "if overrides took hold" |
||||
test -f "$phpUnwrapped/oApee-was-here" && ok || nok |
||||
|
||||
checking "if imagick extension is still present" |
||||
$php/bin/php -r 'exit(extension_loaded("imagick") ? 0 : 1);' && ok || nok |
||||
|
||||
checking "if imagick extension is linked against the overridden PHP" |
||||
echo $php |
||||
$php/bin/php -r 'exit(extension_loaded("imagick") ? 0 : 1);' && ok || nok |
||||
''; |
||||
|
||||
unwrapped-overrideAttrs-stacks = |
||||
let |
||||
customPhp = |
||||
lib.pipe php.unwrapped [ |
||||
(pkg: pkg.overrideAttrs (attrs: { |
||||
postInstall = attrs.postInstall or "" + '' |
||||
touch "$out/oAs-first" |
||||
''; |
||||
})) |
||||
|
||||
(pkg: pkg.overrideAttrs (attrs: { |
||||
postInstall = attrs.postInstall or "" + '' |
||||
touch "$out/oAs-second" |
||||
''; |
||||
})) |
||||
]; |
||||
in |
||||
runTest "php-test-unwrapped-overrideAttrs-stacks" '' |
||||
checking "if first override remained" |
||||
${check (builtins.match ".*oAs-first.*" customPhp.postInstall != null)} |
||||
|
||||
checking "if second override is there" |
||||
${check (builtins.match ".*oAs-second.*" customPhp.postInstall != null)} |
||||
''; |
||||
|
||||
wrapped-overrideAttrs-stacks = |
||||
let |
||||
customPhp = |
||||
lib.pipe php [ |
||||
(pkg: pkg.overrideAttrs (attrs: { |
||||
postInstall = attrs.postInstall or "" + '' |
||||
touch "$out/oAs-first" |
||||
''; |
||||
})) |
||||
|
||||
(pkg: pkg.overrideAttrs (attrs: { |
||||
postInstall = attrs.postInstall or "" + '' |
||||
touch "$out/oAs-second" |
||||
''; |
||||
})) |
||||
]; |
||||
in |
||||
runTest "php-test-wrapped-overrideAttrs-stacks" '' |
||||
checking "if first override remained" |
||||
${check (builtins.match ".*oAs-first.*" customPhp.unwrapped.postInstall != null)} |
||||
|
||||
checking "if second override is there" |
||||
${check (builtins.match ".*oAs-second.*" customPhp.unwrapped.postInstall != null)} |
||||
''; |
||||
} |
Loading…
Reference in new issue