summary refs log tree commit diff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-02-17 17:21:56 +0000
committerChristopher Baines <mail@cbaines.net>2019-03-23 09:56:36 +0000
commit35602819afac38182a3f0b1028f588803d94e7f6 (patch)
treede2a94decf58ed527518f03da2e0885dbc8548f3 /gnu/packages/ruby.scm
parentc47e141deb607714e52c9f7646878f371c17d004 (diff)
downloadguix-35602819afac38182a3f0b1028f588803d94e7f6.tar.gz
gnu: ruby-listen: Enable running the tests.
* 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.
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm40
1 files changed, 34 insertions, 6 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6812275457..3e656e2cb3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4483,16 +4483,44 @@ 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-after 'unpack 'fix-files-in-gemspec
+           (lambda _
+             (substitute* "listen.gemspec"
+               (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
+             #t))
+         (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.")