From b96db0bc7cbb11cdbfa30cecec19a2b5559777ab Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Sun, 2 Feb 2025 20:25:57 +0100 Subject: [PATCH] nix build: fix tests incremental building and testing --- flake.nix | 10 ++++++---- nix/compile.nix | 25 ++++++++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/flake.nix b/flake.nix index 278fe11d..00f589d0 100644 --- a/flake.nix +++ b/flake.nix @@ -23,10 +23,9 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - compileFor = target: release: (compile { + packageFor = target: release: (compile { inherit system git_version target nixpkgs crane rust-overlay release; - }); - packageFor = target: release: (compileFor target release).garage; + }).garage; in { packages = { @@ -43,7 +42,10 @@ dev = packageFor null false; # test = cargo test - test = (compileFor null false).garage-test; + tests = (compile { + inherit system git_version nixpkgs crane rust-overlay; + release = false; + }).garage-test; }; # ---- developpment shell, for making native builds only ---- diff --git a/nix/compile.nix b/nix/compile.nix index ab9ef1ef..05dd82d1 100644 --- a/nix/compile.nix +++ b/nix/compile.nix @@ -141,6 +141,12 @@ let CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = "clang"; }); + testArgs = commonArgs // { + pname = "garage-tests"; + cargoExtraArgs = "${commonArgs.cargoExtraArgs} --tests --workspace"; + CARGO_PROFILE = "test"; + }; + in rec { toolchain = toolchainFn pkgs; @@ -158,21 +164,26 @@ in rec { garage = craneLib.buildPackage (commonArgs // { cargoArtifacts = garage-deps; + doCheck = false; version = git_version; GIT_VERSION = git_version; }); - garage-test-deps = craneLib.buildDepsOnly (commonArgs // { - pname = "garage-test"; + garage-test-deps = craneLib.buildDepsOnly (testArgs // { cargoArtifacts = garage; - cargoExtraArgs = "${commonArgs.cargoExtraArgs} --tests --workspace"; - CARGO_PROFILE = "test"; }); - garage-test = craneLib.cargoTest (commonArgs // { - cargoTestExtraArgs = "--workspace"; + garage-test-bin = craneLib.cargoBuild (testArgs // { cargoArtifacts = garage-test-deps; - CARGO_PROFILE = "test"; + + doCheck = false; + }); + + garage-test = craneLib.cargoTest (testArgs // { + cargoArtifacts = garage-test-bin; + nativeBuildInputs = commonArgs.nativeBuildInputs ++ [ + pkgs.cacert + ]; }); }