Commit f535b0c6 authored by David McFarland's avatar David McFarland
Browse files

dotnet: add aot test

parent 1532eab9
Loading
Loading
Loading
Loading
+46 −10
Original line number Diff line number Diff line
# TODO: switch to stdenvNoCC
{ stdenv
, stdenvNoCC
, lib
, writeText
, testers
, runCommand
, runCommandWith
, expect
, curl
, installShellFiles
, callPackage
, zlib
, swiftPackages
, darwin
, icu
}: type: args: stdenv.mkDerivation (finalAttrs: args // {
  doInstallCheck = true;

@@ -43,9 +50,11 @@
      mkDotnetTest =
        {
          name,
          stdenv ? stdenvNoCC,
          template,
          usePackageSource ? false,
          build,
          buildInputs ? [],
          # TODO: use correct runtimes instead of sdk
          runtime ? finalAttrs.finalPackage,
          runInputs ? [],
@@ -54,19 +63,20 @@
        }:
        let
          sdk = finalAttrs.finalPackage;
          built = runCommand "dotnet-test-${name}" {
            buildInputs = [ sdk ];
          built = runCommandWith  {
            name = "dotnet-test-${name}";
            inherit stdenv;
            derivationArgs = {
              buildInputs = [ sdk ] ++ buildInputs;
              # make sure ICU works in a sandbox
            propagatedSandboxProfile = toString sdk.__propagatedSandboxProfile + ''
              (allow network-inbound (local ip))
              (allow mach-lookup (global-name "com.apple.FSEvents"))
            '';
              propagatedSandboxProfile = toString sdk.__propagatedSandboxProfile;
            };
          } (''
            HOME=$PWD/.home
            dotnet new nugetconfig
            dotnet nuget disable source nuget
          '' + lib.optionalString usePackageSource ''
            dotnet nuget add source ${finalAttrs.finalPackage.packages}
            dotnet nuget add source ${sdk.packages}
          '' + ''
            dotnet new ${template} -n test -o .
          '' + build);
@@ -96,6 +106,8 @@
        [[ "$output" =~ Hello,?\ World! ]] && touch "$out"
      '';

      patchNupkgs = callPackage ./patch-nupkgs.nix {};

    in {
      version = testers.testVersion ({
        package = finalAttrs.finalPackage;
@@ -103,7 +115,7 @@
        command = "dotnet --info";
      });
    }
    // lib.optionalAttrs (type == "sdk") {
    // lib.optionalAttrs (type == "sdk") ({
      console = mkDotnetTest {
        name = "console";
        template = "console";
@@ -165,6 +177,30 @@
        '';
        runAllowNetworking = true;
      };
    } // args.passthru.tests or {};
    } // lib.optionalAttrs finalAttrs.finalPackage.hasILCompiler {
      aot = mkDotnetTest {
        name = "aot";
        stdenv = if stdenv.isDarwin then swiftPackages.stdenv else stdenv;
        template = "console";
        usePackageSource = true;
        buildInputs =
          [ patchNupkgs
            zlib
          ] ++ lib.optional stdenv.isDarwin (with darwin; with apple_sdk.frameworks; [
            swiftPackages.swift
            Foundation
            CryptoKit
            GSS
            ICU
          ]);
        build = ''
          dotnet restore -p:PublishAot=true
          patch-nupkgs .home/.nuget/packages
          dotnet publish -p:PublishAot=true -o $out/bin
        '';
        runtime = null;
        run = checkConsoleOutput "$src/bin/test";
      };
    }) // args.passthru.tests or {};
  } // args.passthru or {};
})