Subject: [PATCH 27/34] gnu: ruby-listen: Enable running the tests.

From: Christopher Baines <[email-masked]>
Date: Sun, 17 Feb 2019 19:23:07 +0000

* gnu/packages/ruby.scm (ruby-listen)[source]: Switch to the Git repository,
as this includes the tests.
[arguments]: Set #:test-target and tweak the Rakefile to avoid requiring
Rubocop unnecessarily.
[native-inputs]: Add bundler and ruby-rspec for running the test suite.
[inputs]: Add ruby-thor, as this is used for bin/listen.
[propagated-inputs]: Add ruby-dep, as this is listed as a runtime dependency
in the gemspec.
---
 gnu/packages/ruby.scm | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0323f89a1c..0c5fe2896b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4346,16 +4346,39 @@ a native C extension.")
     (version "3.1.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "listen" version))
+       ;; The gem does not include a Rakefile, so fetch from the Git
+       ;; repository.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/guard/listen.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
+         "1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg"))))
     (build-system ruby-build-system)
-    (arguments '(#:tests? #f)) ; no tests
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'remove-unnecessary-dependencies'
+           (lambda _
+             (substitute* "Rakefile"
+               ;; Rubocop is for code linting, and is unnecessary for running
+               ;; the tests.
+               ((".*rubocop.*") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (inputs
+     `(;; ruby-thor is used for the command line interface, and is referenced
+       ;; in the wrapper, and therefore just needs to be an input.
+       ("ruby-thor" ,ruby-thor)))
     (propagated-inputs
-     `(("ruby-rb-inotify" ,ruby-rb-inotify)
-       ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
+     `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
+       ("ruby-rb-inotify" ,ruby-rb-inotify)
+       ("ruby-dep" ,ruby-dep)))
     (synopsis "Listen to file modifications")
     (description "The Listen gem listens to file modifications and notifies
 you about the changes.")
-- 
2.20.1