gnu: Add bats.

* gnu/packages/bash.scm (bats): New variable.
This commit is contained in:
Oleg Pykhalov 2020-06-07 20:58:27 +03:00
parent d282a82cab
commit 5a88d3dfcb
No known key found for this signature in database
GPG key ID: 167F8EA5001AFA9C

View file

@ -24,11 +24,13 @@
(define-module (gnu packages bash) (define-module (gnu packages bash)
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages bootstrap) #:use-module (gnu packages bootstrap)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages guile)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
@ -37,6 +39,7 @@ (define-module (gnu packages bash)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:autoload (guix gnupg) (gnupg-verify*) #:autoload (guix gnupg) (gnupg-verify*)
#:autoload (guix base32) (bytevector->nix-base32-string) #:autoload (guix base32) (bytevector->nix-base32-string)
@ -362,3 +365,52 @@ (define-public bash-tap
helpers it provides helper functions for mocking commands and in-process output helpers it provides helper functions for mocking commands and in-process output
capturing.") capturing.")
(license expat))) (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)))