Subject: Add emacs-buttercup

From: Arun Isaac <[email-masked]>
Date: Fri, 14 Dec 2018 12:31:41 +0530

This patchset adds emacs-buttercup, and enables tests for emacs-circe
and emacs-tracking, two packages that require emacs-buttercup to run
tests.

>From c3640218f58363c645afec59d402cd4b73a9a448 Mon Sep 17 00:00:00 2001
From: Arun Isaac <[email-masked]>
Date: Wed, 12 Dec 2018 00:47:01 +0530
Subject: [PATCH 1/3] gnu: Add emacs-buttercup.

* gnu/packages/emacs.scm (emacs-buttercup): New variable.
---
 gnu/packages/emacs.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 358f32cab..74a9bb79d 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -12757,3 +12757,36 @@ interactive session association with the current contexts (project, directory,
 buffers).  While sesman can be used to manage arbitrary sessions, it primary
 targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
     (license license:gpl3+)))
+
+(define-public emacs-buttercup
+  (package
+    (name "emacs-buttercup")
+    (version "1.16")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jorgenschaefer/emacs-buttercup.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0dckgcyzsav6ld78bcyrrygy1cz1jvqgav6vy8f6klpmk3r8xrl1"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("make" "test")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-bin
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "bin/buttercup"
+                           (string-append (assoc-ref outputs "out") "/bin"))
+             #t)))))
+    (home-page "https://github.com/jorgenschaefer/emacs-buttercup")
+    (synopsis "Behavior driven emacs lisp testing framework")
+    (description "Buttercup is a behavior-driven development framework for
+testing Emacs Lisp code.  It allows to group related tests so they can share
+common set-up and tear-down code, and allows the programmer to \"spy\" on
+functions to ensure they are called with the right arguments during testing.")
+    (license license:gpl3+)))
-- 
2.19.2

>From 75553dd0bd5e7e0549aa003f006b719f5502b1cb Mon Sep 17 00:00:00 2001
From: Arun Isaac <[email-masked]>
Date: Wed, 12 Dec 2018 00:59:15 +0530
Subject: [PATCH 2/3] gnu: emacs-circe: Enable tests.

* gnu/packages/emacs.scm (emacs-circe)[arguments]: Enable tests. Set
test-command. Add set-home phase.
[native-inputs]: Add emacs-buttercup.
---
 gnu/packages/emacs.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 74a9bb79d..0575338ee 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7835,6 +7835,19 @@ value of the access token.")
         (base32
          "10gi14kwxd81blddpvqh95lgmpbfgp0m955naxix3bs3r6a75n4s"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("buttercup" "-L" ".")
+       #:phases
+       (modify-phases %standard-phases
+         ;; The HOME environment variable should be set to an existing
+         ;; directory for the tests to succeed.
+         (add-before 'check 'set-home
+           (lambda _
+             (setenv "HOME" "/tmp")
+             #t)))))
+    (native-inputs
+     `(("emacs-buttercup" ,emacs-buttercup)))
     ;; In order to securely connect to an IRC server using TLS, Circe requires
     ;; the GnuTLS binary.
     (propagated-inputs
-- 
2.19.2

>From e17724b3e59a7784aac391e5be7e450ffcf2a67d Mon Sep 17 00:00:00 2001
From: Arun Isaac <[email-masked]>
Date: Wed, 12 Dec 2018 01:00:26 +0530
Subject: [PATCH 3/3] gnu: emacs-tracking: Enable tests.

* gnu/packages/emacs.scm (emacs-tracking)[arguments]: Append to arguments
inherited from emacs-circe, instead of overwriting them.
---
 gnu/packages/emacs.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0575338ee..df56612c3 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7868,7 +7868,7 @@ want to use it.")
      ;; "tracking.el" is a library extracted from Circe package.  It requires
      ;; "shorten.el".
      `(#:include '("^shorten.el$" "^tracking.el$")
-       #:tests? #f))                    ;tests require buttercup
+       ,@(package-arguments emacs-circe)))
     (home-page "https://github.com/jorgenschaefer/circe/wiki/Tracking")
     (synopsis "Buffer tracking library")
     (description "@code{tracking.el} provides a way for different modes to
-- 
2.19.2