projects/guix·blob bootstrap-team · refs

1173 lines · 43.3 KiB

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