summaryrefslogtreecommitdiff
path: root/gnu/packages/bash.scm
diff options
context:
space:
mode:
authorOleg Pykhalov <go.wigust@gmail.com>2020-06-07 20:58:27 +0300
committerOleg Pykhalov <go.wigust@gmail.com>2020-06-29 10:39:38 +0300
commit5a88d3dfcb382a9256e5b6d18f1487b597260944 (patch)
tree66d9de747b90cfc4da11326be217c13cfa0112b7 /gnu/packages/bash.scm
parentd282a82cabdbd9fbdd829a749d06c704f9d9925c (diff)
gnu: Add bats.
* gnu/packages/bash.scm (bats): New variable.
Diffstat (limited to 'gnu/packages/bash.scm')
-rw-r--r--gnu/packages/bash.scm52
1 files changed, 52 insertions, 0 deletions
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 3ba8a13e40..b331676f7a 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -24,11 +24,13 @@
(define-module (gnu packages bash)
#:use-module (guix licenses)
#:use-module (gnu packages)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages bison)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages guile)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -37,6 +39,7 @@
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
#:autoload (guix gnupg) (gnupg-verify*)
#:autoload (guix base32) (bytevector->nix-base32-string)
@@ -362,3 +365,52 @@ for Bash shell scripts and functions. Along with the Test::More-style testing
helpers it provides helper functions for mocking commands and in-process output
capturing.")
(license expat)))
+
+(define-public bats
+ (package
+ (name "bats")
+ (version "1.2.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bats-core/bats-core.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f59zh4d4pa1a7ybs5zl6h0csbqqv11lbnq0jl1dgwm1s6p49bsq"))))
+ (inputs
+ `(("bash" ,bash)
+ ("coreutils" ,coreutils)
+ ("guile" ,guile-3.0) ;for wrap-script
+ ("grep" ,grep)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (copy-recursively (assoc-ref %build-inputs "source") ".")
+ (setenv "PATH"
+ (string-append (assoc-ref %build-inputs "bash") "/bin"
+ ":" (assoc-ref %build-inputs "coreutils") "/bin"
+ ":" (assoc-ref %build-inputs "grep") "/bin"
+ ":" (assoc-ref %build-inputs "guile") "/bin"
+ ":" (getenv "PATH")))
+ (for-each (lambda (file) (patch-shebang file)) (find-files "."))
+ (substitute* "bin/bats"
+ (("export BATS_ROOT" line)
+ (string-append "BATS_ROOT=\"${BATS_ROOT:-" %output "/libexec/bats-core}\"\n"
+ line)))
+ ;; Install phase
+ (invoke "./install.sh" %output)
+ (wrap-script (string-append %output "/bin/bats")
+ (list "PATH" 'prefix (string-split (getenv "PATH")
+ #\:))))))
+ (build-system trivial-build-system)
+ (home-page "https://github.com/bats-core/bats-core/")
+ (synopsis "Bash Automated Testing System")
+ (description "Bats is a TAP-compliant testing framework for Bash. It
+provides a simple way to verify that the UNIX programs you write behave as
+expected. Bats is most useful when testing software written in Bash, but you
+can use it to test any UNIX program.")
+ (license expat)))