Commit 159f042d authored by 06kellyjac's avatar 06kellyjac
Browse files

deno: add some simple tests

parent 27bcfe5f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ rustPlatform.buildRustPackage rec {
  '';

  passthru.updateScript = ./update/update.ts;
  passthru.tests = callPackage ./tests { };

  meta = with lib; {
    homepage = "https://deno.land/";
+1 −0
Original line number Diff line number Diff line
console.log(1 + 1)
+68 −0
Original line number Diff line number Diff line
{ deno, runCommand, lib, testers }:
let
  testDenoRun =
    name:
    { args ? ""
    , dir ? ./. + "/${name}"
    , file ? "index.ts"
    , expected ? ""
    , expectFailure ? false
    }:
    let
      command = "deno run ${args} ${dir}/${file}";
    in
    runCommand "deno-test-${name}" { nativeBuildInputs = [ deno ]; meta.timeout = 60; } ''
      HOME=$(mktemp -d)
      if output=$(${command} 2>&1); then
        if [[ $output =~ '${expected}' ]]; then
          echo "Test '${name}' passed"
          touch $out
        else
          echo -n ${lib.escapeShellArg command} >&2
          echo " output did not match what was expected." >&2
          echo "The expected was:" >&2
          echo '${expected}' >&2
          echo "The output was:" >&2
          echo "$output" >&2
          exit 1
        fi
      else
        if [[ "${toString expectFailure}" == "1" ]]; then
          echo "Test '${name}' failed as expected"
          touch $out
          exit 0
        fi
        echo -n ${lib.escapeShellArg command} >&2
        echo " returned a non-zero exit code." >&2
        echo "$output" >&2
        exit 1
      fi
    '';
in
(lib.mapAttrs testDenoRun {
  basic = {
    dir = ./.;
    file = "basic.ts";
    expected = "2";
  };
  import-json = {
    expected = "hello from JSON";
  };
  import-ts = {
    expected = "hello from ts";
  };
  read-file = {
    args = "--allow-read";
    expected = "hello from a file";
  };
  fail-read-file = {
    expectFailure = true;
    dir = ./read-file;
  };
}) //
{
  version = testers.testVersion {
    package = deno;
    command = "deno --version";
  };
}
+1 −0
Original line number Diff line number Diff line
{ "msg": "hello from JSON" }
+2 −0
Original line number Diff line number Diff line
import file from "./data.json" assert { type: "json" };
console.log(file.msg);
Loading