mirror of
https://github.com/NixOS/nix.git
synced 2025-11-23 10:49:36 +01:00
Get rid of some manual package set resolution in favor of splicing again, too. Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
101 lines
2.2 KiB
Nix
101 lines
2.2 KiB
Nix
{
|
|
lib,
|
|
buildPackages,
|
|
stdenv,
|
|
mkMesonExecutable,
|
|
writableTmpDirAsHomeHook,
|
|
|
|
nix-store,
|
|
nix-store-c,
|
|
nix-store-test-support,
|
|
sqlite,
|
|
|
|
rapidcheck,
|
|
gtest,
|
|
gbenchmark,
|
|
runCommand,
|
|
|
|
# Configuration Options
|
|
|
|
version,
|
|
filesetToSource,
|
|
withBenchmarks ? false,
|
|
}:
|
|
|
|
let
|
|
inherit (lib) fileset;
|
|
in
|
|
|
|
mkMesonExecutable (finalAttrs: {
|
|
pname = "nix-store-tests";
|
|
inherit version;
|
|
|
|
workDir = ./.;
|
|
fileset = fileset.unions [
|
|
../../nix-meson-build-support
|
|
./nix-meson-build-support
|
|
../../.version
|
|
./.version
|
|
./meson.build
|
|
./meson.options
|
|
(fileset.fileFilter (file: file.hasExt "cc") ./.)
|
|
(fileset.fileFilter (file: file.hasExt "hh") ./.)
|
|
];
|
|
|
|
buildInputs = [
|
|
sqlite
|
|
rapidcheck
|
|
gtest
|
|
nix-store
|
|
nix-store-c
|
|
nix-store-test-support
|
|
]
|
|
++ lib.optionals withBenchmarks [
|
|
gbenchmark
|
|
];
|
|
|
|
mesonFlags = [
|
|
(lib.mesonBool "benchmarks" withBenchmarks)
|
|
];
|
|
|
|
passthru = {
|
|
tests = {
|
|
run =
|
|
let
|
|
# Some data is shared with the functional tests: they create it,
|
|
# we consume it.
|
|
data = filesetToSource {
|
|
root = ../..;
|
|
fileset = lib.fileset.unions [
|
|
./data
|
|
../../tests/functional/derivation
|
|
];
|
|
};
|
|
in
|
|
runCommand "${finalAttrs.pname}-run"
|
|
{
|
|
meta.broken = !stdenv.hostPlatform.emulatorAvailable buildPackages;
|
|
buildInputs = [ writableTmpDirAsHomeHook ];
|
|
}
|
|
(
|
|
''
|
|
export _NIX_TEST_UNIT_DATA=${data + "/src/libstore-tests/data"}
|
|
export NIX_REMOTE=$HOME/store
|
|
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe finalAttrs.finalPackage}
|
|
''
|
|
+ lib.optionalString withBenchmarks ''
|
|
${stdenv.hostPlatform.emulator buildPackages} ${lib.getExe' finalAttrs.finalPackage "nix-store-benchmarks"}
|
|
''
|
|
+ ''
|
|
touch $out
|
|
''
|
|
);
|
|
};
|
|
};
|
|
|
|
meta = {
|
|
platforms = lib.platforms.unix ++ lib.platforms.windows;
|
|
mainProgram = finalAttrs.pname + stdenv.hostPlatform.extensions.executable;
|
|
};
|
|
|
|
})
|