Merge pull request #185694 from infinisil/bats-libraries
bats: Add library support
This commit is contained in:
@@ -13,6 +13,10 @@
|
||||
, ps
|
||||
, bats
|
||||
, lsof
|
||||
, callPackages
|
||||
, symlinkJoin
|
||||
, makeWrapper
|
||||
, runCommand
|
||||
, doInstallCheck ? true
|
||||
}:
|
||||
|
||||
@@ -105,6 +109,52 @@ resholve.mkDerivation rec {
|
||||
};
|
||||
};
|
||||
|
||||
passthru.libraries = callPackages ./libraries.nix {};
|
||||
|
||||
passthru.withLibraries = selector:
|
||||
symlinkJoin {
|
||||
name = "bats-with-libraries-${bats.version}";
|
||||
|
||||
paths = [
|
||||
bats
|
||||
] ++ selector bats.libraries;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
wrapProgram "$out/bin/bats" \
|
||||
--suffix BATS_LIB_PATH : "$out/share/bats"
|
||||
'';
|
||||
};
|
||||
|
||||
passthru.tests.libraries = runCommand "${bats.name}-with-libraries-test" {
|
||||
testScript = ''
|
||||
setup() {
|
||||
bats_load_library bats-support
|
||||
bats_load_library bats-assert
|
||||
|
||||
bats_require_minimum_version 1.5.0
|
||||
}
|
||||
|
||||
@test echo_hi {
|
||||
run -0 echo hi
|
||||
assert_output "hi"
|
||||
}
|
||||
|
||||
@test cp_failure {
|
||||
run ! cp
|
||||
assert_line --index 0 "cp: missing file operand"
|
||||
assert_line --index 1 "Try 'cp --help' for more information."
|
||||
}
|
||||
'';
|
||||
passAsFile = [ "testScript" ];
|
||||
} ''
|
||||
${bats.withLibraries (p: [ p.bats-support p.bats-assert ])}/bin/bats "$testScriptPath"
|
||||
touch "$out"
|
||||
'';
|
||||
|
||||
passthru.tests.upstream = bats.unresholved.overrideAttrs (old: {
|
||||
name = "${bats.name}-tests";
|
||||
dontInstall = true; # just need the build directory
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
{ lib, stdenv, fetchFromGitHub }: {
|
||||
bats-assert = stdenv.mkDerivation {
|
||||
pname = "bats-assert";
|
||||
version = "2.0.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bats-core";
|
||||
repo = "bats-assert";
|
||||
rev = "v2.0.0";
|
||||
sha256 = "sha256-whSbAj8Xmnqclf78dYcjf1oq099ePtn4XX9TUJ9AlyQ=";
|
||||
};
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out/share/bats"
|
||||
cp -r . "$out/share/bats/bats-assert"
|
||||
'';
|
||||
meta = {
|
||||
description = "Common assertions for Bats";
|
||||
platforms = lib.platforms.all;
|
||||
homepage = "https://github.com/bats-core/bats-assert";
|
||||
license = lib.licenses.cc0;
|
||||
maintainers = with lib.maintainers; [ infinisil ];
|
||||
};
|
||||
};
|
||||
|
||||
bats-file = stdenv.mkDerivation {
|
||||
pname = "bats-file";
|
||||
version = "0.3.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bats-core";
|
||||
repo = "bats-file";
|
||||
rev = "v0.3.0";
|
||||
sha256 = "sha256-3xevy0QpwNZrEe+2IJq58tKyxQzYx8cz6dD2nz7fYUM=";
|
||||
};
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out/share/bats"
|
||||
cp -r . "$out/share/bats/bats-file"
|
||||
'';
|
||||
meta = {
|
||||
description = "Common filesystem assertions for Bats";
|
||||
platforms = lib.platforms.all;
|
||||
homepage = "https://github.com/bats-core/bats-file";
|
||||
license = lib.licenses.cc0;
|
||||
maintainers = with lib.maintainers; [ infinisil ];
|
||||
};
|
||||
};
|
||||
|
||||
bats-support = stdenv.mkDerivation {
|
||||
pname = "bats-support";
|
||||
version = "0.3.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "bats-core";
|
||||
repo = "bats-support";
|
||||
rev = "v0.3.0";
|
||||
sha256 = "sha256-4N7XJS5XOKxMCXNC7ef9halhRpg79kUqDuRnKcrxoeo=";
|
||||
};
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p "$out/share/bats"
|
||||
cp -r . "$out/share/bats/bats-support"
|
||||
'';
|
||||
meta = {
|
||||
description = "Supporting library for Bats test helpers";
|
||||
platforms = lib.platforms.all;
|
||||
homepage = "https://github.com/bats-core/bats-support";
|
||||
license = lib.licenses.cc0;
|
||||
maintainers = with lib.maintainers; [ infinisil ];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user