diff options
Diffstat (limited to 'gnu/packages/ruby-check.scm')
-rw-r--r-- | gnu/packages/ruby-check.scm | 1157 |
1 files changed, 1156 insertions, 1 deletions
diff --git a/gnu/packages/ruby-check.scm b/gnu/packages/ruby-check.scm index bb42267b12..5db07ff240 100644 --- a/gnu/packages/ruby-check.scm +++ b/gnu/packages/ruby-check.scm @@ -1,4 +1,37 @@ ;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com> +;;; Copyright © 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl> +;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016 Muriithi Frederick Muriuki <fredmanglis@gmail.com> +;;; Copyright © 2017-2020, 2023 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 nikita <nikita@n0.is> +;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> +;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca> +;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> +;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com> +;;; Copyright © 2020 Holger Peters <holger.peters@posteo.de> +;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org> +;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2021 EuAndreh <eu@euandre.org> +;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org> +;;; Copyright © 2022, 2024 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com> +;;; Copyright © 2022 Stephen Paul Weber <singpolyma@singpolyma.net> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> +;;; Copyright © 2022 Tom Fitzhenry <tom@tom-fitzhenry.me.uk> +;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com> +;;; Copyright © 2023 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> +;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,10 +51,13 @@ (define-module (gnu packages ruby-check) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system ruby) + #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) - #:use-module (gnu packages)) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages ruby)) ;;; Commentary: ;;; @@ -30,6 +66,1125 @@ ;;; Code: +;; Bundler is yet another source of circular dependencies, so we must disable +;; its test suite as well. +(define-public bundler + (package + (name "bundler") + (version "2.4.18") + (source (origin + (method url-fetch) + (uri (rubygems-uri "bundler" version)) + (sha256 + (base32 + "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "Ruby gem bundler") + (description "Bundler automatically downloads and installs a list of gems +specified in a \"Gemfile\", as well as their dependencies.") + (home-page "https://bundler.io/") + (license license:expat))) + +(define-public ruby-asciidoctor/minimal + (hidden-package + (package + (name "ruby-asciidoctor") + (version "2.0.20") + (source + (origin + (method git-fetch) ;the gem release lacks a Rakefile + (uri (git-reference + (url "https://github.com/asciidoctor/asciidoctor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) + (synopsis "Converter from AsciiDoc content to other formats") + (description "Asciidoctor is a text processor and publishing toolchain for +converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.") + (home-page "https://asciidoctor.org") + (license license:expat)))) + +(define-public ruby-builder + (package + (name "ruby-builder") + (version "3.2.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "builder" version)) + (sha256 + (base32 + "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr")))) + (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "rakelib/tags.rake" + (("File\\.exists\\?") "File.exist?")) + + ;; TODO This test is broken + ;; https://github.com/tenderlove/builder/issues/13 + (substitute* "test/test_blankslate.rb" + (("test_late_included_module_in_kernel_is_ok") + "test_late_included_module_in_kernel_is_ok + skip(\"test expected to fail\") +")) + (substitute* "rakelib/tags.rake" + (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))))))) + (synopsis "Ruby library to create structured data") + (description "Builder provides a number of builder objects that make it +easy to create structured data. Currently the following builder objects are +supported: XML Markup and XML Events.") + (home-page "https://github.com/tenderlove/builder") + (license license:expat))) + +(define-public ruby-cucumber-ci-environment + (package + (name "ruby-cucumber-ci-environment") + (version "9.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-ci-environment" version)) + (sha256 + (base32 + "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-rspec)) + (synopsis "Detect CI Environment from environment variables") + (description "This is a Ruby utility library for Cucumber that detects a +CI environment from environment variables.") + (home-page "https://github.com/cucumber/ci-environment") + (license license:expat))) + +(define-public ruby-cucumber-compatibility-kit + (package + (name "ruby-cucumber-compatibility-kit") + (version "11.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-compatibility-kit" version)) + (sha256 + (base32 + "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q")))) + (build-system ruby-build-system) + (arguments (list #:phases #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec)) + (synopsis "Cucumber compatibility verification utility") + (description "The Cucumber Compatibility Kit (CCK) aims to validate a +Cucumber implementation's support for the Cucumber Messages protocol.") + (home-page "https://github.com/cucumber/compatibility-kit") + (license license:expat))) + +;;; Variant package to break a cycle with ruby-cucumber-messages. +(define ruby-cucumber-compatibility-kit-bootstrap + (package/inherit ruby-cucumber-compatibility-kit + (arguments (list #:tests? #f)) + (propagated-inputs (modify-inputs (package-propagated-inputs + ruby-cucumber-compatibility-kit) + (delete "ruby-cucumber-messages"))))) + +(define-public ruby-cucumber-core + (package + (name "ruby-cucumber-core") + (version "11.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/cucumber-ruby-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-version-requirements + (lambda _ + (substitute* "cucumber-core.gemspec" + (("'cucumber-tag-expressions',.*") + "'cucumber-tag-expressions', '>=4.1.0'\n"))))))) + (native-inputs + (list ruby-rspec + ruby-rubocop/minimal + ruby-simplecov + ruby-unindent)) + (propagated-inputs + (list ruby-cucumber-gherkin + ruby-cucumber-messages + ruby-cucumber-tag-expressions)) + (synopsis "Core library for the Cucumber BDD app") + (description "Cucumber is a tool for running automated tests +written in plain language. Because they're written in plain language, +they can be read by anyone on your team. Because they can be read by +anyone, you can use them to help improve communication, collaboration +and trust on your team.") + (home-page "https://cucumber.io/") + (license license:expat))) + +(define-public ruby-cucumber-expressions + (package + (name "ruby-cucumber-expressions") + (version "16.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/cucumber-expressions") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec ruby-simplecov)) + (synopsis "Simpler alternative to Regular Expressions") + (description "Cucumber Expressions offer similar functionality to Regular +Expressions, with a syntax that is easier to read and write. Cucumber +Expressions are extensible with parameter types.") + (home-page "https://github.com/cucumber/cucumber-expressions/") + (license license:expat))) + +(define-public ruby-cucumber-gherkin + (package + (name "ruby-cucumber-gherkin") + (version "26.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/gherkin") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn")))) + (build-system ruby-build-system) + (arguments (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec)) + (propagated-inputs (list ruby-cucumber-messages)) + (synopsis "Gherkin parser for Ruby") + (description "Gherkin is a parser and compiler for the Gherkin language. +It is intended be used by all Cucumber implementations to parse +@file{.feature} files.") + (home-page "https://github.com/cucumber/gherkin") + (license license:expat))) + +(define-public ruby-cucumber-html-formatter + (package + (name "ruby-cucumber-html-formatter") + (version "20.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-html-formatter" version)) + (sha256 + (base32 + "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4")))) + (build-system ruby-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* ".gemspec" + (("~> 18.0") "~> 21.0")))) ;cucumber-messages + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rspec"))))))) + (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec)) + (propagated-inputs (list ruby-cucumber-messages)) + (synopsis "HTML formatter for Cucumber") + (description "Cucumber HTML Formatter produces a HTML report for Cucumber +runs. It is built on top of cucumber-react and works with any Cucumber +implementation with a protocol buffer formatter that outputs Cucumber +messages.") + (home-page "https://github.com/cucumber/html-formatter") + (license license:expat))) + +(define-public ruby-cucumber-messages + (package + (name "ruby-cucumber-messages") + (version "21.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-messages" version)) + (sha256 + (base32 + "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i")))) + (build-system ruby-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; The test suite requires the gem to be installed, so move it + ;; after the install phase. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (setenv "GEM_PATH" (string-append + (getenv "GEM_PATH") ":" + #$output "/lib/ruby/vendor_ruby")) + (when tests? + (invoke "rspec"))))))) + (native-inputs + (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec)) + (home-page "https://github.com/cucumber/messages/") + (synopsis "Cucumber Messages for Ruby (Protocol Buffers)") + (description "Cucumber Messages for Ruby is a library which allows +serialization and deserialization of the protocol buffer messages used in +Cucumber.") + (license license:expat))) + +(define-public ruby-cucumber-tag-expressions + (package + (name "ruby-cucumber-tag-expressions") + (version "5.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cucumber/tag-expressions") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w")))) + (build-system ruby-build-system) + (arguments + (list #:test-target "spec" + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "ruby")))))) + (native-inputs (list ruby-rspec)) + (synopsis "Cucumber tag expressions for Ruby") + (description "Cucumber tag expression parser for Ruby. A tag expression +is an infix boolean expression used by Cucumber.") + (home-page "https://github.com/cucumber/tag-expressions") + (license license:expat))) + +(define-public ruby-cucumber-wire + (package + (name "ruby-cucumber-wire") + (version "6.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "cucumber-wire" version)) + (sha256 + (base32 + "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f)) ;tests use cucumber, causing a cycle + (propagated-inputs + (list ruby-cucumber-core ruby-cucumber-expressions + ruby-cucumber-messages)) + (synopsis "Cucumber wire protocol plugin") + (description "Cucumber's wire protocol allows step definitions to be +implemented and invoked on any platform.") + (home-page "https://github.com/cucumber/cucumber-ruby-wire") + (license license:expat))) + +(define-public ruby-diff-lcs + (package + (name "ruby-diff-lcs") + (version "1.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "diff-lcs" version)) + (sha256 + (base32 + "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "Compute the difference between two Enumerable sequences") + (description "Diff::LCS computes the difference between two Enumerable +sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm. +It includes utilities to create a simple HTML diff output format and a +standard diff-like tool.") + (home-page "https://github.com/halostatue/diff-lcs") + (license license:expat))) + +(define-public ruby-docile + (package + (name "ruby-docile") + (version "1.1.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "docile" version)) + (sha256 + (base32 + "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs github-markup, among others + (synopsis "Ruby EDSL helper library") + (description "Docile is a Ruby library that provides an interface for +creating embedded domain specific languages (EDSLs) that manipulate existing +Ruby classes.") + (home-page "https://ms-ati.github.io/docile/") + (license license:expat))) + +(define-public ruby-fivemat + (package + (name "ruby-fivemat") + (version "1.3.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "fivemat" version)) + (sha256 + (base32 + "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (synopsis "Each test file given its own line of dots") + (description + "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file +its own line of dots during testing. It aims to provide test output that is +neither too verbose nor too minimal.") + (home-page "https://github.com/tpope/fivemat") + (license license:expat))) + +(define-public ruby-given-core + (package + (name "ruby-given-core") + (version "3.8.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "given_core" version)) + (sha256 + (base32 + "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ;no test suite for the core package + (propagated-inputs + (list ruby-sorcerer)) + (synopsis "Core abstractions used by rspec-given and minitest-given") + (description "Given_core is the basic functionality behind rspec-given and +minitest-given, extensions that allow the use of Given/When/Then terminology +when defining specifications.") + (home-page "https://github.com/rspec-given/rspec-given") + (license license:expat))) + +(define-public ruby-hoe + (package + (name "ruby-hoe") + (version "4.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hoe" version)) + (sha256 + (base32 + "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn")))) + (build-system ruby-build-system) + (arguments + (list + ;; Circular dependency with minitest + #:tests? #f)) + (synopsis "Ruby project management helper") + (description + "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage, +maintain, and release projects and includes a dynamic plug-in system allowing +for easy extensibility. Hoe ships with plug-ins for all the usual project +tasks including rdoc generation, testing, packaging, deployment, and +announcement.") + (home-page "https://www.zenspider.com/projects/hoe.html") + (license license:expat))) + +(define-public ruby-hoe-3 + (package + (inherit ruby-hoe) + (version "3.26.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hoe" version)) + (sha256 + (base32 + "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63")))))) + +(define-public ruby-json + (package + (name "ruby-json") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "json" version)) + (sha256 + (base32 + "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; dependency cycle with sdoc + (synopsis "JSON library for Ruby") + (description "This Ruby library provides a JSON implementation written as +a native C extension.") + (home-page "http://json-jruby.rubyforge.org/") + (license (list license:ruby license:gpl2)))) ; GPL2 only + +(define-public ruby-mime-types + (package + (name "ruby-mime-types") + (version "3.4.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types" version)) + (sha256 + (base32 + "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-mime-types-data)) + (native-inputs + (list ruby-hoe + ruby-fivemat + ruby-minitest-focus + ruby-minitest-bonus-assertions + ruby-minitest-hooks)) + (synopsis "Library and registry for MIME content type definitions") + (description "The mime-types library provides a library and registry for +information about Multipurpose Internet Mail Extensions (MIME) content type +definitions. It can be used to determine defined filename extensions for MIME +types, or to use filename extensions to look up the likely MIME type +definitions.") + (home-page "https://github.com/mime-types/ruby-mime-types") + (license license:expat))) + +(define-public ruby-mime-types-data + (package + (name "ruby-mime-types-data") + (version "3.2016.0521") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types-data" version)) + (sha256 + (base32 + "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm")))) + (build-system ruby-build-system) + (native-inputs + (list ruby-hoe)) + (synopsis "Registry for information about MIME media type definitions") + (description + "@code{mime-types-data} provides a registry for information about +Multipurpose Internet Mail Extensions (MIME) media type definitions. It can +be used with the Ruby mime-types library or other software to determine +defined filename extensions for MIME types, or to use filename extensions to +look up the likely MIME type definitions.") + (home-page "https://github.com/mime-types/mime-types-data/") + (license license:expat))) + +(define-public ruby-mini-portile + (package + (name "ruby-mini-portile") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mini_portile" version)) + (sha256 + (base32 + "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; tests require network access + (synopsis "Ports system for Ruby developers") + (description "Mini-portile is a port/recipe system for Ruby developers. +It provides a standard way to compile against specific versions of libraries +to reproduce user environments.") + (home-page "https://github.com/flavorjones/mini_portile") + (license license:expat))) + +(define-public ruby-mini-portile-2 + (package + (inherit ruby-mini-portile) + (version "2.8.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mini_portile2" version)) + (sha256 + (base32 + "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6")))))) + +(define-public ruby-minitest + (package + (name "ruby-minitest") + (version "5.18.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "minitest" version)) + (sha256 + (base32 + "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb")))) + (build-system ruby-build-system) + (native-inputs (list ruby-hoe)) + (home-page "https://github.com/minitest/minitest") + (synopsis "Small test suite library for Ruby") + (description "Minitest provides a complete suite of Ruby testing +facilities supporting TDD, BDD, mocking, and benchmarking.") + (license license:expat))) + +(define-public ruby-minitest-bonus-assertions + (package + (name "ruby-minitest-bonus-assertions") + (version "3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-bonus-assertions" version)) + (sha256 + (base32 + "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; Test suite has bitrotted. + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove unneeded require statement that would entail another + ;; dependency. + (substitute* "test/minitest_config.rb" + (("require 'minitest/bisect'") ""))))))) + (native-inputs + (list ruby-hoe + ruby-minitest-focus + ruby-minitest-moar)) + (synopsis "Bonus assertions for @code{Minitest}") + (description + "Minitest bonus assertions provides extra MiniTest assertions. For +instance, it provides @code{assert_true}, @code{assert_false} and +@code{assert_set_equal}.") + (home-page "https://github.com/halostatue/minitest-bonus-assertions") + (license license:expat))) + +(define-public ruby-minitest-focus + (package + (name "ruby-minitest-focus") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-focus" version)) + (sha256 + (base32 + "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67")))) + (build-system ruby-build-system) + (propagated-inputs + (list ruby-minitest)) + (native-inputs + (list ruby-hoe)) + (synopsis "Allows a few specific tests to be focused on") + (description + "@code{minitest-focus} gives the ability focus on a few tests with ease +without having to use command-line arguments. It introduces a @code{focus} +class method for use in testing classes, specifying that the next defined test +is to be run.") + (home-page "https://github.com/seattlerb/minitest-focus") + (license license:expat))) + +(define-public ruby-minitest-hooks + (package + (name "ruby-minitest-hooks") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-hooks" version)) + (sha256 + (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No tests bundled. + (native-inputs + (list ruby-sequel ;ruby-sqlite3 + )) + (synopsis "Hooks for the minitest framework") + (description + "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all}, +@code{around_all} hooks for Minitest. This allows, for instance, running each +suite of specs inside a database transaction, running each spec inside its own +savepoint inside that transaction. This can significantly speed up testing +for specs that share expensive database setup code.") + (home-page "https://github.com/jeremyevans/minitest-hooks") + (license license:expat))) + +(define-public ruby-minitest-moar + (package + (name "ruby-minitest-moar") + (version "0.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-moar" version)) + (sha256 + (base32 + "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove all gems defined in the Gemfile because these are not + ;; truly needed. + (substitute* "Gemfile" + (("gem .*") "")) + ;; Remove byebug as not needed to run tests. + (substitute* "test/test_helper.rb" + (("require 'byebug'") ""))))))) + (native-inputs + (list bundler ruby-minitest)) + (synopsis "Extra features and changes to MiniTest") + (description "@code{MiniTest Moar} add some additional features and +changes some default behaviours in MiniTest. For instance, Moar replaces the +MiniTest @code{Object#stub} with a global @code{stub} method.") + (home-page "https://github.com/dockyard/minitest-moar") + (license license:expat))) + +(define-public ruby-multi-test + (package + (name "ruby-multi-test") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "multi_test" version)) + (sha256 + (base32 + "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd")))) + (build-system ruby-build-system) + (arguments + '(;; Tests require different sets of specific gem versions to be available, + ;; and there is no gemfile that specifies the newest versions of + ;; dependencies to be tested. + #:tests? #f)) + (synopsis + "Interface to testing libraries loaded into a running Ruby process") + (description + "@code{multi_test} provides a uniform interface onto whatever testing +libraries that have been loaded into a running Ruby process to help control +rogue test/unit/autorun requires.") + (home-page "https://github.com/cucumber/multi_test") + (license license:expat))) + +(define-public ruby-rake + (package + (name "ruby-rake") + (version "13.0.6") + (source + (origin + (method git-fetch) ;for tests + (uri (git-reference + (url "https://github.com/ruby/rake") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in")))) + (build-system ruby-build-system) + (native-inputs + (list bundler)) + (synopsis "Rake is a Make-like program implemented in Ruby") + (description + "Rake is a Make-like program where tasks and dependencies are specified +in standard Ruby syntax.") + (home-page "https://github.com/ruby/rake") + (license license:expat))) + +(define-public ruby-rake-compiler + (package + (name "ruby-rake-compiler") + (version "1.2.9") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rake-compiler" version)) + (sha256 + (base32 + "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; needs cucumber + (synopsis "Building and packaging helper for Ruby native extensions") + (description "Rake-compiler provides a framework for building and +packaging native C and Java extensions in Ruby.") + (home-page "https://github.com/rake-compiler/rake-compiler") + (license license:expat))) + +(define-public ruby-rake-compiler-dock + (package + (name "ruby-rake-compiler-dock") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rake-compiler-dock" version)) + (sha256 + (base32 + "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k")))) + (build-system ruby-build-system) + (arguments (list #:tests? #f)) ;test suite requires docker + (synopsis "Cross compiler environment for building Ruby gems") + (description "The code{rake-compiler-dock} gem provides a cross compiler +environment for building gems on a variety of platforms (GNU/Linux, JRuby, +Windows and Mac).") + (home-page "https://github.com/rake-compiler/rake-compiler-dock") + (license license:expat))) + +(define-public ruby-rubocop/minimal + (hidden-package + (package + (name "ruby-rubocop") + (version "1.68.0") + (source + (origin + (method git-fetch) ;no tests in distributed gem + (uri (git-reference + (url "https://github.com/rubocop/rubocop") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w")))) + (build-system ruby-build-system) + (arguments + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'remove-runtime-dependencies + (lambda _ + (substitute* "rubocop.gemspec" + (("s\\.add_dependency.*") ""))))))) + (synopsis "Ruby code style checking tool") + (description + "@code{rubocop} is a Ruby code style checking tool. It aims to enforce +the community-driven Ruby Style Guide.") + (home-page "https://github.com/rubocop/rubocop") + (license license:expat)))) + +(define-public ruby-rspec + (package + (name "ruby-rspec") + (version "3.13.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec" version)) + (sha256 + (base32 + "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks)) + (synopsis "Behavior-driven development framework for Ruby") + (description "RSpec is a behavior-driven development (BDD) framework for +Ruby. This meta-package includes the RSpec test runner, along with the +expectations and mocks frameworks.") + (home-page "https://rspec.info/") + (license license:expat))) + +(define-public ruby-rspec-2 + (package (inherit ruby-rspec) + (version "2.14.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec" version)) + (sha256 + (base32 + "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg")))) + (propagated-inputs + (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2)))) + +(define-public ruby-rspec-core + (package + (name "ruby-rspec-core") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-core" version)) + (sha256 + (base32 + "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-rspec-support)) + (synopsis "RSpec core library") + (description "Rspec-core provides the RSpec test runner and example +groups.") + (home-page "https://github.com/rspec/rspec-core") + (license license:expat))) + +(define-public ruby-rspec-core-2 + (package (inherit ruby-rspec-core) + (version "2.14.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-core" version)) + (sha256 + (base32 + "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc")))) + (arguments + (cons* + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + (substitute* "lib/rspec/core/ruby_project.rb" + (("File\\.exists\\?") "File.exist?"))))) + (package-arguments ruby-rspec-core))) + (propagated-inputs `()))) + +(define-public ruby-rspec-expectations + (package + (name "ruby-rspec-expectations") + (version "3.13.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-expectations" version)) + (sha256 + (base32 + "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-diff-lcs ruby-rspec-support)) + (synopsis "RSpec expectations library") + (description "Rspec-expectations provides a simple API to express expected +outcomes of a code example.") + (home-page "https://github.com/rspec/rspec-expectations") + (license license:expat))) + +(define-public ruby-rspec-expectations-2 + (package (inherit ruby-rspec-expectations) + (version "2.14.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-expectations" version)) + (sha256 + (base32 + "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9")))) + (propagated-inputs + (list ruby-diff-lcs)))) + +(define-public ruby-rspec-mocks + (package + (name "ruby-rspec-mocks") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-mocks" version)) + (sha256 + (base32 + "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (propagated-inputs + (list ruby-diff-lcs ruby-rspec-support)) + (synopsis "RSpec stubbing and mocking library") + (description "Rspec-mocks provides RSpec's \"test double\" framework, with +support for stubbing and mocking.") + (home-page "https://github.com/rspec/rspec-mocks") + (license license:expat))) + +(define-public ruby-rspec-mocks-2 + (package (inherit ruby-rspec-mocks) + (version "2.14.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-mocks" version)) + (sha256 + (base32 + "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30")))) + (propagated-inputs + (list ruby-diff-lcs)))) + +;; RSpec is the dominant testing library for Ruby projects. Even RSpec's +;; dependencies use RSpec for their test suites! To avoid these circular +;; dependencies, we disable tests for all of the RSpec-related packages. +(define-public ruby-rspec-support + (package + (name "ruby-rspec-support") + (version "3.13.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-support" version)) + (sha256 + (base32 + "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; avoid dependency cycles + (synopsis "RSpec support library") + (description "Support utilities for RSpec gems.") + (home-page "https://github.com/rspec/rspec-support") + (license license:expat))) + +(define-public ruby-sequel + (package + (name "ruby-sequel") + (version "5.47.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sequel" version)) + (sha256 + (base32 + "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks. + (synopsis "Database toolkit for Ruby") + (description "Sequel provides thread safety, connection pooling and a +concise DSL for constructing SQL queries and table schemas. It includes a +comprehensive ORM layer for mapping records to Ruby objects and handling +associated records.") + (home-page "https://sequel.jeremyevans.net") + (license license:expat))) + +(define-public ruby-simplecov-json-formatter + (package + (name "ruby-simplecov-json-formatter") + (version "0.1.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov_json_formatter" version)) + (sha256 + (base32 + "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j")))) + (build-system ruby-build-system) + ;; The test suite is disabled because it requires simplecov, which + ;; requires this, introducing a dependency cycle. + (arguments (list #:tests? #f)) + (synopsis "JSON formatter for SimpleCov") + (description "This package provides a JSON formatter for SimpleCov, the +Ruby code coverage tool.") + (home-page + "https://github.com/codeclimate-community/simplecov_json_formatter") + (license license:expat))) + +(define-public ruby-simplecov + (package + (name "ruby-simplecov") + (version "0.22.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov" version)) + (sha256 + (base32 + "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py")))) + (build-system ruby-build-system) + ;; Simplecov depends on rubocop for code style checking at build time. + ;; Rubocop needs simplecov at build time. + (arguments `(#:tests? #f)) + (propagated-inputs + (list ruby-json + ruby-docile + ruby-simplecov-html + ruby-simplecov-json-formatter)) + (synopsis "Code coverage framework for Ruby") + (description "SimpleCov is a code coverage framework for Ruby with a +powerful configuration library and automatic merging of coverage across test +suites.") + (home-page "https://github.com/simplecov-ruby/simplecov") + (license license:expat))) + +(define-public ruby-simplecov-html + (package + (name "ruby-simplecov-html") + (version "0.12.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov-html" version)) + (sha256 + (base32 + "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ; there are no tests + (native-inputs + (list bundler)) + (synopsis "Default HTML formatter for SimpleCov code coverage tool") + (description "This package provides the default HTML formatter for +the SimpleCov code coverage tool for Ruby version 1.9 and above.") + (home-page "https://github.com/simplecov-ruby/simplecov-html") + (license license:expat))) + +(define-public ruby-sorcerer + (package + (name "ruby-sorcerer") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sorcerer" version)) + (sha256 + (base32 + "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h")))) + (build-system ruby-build-system) + (synopsis "Ripper-style abstract syntax tree to Ruby source generator") + (description "Sorcerer generates Ruby code from a Ripper-like abstract +syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small +snippets of Ruby code, expressible in a single line. Longer examples may be +re-sourced, but they will be rendered in a single-line format.") + (home-page "https://github.com/rspec-given/sorcerer") + (license license:expat))) + +(define-public ruby-unindent + (package + (name "ruby-unindent") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unindent" version)) + (sha256 + (base32 + "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd")))) + (build-system ruby-build-system) + (synopsis "Ruby method to unindent strings") + (description "This module provides a @code{String#unindent} Ruby method to +unindent strings, which can be useful to unindent multiline strings embedded +in already-indented code.") + (home-page "https://github.com/mynyml/unindent") + (license license:expat))) + ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above in alphabetic order. |