Subject: [PATCH] - Amendment: Enable tests

From: "Collin J. Doering" <[email-masked]>
Date: Tue, 10 Sep 2019 23:18:52 -0400

Enable tests for zsh-autosuggetions. These tests use tmux, zsh, and ruby
with rspec, inspecting output after simulating input.

Many thanks to rekado for his advise on IRC.

This is ready to merge.

-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca
>From 67f7193f2d8c51c43146514944659f15b98c7104 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Tue, 10 Sep 2019 22:58:32 -0400
Subject: [PATCH] gnu: Add zsh-autosuggestions

* gnu/packages/shellutils.scm (zsh-autosuggestions): New variable.
* gnu/packages/ruby.scm (ruby-rspec-wait): New variable.

Signed-off-by: Collin J. Doering <[email-masked]>
---
 gnu/packages/ruby.scm       | 26 ++++++++++++++++++++
 gnu/packages/shellutils.scm | 49 +++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ef9792bc0f..b953c51204 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -670,6 +670,32 @@ RSpec tests.")
     (home-page "https://github.com/dblock/rspec-rerun")
     (license license:expat)))
 
+(define-public ruby-rspec-wait
+  (package
+    (name "ruby-rspec-wait")
+    (version "0.0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rspec-wait" version))
+        (sha256
+          (base32
+            "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "rake" "spec"))))))
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Wait for conditions in RSpec")
+    (description "Wait for conditions in RSpec")
+    (home-page
+      "https://github.com/laserlemon/rspec-wait")
+    (license license:expat)))
+
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index f7542ea759..420f946c83 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Stefan Reichör <[email-masked]>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2018 Benjamin Slade <[email-masked]>
+;;; Copyright © 2019 Collin J. Doering <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,11 +34,59 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages tmux)
+  #:use-module (gnu packages shells)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python))
 
+(define-public zsh-autosuggestions
+  (package
+    (name "zsh-autosuggestions")
+    (version "0.6.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/zsh-users/zsh-autosuggestions.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h8h2mz9wpjpymgl2p7pc146c1jgb3dggpvzwm9ln3in336wl95c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("tmux" ,tmux)
+       ("zsh" ,zsh)
+       ("ruby" ,ruby)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-wait" ,ruby-rspec-wait)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-byebug" ,ruby-byebug)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'check ; Tests use ruby's bundler; instead execute rspec directly
+           (lambda _
+             (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
+             (setenv "SHELL" (which "zsh"))
+             (invoke "rspec")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (install-path (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
+               (mkdir-p install-path)
+               (invoke "make" "all")
+               (copy-file "zsh-autosuggestions.zsh" (string-append install-path "/zsh-autosuggestions.zsh"))
+               #t))))))
+    (synopsis "Fish-like autosuggestions for zsh")
+    (description
+     "Fish-like fast/unobtrusive autosuggestions for zsh.  It suggests commands as you type.")
+    (home-page "https://github.com/zsh-users/zsh-autosuggestions.git")
+    (license license:expat)))
+
 (define-public envstore
   (package
     (name "envstore")
-- 
2.23.0