summaryrefslogtreecommitdiff
path: root/gnu/packages/ruby-check.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby-check.scm')
-rw-r--r--gnu/packages/ruby-check.scm1157
1 files changed, 1156 insertions, 1 deletions
diff --git a/gnu/packages/ruby-check.scm b/gnu/packages/ruby-check.scm
index bb42267b129..5db07ff240a 100644
--- a/gnu/packages/ruby-check.scm
+++ b/gnu/packages/ruby-check.scm
@@ -1,4 +1,37 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com>
3;;; Copyright © 2015 David Thompson <davet@gnu.org>
4;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
5;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
6;;; Copyright © 2016 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
7;;; Copyright © 2017-2020, 2023 Christopher Baines <mail@cbaines.net>
8;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2017 nikita <nikita@n0.is>
10;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
11;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
12;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
13;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
14;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
15;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
16;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
17;;; Copyright © 2020 Holger Peters <holger.peters@posteo.de>
18;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org>
19;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
20;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
21;;; Copyright © 2021 EuAndreh <eu@euandre.org>
22;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org>
23;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
24;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
25;;; Copyright © 2022, 2024 Danny Milosavljevic <dannym@scratchpost.org>
26;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
27;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
28;;; Copyright © 2022 Stephen Paul Weber <singpolyma@singpolyma.net>
29;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
30;;; Copyright © 2022 Tom Fitzhenry <tom@tom-fitzhenry.me.uk>
31;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
32;;; Copyright © 2023 Hartmut Goebel <h.goebel@crazy-compilers.com>
33;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
34;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
2;;; 35;;;
3;;; This file is part of GNU Guix. 36;;; This file is part of GNU Guix.
4;;; 37;;;
@@ -18,10 +51,13 @@
18(define-module (gnu packages ruby-check) 51(define-module (gnu packages ruby-check)
19 #:use-module ((guix licenses) #:prefix license:) 52 #:use-module ((guix licenses) #:prefix license:)
20 #:use-module (guix build-system ruby) 53 #:use-module (guix build-system ruby)
54 #:use-module (guix download)
21 #:use-module (guix gexp) 55 #:use-module (guix gexp)
22 #:use-module (guix git-download) 56 #:use-module (guix git-download)
23 #:use-module (guix packages) 57 #:use-module (guix packages)
24 #:use-module (gnu packages)) 58 #:use-module (guix utils)
59 #:use-module (gnu packages)
60 #:use-module (gnu packages ruby))
25 61
26;;; Commentary: 62;;; Commentary:
27;;; 63;;;
@@ -30,6 +66,1125 @@
30;;; Code: 66;;; Code:
31 67
32 68
69;; Bundler is yet another source of circular dependencies, so we must disable
70;; its test suite as well.
71(define-public bundler
72 (package
73 (name "bundler")
74 (version "2.4.18")
75 (source (origin
76 (method url-fetch)
77 (uri (rubygems-uri "bundler" version))
78 (sha256
79 (base32
80 "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn"))))
81 (build-system ruby-build-system)
82 (arguments
83 '(#:tests? #f)) ; avoid dependency cycles
84 (synopsis "Ruby gem bundler")
85 (description "Bundler automatically downloads and installs a list of gems
86specified in a \"Gemfile\", as well as their dependencies.")
87 (home-page "https://bundler.io/")
88 (license license:expat)))
89
90(define-public ruby-asciidoctor/minimal
91 (hidden-package
92 (package
93 (name "ruby-asciidoctor")
94 (version "2.0.20")
95 (source
96 (origin
97 (method git-fetch) ;the gem release lacks a Rakefile
98 (uri (git-reference
99 (url "https://github.com/asciidoctor/asciidoctor")
100 (commit (string-append "v" version))))
101 (file-name (git-file-name name version))
102 (sha256
103 (base32
104 "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq"))))
105 (build-system ruby-build-system)
106 (arguments (list #:tests? #f))
107 (synopsis "Converter from AsciiDoc content to other formats")
108 (description "Asciidoctor is a text processor and publishing toolchain for
109converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
110 (home-page "https://asciidoctor.org")
111 (license license:expat))))
112
113(define-public ruby-builder
114 (package
115 (name "ruby-builder")
116 (version "3.2.4")
117 (source (origin
118 (method url-fetch)
119 (uri (rubygems-uri "builder" version))
120 (sha256
121 (base32
122 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
123 (build-system ruby-build-system)
124 (arguments
125 (list
126 #:phases
127 #~(modify-phases %standard-phases
128 (add-after 'unpack 'patch
129 (lambda _
130 (substitute* "rakelib/tags.rake"
131 (("File\\.exists\\?") "File.exist?"))
132
133 ;; TODO This test is broken
134 ;; https://github.com/tenderlove/builder/issues/13
135 (substitute* "test/test_blankslate.rb"
136 (("test_late_included_module_in_kernel_is_ok")
137 "test_late_included_module_in_kernel_is_ok
138 skip(\"test expected to fail\")
139"))
140 (substitute* "rakelib/tags.rake"
141 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")))))))
142 (synopsis "Ruby library to create structured data")
143 (description "Builder provides a number of builder objects that make it
144easy to create structured data. Currently the following builder objects are
145supported: XML Markup and XML Events.")
146 (home-page "https://github.com/tenderlove/builder")
147 (license license:expat)))
148
149(define-public ruby-cucumber-ci-environment
150 (package
151 (name "ruby-cucumber-ci-environment")
152 (version "9.1.0")
153 (source (origin
154 (method url-fetch)
155 (uri (rubygems-uri "cucumber-ci-environment" version))
156 (sha256
157 (base32
158 "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7"))))
159 (build-system ruby-build-system)
160 (arguments (list #:phases #~(modify-phases %standard-phases
161 (replace 'check
162 (lambda* (#:key tests? #:allow-other-keys)
163 (when tests?
164 (invoke "rspec")))))))
165 (native-inputs (list ruby-rspec))
166 (synopsis "Detect CI Environment from environment variables")
167 (description "This is a Ruby utility library for Cucumber that detects a
168CI environment from environment variables.")
169 (home-page "https://github.com/cucumber/ci-environment")
170 (license license:expat)))
171
172(define-public ruby-cucumber-compatibility-kit
173 (package
174 (name "ruby-cucumber-compatibility-kit")
175 (version "11.2.0")
176 (source (origin
177 (method url-fetch)
178 (uri (rubygems-uri "cucumber-compatibility-kit" version))
179 (sha256
180 (base32
181 "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q"))))
182 (build-system ruby-build-system)
183 (arguments (list #:phases #~(modify-phases %standard-phases
184 (replace 'check
185 (lambda* (#:key tests? #:allow-other-keys)
186 (when tests?
187 (invoke "rspec")))))))
188 (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec))
189 (synopsis "Cucumber compatibility verification utility")
190 (description "The Cucumber Compatibility Kit (CCK) aims to validate a
191Cucumber implementation's support for the Cucumber Messages protocol.")
192 (home-page "https://github.com/cucumber/compatibility-kit")
193 (license license:expat)))
194
195;;; Variant package to break a cycle with ruby-cucumber-messages.
196(define ruby-cucumber-compatibility-kit-bootstrap
197 (package/inherit ruby-cucumber-compatibility-kit
198 (arguments (list #:tests? #f))
199 (propagated-inputs (modify-inputs (package-propagated-inputs
200 ruby-cucumber-compatibility-kit)
201 (delete "ruby-cucumber-messages")))))
202
203(define-public ruby-cucumber-core
204 (package
205 (name "ruby-cucumber-core")
206 (version "11.1.0")
207 (source
208 (origin
209 (method git-fetch)
210 (uri (git-reference
211 (url "https://github.com/cucumber/cucumber-ruby-core")
212 (commit (string-append "v" version))))
213 (file-name (git-file-name name version))
214 (sha256
215 (base32
216 "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh"))))
217 (build-system ruby-build-system)
218 (arguments (list #:test-target "spec"
219 #:phases
220 #~(modify-phases %standard-phases
221 (add-after 'extract-gemspec 'relax-version-requirements
222 (lambda _
223 (substitute* "cucumber-core.gemspec"
224 (("'cucumber-tag-expressions',.*")
225 "'cucumber-tag-expressions', '>=4.1.0'\n")))))))
226 (native-inputs
227 (list ruby-rspec
228 ruby-rubocop/minimal
229 ruby-simplecov
230 ruby-unindent))
231 (propagated-inputs
232 (list ruby-cucumber-gherkin
233 ruby-cucumber-messages
234 ruby-cucumber-tag-expressions))
235 (synopsis "Core library for the Cucumber BDD app")
236 (description "Cucumber is a tool for running automated tests
237written in plain language. Because they're written in plain language,
238they can be read by anyone on your team. Because they can be read by
239anyone, you can use them to help improve communication, collaboration
240and trust on your team.")
241 (home-page "https://cucumber.io/")
242 (license license:expat)))
243
244(define-public ruby-cucumber-expressions
245 (package
246 (name "ruby-cucumber-expressions")
247 (version "16.1.2")
248 (source
249 (origin
250 (method git-fetch)
251 (uri (git-reference
252 (url "https://github.com/cucumber/cucumber-expressions")
253 (commit (string-append "v" version))))
254 (file-name (git-file-name name version))
255 (sha256
256 (base32
257 "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id"))))
258 (build-system ruby-build-system)
259 (arguments
260 (list #:test-target "spec"
261 #:phases #~(modify-phases %standard-phases
262 (add-after 'unpack 'chdir
263 (lambda _
264 (chdir "ruby"))))))
265 (native-inputs (list ruby-rspec ruby-simplecov))
266 (synopsis "Simpler alternative to Regular Expressions")
267 (description "Cucumber Expressions offer similar functionality to Regular
268Expressions, with a syntax that is easier to read and write. Cucumber
269Expressions are extensible with parameter types.")
270 (home-page "https://github.com/cucumber/cucumber-expressions/")
271 (license license:expat)))
272
273(define-public ruby-cucumber-gherkin
274 (package
275 (name "ruby-cucumber-gherkin")
276 (version "26.1.0")
277 (source (origin
278 (method git-fetch)
279 (uri (git-reference
280 (url "https://github.com/cucumber/gherkin")
281 (commit (string-append "v" version))))
282 (file-name (git-file-name name version))
283 (sha256
284 (base32
285 "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn"))))
286 (build-system ruby-build-system)
287 (arguments (list #:test-target "spec"
288 #:phases #~(modify-phases %standard-phases
289 (add-after 'unpack 'chdir
290 (lambda _
291 (chdir "ruby"))))))
292 (native-inputs (list ruby-rspec))
293 (propagated-inputs (list ruby-cucumber-messages))
294 (synopsis "Gherkin parser for Ruby")
295 (description "Gherkin is a parser and compiler for the Gherkin language.
296It is intended be used by all Cucumber implementations to parse
297@file{.feature} files.")
298 (home-page "https://github.com/cucumber/gherkin")
299 (license license:expat)))
300
301(define-public ruby-cucumber-html-formatter
302 (package
303 (name "ruby-cucumber-html-formatter")
304 (version "20.2.1")
305 (source
306 (origin
307 (method url-fetch)
308 (uri (rubygems-uri "cucumber-html-formatter" version))
309 (sha256
310 (base32
311 "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4"))))
312 (build-system ruby-build-system)
313 (arguments
314 (list #:phases #~(modify-phases %standard-phases
315 (add-after 'extract-gemspec 'relax-requirements
316 (lambda _
317 (substitute* ".gemspec"
318 (("~> 18.0") "~> 21.0")))) ;cucumber-messages
319 (replace 'check
320 (lambda* (#:key tests? #:allow-other-keys)
321 (when tests?
322 (invoke "rspec")))))))
323 (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec))
324 (propagated-inputs (list ruby-cucumber-messages))
325 (synopsis "HTML formatter for Cucumber")
326 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
327runs. It is built on top of cucumber-react and works with any Cucumber
328implementation with a protocol buffer formatter that outputs Cucumber
329messages.")
330 (home-page "https://github.com/cucumber/html-formatter")
331 (license license:expat)))
332
333(define-public ruby-cucumber-messages
334 (package
335 (name "ruby-cucumber-messages")
336 (version "21.0.1")
337 (source (origin
338 (method url-fetch)
339 (uri (rubygems-uri "cucumber-messages" version))
340 (sha256
341 (base32
342 "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i"))))
343 (build-system ruby-build-system)
344 (arguments
345 (list #:phases
346 #~(modify-phases %standard-phases
347 ;; The test suite requires the gem to be installed, so move it
348 ;; after the install phase.
349 (delete 'check)
350 (add-after 'install 'check
351 (lambda* (#:key tests? #:allow-other-keys)
352 (setenv "GEM_PATH" (string-append
353 (getenv "GEM_PATH") ":"
354 #$output "/lib/ruby/vendor_ruby"))
355 (when tests?
356 (invoke "rspec")))))))
357 (native-inputs
358 (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec))
359 (home-page "https://github.com/cucumber/messages/")
360 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
361 (description "Cucumber Messages for Ruby is a library which allows
362serialization and deserialization of the protocol buffer messages used in
363Cucumber.")
364 (license license:expat)))
365
366(define-public ruby-cucumber-tag-expressions
367 (package
368 (name "ruby-cucumber-tag-expressions")
369 (version "5.0.1")
370 (source
371 (origin
372 (method git-fetch)
373 (uri (git-reference
374 (url "https://github.com/cucumber/tag-expressions")
375 (commit (string-append "v" version))))
376 (file-name (git-file-name name version))
377 (sha256
378 (base32
379 "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w"))))
380 (build-system ruby-build-system)
381 (arguments
382 (list #:test-target "spec"
383 #:phases #~(modify-phases %standard-phases
384 (add-after 'unpack 'chdir
385 (lambda _
386 (chdir "ruby"))))))
387 (native-inputs (list ruby-rspec))
388 (synopsis "Cucumber tag expressions for Ruby")
389 (description "Cucumber tag expression parser for Ruby. A tag expression
390is an infix boolean expression used by Cucumber.")
391 (home-page "https://github.com/cucumber/tag-expressions")
392 (license license:expat)))
393
394(define-public ruby-cucumber-wire
395 (package
396 (name "ruby-cucumber-wire")
397 (version "6.2.1")
398 (source
399 (origin
400 (method url-fetch)
401 (uri (rubygems-uri "cucumber-wire" version))
402 (sha256
403 (base32
404 "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9"))))
405 (build-system ruby-build-system)
406 (arguments
407 (list #:tests? #f)) ;tests use cucumber, causing a cycle
408 (propagated-inputs
409 (list ruby-cucumber-core ruby-cucumber-expressions
410 ruby-cucumber-messages))
411 (synopsis "Cucumber wire protocol plugin")
412 (description "Cucumber's wire protocol allows step definitions to be
413implemented and invoked on any platform.")
414 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
415 (license license:expat)))
416
417(define-public ruby-diff-lcs
418 (package
419 (name "ruby-diff-lcs")
420 (version "1.3")
421 (source (origin
422 (method url-fetch)
423 (uri (rubygems-uri "diff-lcs" version))
424 (sha256
425 (base32
426 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
427 (build-system ruby-build-system)
428 (arguments
429 '(#:tests? #f)) ; avoid dependency cycles
430 (synopsis "Compute the difference between two Enumerable sequences")
431 (description "Diff::LCS computes the difference between two Enumerable
432sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
433It includes utilities to create a simple HTML diff output format and a
434standard diff-like tool.")
435 (home-page "https://github.com/halostatue/diff-lcs")
436 (license license:expat)))
437
438(define-public ruby-docile
439 (package
440 (name "ruby-docile")
441 (version "1.1.5")
442 (source
443 (origin
444 (method url-fetch)
445 (uri (rubygems-uri "docile" version))
446 (sha256
447 (base32
448 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
449 (build-system ruby-build-system)
450 (arguments
451 '(#:tests? #f)) ; needs github-markup, among others
452 (synopsis "Ruby EDSL helper library")
453 (description "Docile is a Ruby library that provides an interface for
454creating embedded domain specific languages (EDSLs) that manipulate existing
455Ruby classes.")
456 (home-page "https://ms-ati.github.io/docile/")
457 (license license:expat)))
458
459(define-public ruby-fivemat
460 (package
461 (name "ruby-fivemat")
462 (version "1.3.7")
463 (source
464 (origin
465 (method url-fetch)
466 (uri (rubygems-uri "fivemat" version))
467 (sha256
468 (base32
469 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
470 (build-system ruby-build-system)
471 (arguments
472 `(#:tests? #f)) ; no tests
473 (synopsis "Each test file given its own line of dots")
474 (description
475 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
476its own line of dots during testing. It aims to provide test output that is
477neither too verbose nor too minimal.")
478 (home-page "https://github.com/tpope/fivemat")
479 (license license:expat)))
480
481(define-public ruby-given-core
482 (package
483 (name "ruby-given-core")
484 (version "3.8.2")
485 (source
486 (origin
487 (method url-fetch)
488 (uri (rubygems-uri "given_core" version))
489 (sha256
490 (base32
491 "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s"))))
492 (build-system ruby-build-system)
493 (arguments '(#:tests? #f)) ;no test suite for the core package
494 (propagated-inputs
495 (list ruby-sorcerer))
496 (synopsis "Core abstractions used by rspec-given and minitest-given")
497 (description "Given_core is the basic functionality behind rspec-given and
498minitest-given, extensions that allow the use of Given/When/Then terminology
499when defining specifications.")
500 (home-page "https://github.com/rspec-given/rspec-given")
501 (license license:expat)))
502
503(define-public ruby-hoe
504 (package
505 (name "ruby-hoe")
506 (version "4.2.2")
507 (source (origin
508 (method url-fetch)
509 (uri (rubygems-uri "hoe" version))
510 (sha256
511 (base32
512 "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn"))))
513 (build-system ruby-build-system)
514 (arguments
515 (list
516 ;; Circular dependency with minitest
517 #:tests? #f))
518 (synopsis "Ruby project management helper")
519 (description
520 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
521maintain, and release projects and includes a dynamic plug-in system allowing
522for easy extensibility. Hoe ships with plug-ins for all the usual project
523tasks including rdoc generation, testing, packaging, deployment, and
524announcement.")
525 (home-page "https://www.zenspider.com/projects/hoe.html")
526 (license license:expat)))
527
528(define-public ruby-hoe-3
529 (package
530 (inherit ruby-hoe)
531 (version "3.26.0")
532 (source (origin
533 (method url-fetch)
534 (uri (rubygems-uri "hoe" version))
535 (sha256
536 (base32
537 "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
538
539(define-public ruby-json
540 (package
541 (name "ruby-json")
542 (version "2.1.0")
543 (source
544 (origin
545 (method url-fetch)
546 (uri (rubygems-uri "json" version))
547 (sha256
548 (base32
549 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
550 (build-system ruby-build-system)
551 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
552 (synopsis "JSON library for Ruby")
553 (description "This Ruby library provides a JSON implementation written as
554a native C extension.")
555 (home-page "http://json-jruby.rubyforge.org/")
556 (license (list license:ruby license:gpl2)))) ; GPL2 only
557
558(define-public ruby-mime-types
559 (package
560 (name "ruby-mime-types")
561 (version "3.4.1")
562 (source
563 (origin
564 (method url-fetch)
565 (uri (rubygems-uri "mime-types" version))
566 (sha256
567 (base32
568 "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"))))
569 (build-system ruby-build-system)
570 (propagated-inputs
571 (list ruby-mime-types-data))
572 (native-inputs
573 (list ruby-hoe
574 ruby-fivemat
575 ruby-minitest-focus
576 ruby-minitest-bonus-assertions
577 ruby-minitest-hooks))
578 (synopsis "Library and registry for MIME content type definitions")
579 (description "The mime-types library provides a library and registry for
580information about Multipurpose Internet Mail Extensions (MIME) content type
581definitions. It can be used to determine defined filename extensions for MIME
582types, or to use filename extensions to look up the likely MIME type
583definitions.")
584 (home-page "https://github.com/mime-types/ruby-mime-types")
585 (license license:expat)))
586
587(define-public ruby-mime-types-data
588 (package
589 (name "ruby-mime-types-data")
590 (version "3.2016.0521")
591 (source
592 (origin
593 (method url-fetch)
594 (uri (rubygems-uri "mime-types-data" version))
595 (sha256
596 (base32
597 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
598 (build-system ruby-build-system)
599 (native-inputs
600 (list ruby-hoe))
601 (synopsis "Registry for information about MIME media type definitions")
602 (description
603 "@code{mime-types-data} provides a registry for information about
604Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
605be used with the Ruby mime-types library or other software to determine
606defined filename extensions for MIME types, or to use filename extensions to
607look up the likely MIME type definitions.")
608 (home-page "https://github.com/mime-types/mime-types-data/")
609 (license license:expat)))
610
611(define-public ruby-mini-portile
612 (package
613 (name "ruby-mini-portile")
614 (version "0.6.2")
615 (source
616 (origin
617 (method url-fetch)
618 (uri (rubygems-uri "mini_portile" version))
619 (sha256
620 (base32
621 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
622 (build-system ruby-build-system)
623 (arguments
624 '(#:tests? #f)) ; tests require network access
625 (synopsis "Ports system for Ruby developers")
626 (description "Mini-portile is a port/recipe system for Ruby developers.
627It provides a standard way to compile against specific versions of libraries
628to reproduce user environments.")
629 (home-page "https://github.com/flavorjones/mini_portile")
630 (license license:expat)))
631
632(define-public ruby-mini-portile-2
633 (package
634 (inherit ruby-mini-portile)
635 (version "2.8.2")
636 (source (origin
637 (method url-fetch)
638 (uri (rubygems-uri "mini_portile2" version))
639 (sha256
640 (base32
641 "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"))))))
642
643(define-public ruby-minitest
644 (package
645 (name "ruby-minitest")
646 (version "5.18.1")
647 (source (origin
648 (method url-fetch)
649 (uri (rubygems-uri "minitest" version))
650 (sha256
651 (base32
652 "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb"))))
653 (build-system ruby-build-system)
654 (native-inputs (list ruby-hoe))
655 (home-page "https://github.com/minitest/minitest")
656 (synopsis "Small test suite library for Ruby")
657 (description "Minitest provides a complete suite of Ruby testing
658facilities supporting TDD, BDD, mocking, and benchmarking.")
659 (license license:expat)))
660
661(define-public ruby-minitest-bonus-assertions
662 (package
663 (name "ruby-minitest-bonus-assertions")
664 (version "3.0")
665 (source
666 (origin
667 (method url-fetch)
668 (uri (rubygems-uri "minitest-bonus-assertions" version))
669 (sha256
670 (base32
671 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
672 (build-system ruby-build-system)
673 (arguments
674 (list
675 #:tests? #f ; Test suite has bitrotted.
676 #:phases
677 #~(modify-phases %standard-phases
678 (add-before 'check 'clean-dependencies
679 (lambda _
680 ;; Remove unneeded require statement that would entail another
681 ;; dependency.
682 (substitute* "test/minitest_config.rb"
683 (("require 'minitest/bisect'") "")))))))
684 (native-inputs
685 (list ruby-hoe
686 ruby-minitest-focus
687 ruby-minitest-moar))
688 (synopsis "Bonus assertions for @code{Minitest}")
689 (description
690 "Minitest bonus assertions provides extra MiniTest assertions. For
691instance, it provides @code{assert_true}, @code{assert_false} and
692@code{assert_set_equal}.")
693 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
694 (license license:expat)))
695
696(define-public ruby-minitest-focus
697 (package
698 (name "ruby-minitest-focus")
699 (version "1.3.1")
700 (source
701 (origin
702 (method url-fetch)
703 (uri (rubygems-uri "minitest-focus" version))
704 (sha256
705 (base32
706 "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67"))))
707 (build-system ruby-build-system)
708 (propagated-inputs
709 (list ruby-minitest))
710 (native-inputs
711 (list ruby-hoe))
712 (synopsis "Allows a few specific tests to be focused on")
713 (description
714 "@code{minitest-focus} gives the ability focus on a few tests with ease
715without having to use command-line arguments. It introduces a @code{focus}
716class method for use in testing classes, specifying that the next defined test
717is to be run.")
718 (home-page "https://github.com/seattlerb/minitest-focus")
719 (license license:expat)))
720
721(define-public ruby-minitest-hooks
722 (package
723 (name "ruby-minitest-hooks")
724 (version "1.5.2")
725 (source
726 (origin
727 (method url-fetch)
728 (uri (rubygems-uri "minitest-hooks" version))
729 (sha256
730 (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5"))))
731 (build-system ruby-build-system)
732 (arguments
733 '(#:tests? #f)) ; No tests bundled.
734 (native-inputs
735 (list ruby-sequel ;ruby-sqlite3
736 ))
737 (synopsis "Hooks for the minitest framework")
738 (description
739 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
740@code{around_all} hooks for Minitest. This allows, for instance, running each
741suite of specs inside a database transaction, running each spec inside its own
742savepoint inside that transaction. This can significantly speed up testing
743for specs that share expensive database setup code.")
744 (home-page "https://github.com/jeremyevans/minitest-hooks")
745 (license license:expat)))
746
747(define-public ruby-minitest-moar
748 (package
749 (name "ruby-minitest-moar")
750 (version "0.0.4")
751 (source
752 (origin
753 (method url-fetch)
754 (uri (rubygems-uri "minitest-moar" version))
755 (sha256
756 (base32
757 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
758 (build-system ruby-build-system)
759 (arguments
760 `(#:phases
761 (modify-phases %standard-phases
762 (add-before 'check 'clean-dependencies
763 (lambda _
764 ;; Remove all gems defined in the Gemfile because these are not
765 ;; truly needed.
766 (substitute* "Gemfile"
767 (("gem .*") ""))
768 ;; Remove byebug as not needed to run tests.
769 (substitute* "test/test_helper.rb"
770 (("require 'byebug'") "")))))))
771 (native-inputs
772 (list bundler ruby-minitest))
773 (synopsis "Extra features and changes to MiniTest")
774 (description "@code{MiniTest Moar} add some additional features and
775changes some default behaviours in MiniTest. For instance, Moar replaces the
776MiniTest @code{Object#stub} with a global @code{stub} method.")
777 (home-page "https://github.com/dockyard/minitest-moar")
778 (license license:expat)))
779
780(define-public ruby-multi-test
781 (package
782 (name "ruby-multi-test")
783 (version "0.1.2")
784 (source
785 (origin
786 (method url-fetch)
787 (uri (rubygems-uri "multi_test" version))
788 (sha256
789 (base32
790 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
791 (build-system ruby-build-system)
792 (arguments
793 '(;; Tests require different sets of specific gem versions to be available,
794 ;; and there is no gemfile that specifies the newest versions of
795 ;; dependencies to be tested.
796 #:tests? #f))
797 (synopsis
798 "Interface to testing libraries loaded into a running Ruby process")
799 (description
800 "@code{multi_test} provides a uniform interface onto whatever testing
801libraries that have been loaded into a running Ruby process to help control
802rogue test/unit/autorun requires.")
803 (home-page "https://github.com/cucumber/multi_test")
804 (license license:expat)))
805
806(define-public ruby-rake
807 (package
808 (name "ruby-rake")
809 (version "13.0.6")
810 (source
811 (origin
812 (method git-fetch) ;for tests
813 (uri (git-reference
814 (url "https://github.com/ruby/rake")
815 (commit (string-append "v" version))))
816 (file-name (git-file-name name version))
817 (sha256
818 (base32
819 "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in"))))
820 (build-system ruby-build-system)
821 (native-inputs
822 (list bundler))
823 (synopsis "Rake is a Make-like program implemented in Ruby")
824 (description
825 "Rake is a Make-like program where tasks and dependencies are specified
826in standard Ruby syntax.")
827 (home-page "https://github.com/ruby/rake")
828 (license license:expat)))
829
830(define-public ruby-rake-compiler
831 (package
832 (name "ruby-rake-compiler")
833 (version "1.2.9")
834 (source (origin
835 (method url-fetch)
836 (uri (rubygems-uri "rake-compiler" version))
837 (sha256
838 (base32
839 "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs"))))
840 (build-system ruby-build-system)
841 (arguments
842 '(#:tests? #f)) ; needs cucumber
843 (synopsis "Building and packaging helper for Ruby native extensions")
844 (description "Rake-compiler provides a framework for building and
845packaging native C and Java extensions in Ruby.")
846 (home-page "https://github.com/rake-compiler/rake-compiler")
847 (license license:expat)))
848
849(define-public ruby-rake-compiler-dock
850 (package
851 (name "ruby-rake-compiler-dock")
852 (version "1.3.0")
853 (source (origin
854 (method url-fetch)
855 (uri (rubygems-uri "rake-compiler-dock" version))
856 (sha256
857 (base32
858 "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k"))))
859 (build-system ruby-build-system)
860 (arguments (list #:tests? #f)) ;test suite requires docker
861 (synopsis "Cross compiler environment for building Ruby gems")
862 (description "The code{rake-compiler-dock} gem provides a cross compiler
863environment for building gems on a variety of platforms (GNU/Linux, JRuby,
864Windows and Mac).")
865 (home-page "https://github.com/rake-compiler/rake-compiler-dock")
866 (license license:expat)))
867
868(define-public ruby-rubocop/minimal
869 (hidden-package
870 (package
871 (name "ruby-rubocop")
872 (version "1.68.0")
873 (source
874 (origin
875 (method git-fetch) ;no tests in distributed gem
876 (uri (git-reference
877 (url "https://github.com/rubocop/rubocop")
878 (commit (string-append "v" version))))
879 (file-name (git-file-name name version))
880 (sha256
881 (base32 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w"))))
882 (build-system ruby-build-system)
883 (arguments
884 (list #:tests? #f
885 #:phases
886 #~(modify-phases %standard-phases
887 (add-after 'unpack 'remove-runtime-dependencies
888 (lambda _
889 (substitute* "rubocop.gemspec"
890 (("s\\.add_dependency.*") "")))))))
891 (synopsis "Ruby code style checking tool")
892 (description
893 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
894the community-driven Ruby Style Guide.")
895 (home-page "https://github.com/rubocop/rubocop")
896 (license license:expat))))
897
898(define-public ruby-rspec
899 (package
900 (name "ruby-rspec")
901 (version "3.13.0")
902 (source (origin
903 (method url-fetch)
904 (uri (rubygems-uri "rspec" version))
905 (sha256
906 (base32
907 "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"))))
908 (build-system ruby-build-system)
909 (arguments
910 '(#:tests? #f)) ; avoid dependency cycles
911 (propagated-inputs
912 (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks))
913 (synopsis "Behavior-driven development framework for Ruby")
914 (description "RSpec is a behavior-driven development (BDD) framework for
915Ruby. This meta-package includes the RSpec test runner, along with the
916expectations and mocks frameworks.")
917 (home-page "https://rspec.info/")
918 (license license:expat)))
919
920(define-public ruby-rspec-2
921 (package (inherit ruby-rspec)
922 (version "2.14.1")
923 (source (origin
924 (method url-fetch)
925 (uri (rubygems-uri "rspec" version))
926 (sha256
927 (base32
928 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
929 (propagated-inputs
930 (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2))))
931
932(define-public ruby-rspec-core
933 (package
934 (name "ruby-rspec-core")
935 (version "3.13.2")
936 (source (origin
937 (method url-fetch)
938 (uri (rubygems-uri "rspec-core" version))
939 (sha256
940 (base32
941 "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"))))
942 (build-system ruby-build-system)
943 (arguments
944 '(#:tests? #f)) ; avoid dependency cycles
945 (propagated-inputs
946 (list ruby-rspec-support))
947 (synopsis "RSpec core library")
948 (description "Rspec-core provides the RSpec test runner and example
949groups.")
950 (home-page "https://github.com/rspec/rspec-core")
951 (license license:expat)))
952
953(define-public ruby-rspec-core-2
954 (package (inherit ruby-rspec-core)
955 (version "2.14.8")
956 (source (origin
957 (method url-fetch)
958 (uri (rubygems-uri "rspec-core" version))
959 (sha256
960 (base32
961 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
962 (arguments
963 (cons*
964 #:phases
965 #~(modify-phases %standard-phases
966 (add-after 'unpack 'patch
967 (lambda _
968 (substitute* "lib/rspec/core/ruby_project.rb"
969 (("File\\.exists\\?") "File.exist?")))))
970 (package-arguments ruby-rspec-core)))
971 (propagated-inputs `())))
972
973(define-public ruby-rspec-expectations
974 (package
975 (name "ruby-rspec-expectations")
976 (version "3.13.3")
977 (source (origin
978 (method url-fetch)
979 (uri (rubygems-uri "rspec-expectations" version))
980 (sha256
981 (base32
982 "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"))))
983 (build-system ruby-build-system)
984 (arguments
985 '(#:tests? #f)) ; avoid dependency cycles
986 (propagated-inputs
987 (list ruby-diff-lcs ruby-rspec-support))
988 (synopsis "RSpec expectations library")
989 (description "Rspec-expectations provides a simple API to express expected
990outcomes of a code example.")
991 (home-page "https://github.com/rspec/rspec-expectations")
992 (license license:expat)))
993
994(define-public ruby-rspec-expectations-2
995 (package (inherit ruby-rspec-expectations)
996 (version "2.14.5")
997 (source (origin
998 (method url-fetch)
999 (uri (rubygems-uri "rspec-expectations" version))
1000 (sha256
1001 (base32
1002 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
1003 (propagated-inputs
1004 (list ruby-diff-lcs))))
1005
1006(define-public ruby-rspec-mocks
1007 (package
1008 (name "ruby-rspec-mocks")
1009 (version "3.13.2")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (rubygems-uri "rspec-mocks" version))
1013 (sha256
1014 (base32
1015 "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"))))
1016 (build-system ruby-build-system)
1017 (arguments
1018 '(#:tests? #f)) ; avoid dependency cycles
1019 (propagated-inputs
1020 (list ruby-diff-lcs ruby-rspec-support))
1021 (synopsis "RSpec stubbing and mocking library")
1022 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
1023support for stubbing and mocking.")
1024 (home-page "https://github.com/rspec/rspec-mocks")
1025 (license license:expat)))
1026
1027(define-public ruby-rspec-mocks-2
1028 (package (inherit ruby-rspec-mocks)
1029 (version "2.14.6")
1030 (source (origin
1031 (method url-fetch)
1032 (uri (rubygems-uri "rspec-mocks" version))
1033 (sha256
1034 (base32
1035 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
1036 (propagated-inputs
1037 (list ruby-diff-lcs))))
1038
1039;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
1040;; dependencies use RSpec for their test suites! To avoid these circular
1041;; dependencies, we disable tests for all of the RSpec-related packages.
1042(define-public ruby-rspec-support
1043 (package
1044 (name "ruby-rspec-support")
1045 (version "3.13.2")
1046 (source (origin
1047 (method url-fetch)
1048 (uri (rubygems-uri "rspec-support" version))
1049 (sha256
1050 (base32
1051 "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"))))
1052 (build-system ruby-build-system)
1053 (arguments
1054 '(#:tests? #f)) ; avoid dependency cycles
1055 (synopsis "RSpec support library")
1056 (description "Support utilities for RSpec gems.")
1057 (home-page "https://github.com/rspec/rspec-support")
1058 (license license:expat)))
1059
1060(define-public ruby-sequel
1061 (package
1062 (name "ruby-sequel")
1063 (version "5.47.0")
1064 (source
1065 (origin
1066 (method url-fetch)
1067 (uri (rubygems-uri "sequel" version))
1068 (sha256
1069 (base32
1070 "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z"))))
1071 (build-system ruby-build-system)
1072 (arguments
1073 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
1074 (synopsis "Database toolkit for Ruby")
1075 (description "Sequel provides thread safety, connection pooling and a
1076concise DSL for constructing SQL queries and table schemas. It includes a
1077comprehensive ORM layer for mapping records to Ruby objects and handling
1078associated records.")
1079 (home-page "https://sequel.jeremyevans.net")
1080 (license license:expat)))
1081
1082(define-public ruby-simplecov-json-formatter
1083 (package
1084 (name "ruby-simplecov-json-formatter")
1085 (version "0.1.4")
1086 (source (origin
1087 (method url-fetch)
1088 (uri (rubygems-uri "simplecov_json_formatter" version))
1089 (sha256
1090 (base32
1091 "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"))))
1092 (build-system ruby-build-system)
1093 ;; The test suite is disabled because it requires simplecov, which
1094 ;; requires this, introducing a dependency cycle.
1095 (arguments (list #:tests? #f))
1096 (synopsis "JSON formatter for SimpleCov")
1097 (description "This package provides a JSON formatter for SimpleCov, the
1098Ruby code coverage tool.")
1099 (home-page
1100 "https://github.com/codeclimate-community/simplecov_json_formatter")
1101 (license license:expat)))
1102
1103(define-public ruby-simplecov
1104 (package
1105 (name "ruby-simplecov")
1106 (version "0.22.0")
1107 (source (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "simplecov" version))
1110 (sha256
1111 (base32
1112 "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"))))
1113 (build-system ruby-build-system)
1114 ;; Simplecov depends on rubocop for code style checking at build time.
1115 ;; Rubocop needs simplecov at build time.
1116 (arguments `(#:tests? #f))
1117 (propagated-inputs
1118 (list ruby-json
1119 ruby-docile
1120 ruby-simplecov-html
1121 ruby-simplecov-json-formatter))
1122 (synopsis "Code coverage framework for Ruby")
1123 (description "SimpleCov is a code coverage framework for Ruby with a
1124powerful configuration library and automatic merging of coverage across test
1125suites.")
1126 (home-page "https://github.com/simplecov-ruby/simplecov")
1127 (license license:expat)))
1128
1129(define-public ruby-simplecov-html
1130 (package
1131 (name "ruby-simplecov-html")
1132 (version "0.12.3")
1133 (source (origin
1134 (method url-fetch)
1135 (uri (rubygems-uri "simplecov-html" version))
1136 (sha256
1137 (base32
1138 "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"))))
1139 (build-system ruby-build-system)
1140 (arguments `(#:tests? #f)) ; there are no tests
1141 (native-inputs
1142 (list bundler))
1143 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1144 (description "This package provides the default HTML formatter for
1145the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1146 (home-page "https://github.com/simplecov-ruby/simplecov-html")
1147 (license license:expat)))
1148
1149(define-public ruby-sorcerer
1150 (package
1151 (name "ruby-sorcerer")
1152 (version "2.0.1")
1153 (source
1154 (origin
1155 (method url-fetch)
1156 (uri (rubygems-uri "sorcerer" version))
1157 (sha256
1158 (base32
1159 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
1160 (build-system ruby-build-system)
1161 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
1162 (description "Sorcerer generates Ruby code from a Ripper-like abstract
1163syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
1164snippets of Ruby code, expressible in a single line. Longer examples may be
1165re-sourced, but they will be rendered in a single-line format.")
1166 (home-page "https://github.com/rspec-given/sorcerer")
1167 (license license:expat)))
1168
1169(define-public ruby-unindent
1170 (package
1171 (name "ruby-unindent")
1172 (version "1.0")
1173 (source
1174 (origin
1175 (method url-fetch)
1176 (uri (rubygems-uri "unindent" version))
1177 (sha256
1178 (base32
1179 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
1180 (build-system ruby-build-system)
1181 (synopsis "Ruby method to unindent strings")
1182 (description "This module provides a @code{String#unindent} Ruby method to
1183unindent strings, which can be useful to unindent multiline strings embedded
1184in already-indented code.")
1185 (home-page "https://github.com/mynyml/unindent")
1186 (license license:expat)))
1187
33;;; 1188;;;
34;;; Avoid adding new packages to the end of this file. To reduce the chances 1189;;; Avoid adding new packages to the end of this file. To reduce the chances
35;;; of a merge conflict, place them above in alphabetic order. 1190;;; of a merge conflict, place them above in alphabetic order.