racket: add tests
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
|
||||
disableDocs ? false,
|
||||
|
||||
callPackage,
|
||||
writers,
|
||||
}:
|
||||
|
||||
@@ -193,6 +194,23 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
}
|
||||
) nameOrPath;
|
||||
writeScriptBin = name: finalAttrs.passthru.writeScript "/bin/${name}";
|
||||
|
||||
# Tests #
|
||||
tests = builtins.mapAttrs (name: path: callPackage path { racket = finalAttrs.finalPackage; }) (
|
||||
{
|
||||
## Basic ##
|
||||
write-greeting = ./tests/write-greeting.nix;
|
||||
get-version-and-variant = ./tests/get-version-and-variant.nix;
|
||||
load-openssl = ./tests/load-openssl.nix;
|
||||
|
||||
## Nixpkgs supports ##
|
||||
nix-write-script = ./tests/nix-write-script.nix;
|
||||
}
|
||||
// lib.optionalAttrs (!isMinimal) {
|
||||
## `main-distribution` ##
|
||||
draw-crossing = ./tests/draw-crossing.nix;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{ runCommandLocal, racket }:
|
||||
|
||||
runCommandLocal "racket-test-draw-crossing"
|
||||
{
|
||||
nativeBuildInputs = [ racket ];
|
||||
}
|
||||
''
|
||||
racket -f - <<EOF
|
||||
(require racket/draw)
|
||||
|
||||
(define target (make-bitmap 64 64))
|
||||
(define dc (new bitmap-dc% [bitmap target]))
|
||||
(send dc draw-line 0 0 64 64)
|
||||
(send dc draw-line 0 64 64 0)
|
||||
|
||||
(send target save-file (getenv "out") 'png)
|
||||
EOF
|
||||
''
|
||||
@@ -0,0 +1,27 @@
|
||||
{ runCommandLocal, racket }:
|
||||
|
||||
runCommandLocal "racket-test-get-version-and-variant"
|
||||
{
|
||||
nativeBuildInputs = [ racket ];
|
||||
}
|
||||
''
|
||||
expectation="${racket.version}"
|
||||
|
||||
output="$(racket -e '(display (version))')"
|
||||
|
||||
if test "$output" != "$expectation"; then
|
||||
echo "output mismatch: expected ''${expectation}, but got ''${output}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
expectation="cs"
|
||||
|
||||
output="$(racket -e '(require launcher/launcher) (display (current-launcher-variant))')"
|
||||
|
||||
if test "$output" != "$expectation"; then
|
||||
echo "output mismatch: expected ''${expectation}, but got ''${output}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch $out
|
||||
''
|
||||
@@ -0,0 +1,15 @@
|
||||
{ runCommandLocal, racket }:
|
||||
|
||||
runCommandLocal "racket-test-load-openssl"
|
||||
{
|
||||
nativeBuildInputs = [ racket ];
|
||||
}
|
||||
''
|
||||
racket -f - <<EOF
|
||||
(require openssl)
|
||||
(unless ssl-available?
|
||||
(raise ssl-load-fail-reason))
|
||||
EOF
|
||||
|
||||
touch $out
|
||||
''
|
||||
@@ -0,0 +1,26 @@
|
||||
{ runCommandLocal, racket }:
|
||||
|
||||
let
|
||||
script = racket.writeScript "racket-test-nix-write-script-the-script" { } ''
|
||||
#lang racket/base
|
||||
(display "success")
|
||||
(newline)
|
||||
'';
|
||||
in
|
||||
|
||||
runCommandLocal "racket-test-nix-write-script"
|
||||
{
|
||||
nativeBuildInputs = [ racket ];
|
||||
}
|
||||
''
|
||||
expectation="success"
|
||||
|
||||
output="$(${script})"
|
||||
|
||||
if test "$output" != "$expectation"; then
|
||||
echo "output mismatch: expected ''${expectation}, but got ''${output}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch $out
|
||||
''
|
||||
@@ -0,0 +1,23 @@
|
||||
{ runCommandLocal, racket }:
|
||||
|
||||
runCommandLocal "racket-test-write-greeting"
|
||||
{
|
||||
nativeBuildInputs = [ racket ];
|
||||
}
|
||||
''
|
||||
expectation="Hello, world!"
|
||||
|
||||
racket -f - <<EOF
|
||||
(with-output-to-file (getenv "out")
|
||||
(lambda ()
|
||||
(display "Hello, world!")
|
||||
(newline)))
|
||||
EOF
|
||||
|
||||
output="$(cat $out)"
|
||||
|
||||
if test "$output" != "$expectation"; then
|
||||
echo "output mismatch: expected ''${expectation}, but got ''${output}"
|
||||
exit 1
|
||||
fi
|
||||
''
|
||||
Reference in New Issue
Block a user