summaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm559
1 files changed, 521 insertions, 38 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 4ce42f90bf..94b16957e0 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1542,6 +1542,49 @@ a Ruby object.")
(home-page "https://github.com/rails/execjs")
(license license:expat)))
+(define-public ruby-fakefs
+ (package
+ (name "ruby-fakefs")
+ (version "1.2.2")
+ (home-page "https://github.com/fakefs/fakefs")
+ (source (origin
+ ;; The Rubygems release does not contain tests.
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "fakefs.gemspec"
+ (("`git ls-files lib README.md LICENSE`")
+ "`find lib README.md LICENSE -type f | sort`"))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ ;; Drop hard version requirements for test dependencies.
+ (substitute* "fakefs.gemspec"
+ (("(.*add_development_dependency .*), .*" _ dep)
+ (string-append dep "\n")))
+ #t)))))
+ (native-inputs
+ `(("ruby-bump" ,ruby-bump)
+ ("ruby-maxitest" ,ruby-maxitest)
+ ("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Fake file system for Ruby")
+ (description
+ "This package provides a fake file system for use in test suites. It
+avoids the need for manually creating temporary directories, or dealing
+with platform intricacies in @code{File} and @code{FileUtils}.")
+ (license license:expat)))
+
(define-public ruby-orderedhash
(package
(name "ruby-orderedhash")
@@ -1840,6 +1883,57 @@ libraries such as Libnotify.")
(home-page "https://github.com/guard/notiffany")
(license license:expat)))
+(define-public ruby-forking-test-runner
+ (package
+ (name "ruby-forking-test-runner")
+ (version "1.6.0")
+ (home-page "https://github.com/grosser/forking_test_runner")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"
+ ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
+ ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
+ #:tests? #f
+ #:phases (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "forking_test_runner.gemspec"
+ (("`git ls-files lib/ bin/ MIT-LICENSE`")
+ "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ ;; Ignore hard coded version constraints for the tests.
+ (delete-file "Gemfile.lock")
+ #t))
+ (add-before 'check 'set-HOME
+ (lambda _
+ ;; Many tests invoke Bundler, and fails when Bundler
+ ;; warns that /homeless-shelter does not exist.
+ (setenv "HOME" "/tmp")
+ #t)))))
+ (native-inputs
+ `(("ruby-activerecord" ,ruby-activerecord)
+ ("ruby-bump" ,ruby-bump)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-sqlite3" ,ruby-sqlite3)
+ ("ruby-wwtd" ,ruby-wwtd)))
+ (propagated-inputs
+ `(("ruby-parallel-tests" ,ruby-parallel-tests)))
+ (synopsis "Run every test in a fork")
+ (description
+ "This package is a wrapper around @code{parallel_tests} that runs every
+test in a fork to avoid pollution and get clean output per test.")
+ (license license:expat)))
+
(define-public ruby-formatador
(package
(name "ruby-formatador")
@@ -2311,6 +2405,65 @@ interface for Ruby programs.")
(home-page "https://github.com/mperham/connection_pool")
(license license:expat)))
+(define-public ruby-fast-gettext
+ (package
+ (name "ruby-fast-gettext")
+ (version "2.0.2")
+ (home-page "https://github.com/grosser/fast_gettext")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rd48fp89k1sclgn2v26br2glwl3iv7z72mizzzmkdmqalqfn1sa"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"
+ #:phases (modify-phases %standard-phases
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ (delete-file "Gemfile.lock")
+ #t))
+ (add-before 'check 'remove-activerecord-test
+ (lambda _
+ ;; FIXME: This test fails because ActiveRecord depends on
+ ;; a different version of ruby-sqlite than the currently
+ ;; available one.
+ (delete-file
+ "spec/fast_gettext/translation_repository/db_spec.rb")
+ #t))
+ (add-before 'check 'disable-i18n-test
+ (lambda _
+ ;; XXX: This test checks i18n intricasies with Rails 3 and
+ ;; automatically disables itself for Rails 4.0, but does
+ ;; not know about newer versions as it has not been updated
+ ;; since 2014. Disable for later versions of Rails too.
+ (substitute* "spec/fast_gettext/vendor/string_spec.rb"
+ (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
+ "ActiveRecord::VERSION::MINOR == 0"))
+ "ActiveRecord::VERSION::MAJOR >= 4"))
+ #t)))))
+ (native-inputs
+ `(;; For tests.
+ ("ruby-activerecord" ,ruby-activerecord)
+ ("ruby-activesupport" ,ruby-activesupport)
+ ("ruby-bump" ,ruby-bump)
+ ("ruby-forking-test-runner" ,ruby-forking-test-runner)
+ ("ruby-i18n" ,ruby-i18n)
+ ("ruby-rubocop" ,ruby-rubocop)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-single-cov" ,ruby-single-cov)
+ ("ruby-sqlite3" ,ruby-sqlite3)
+ ("ruby-wwtd" ,ruby-wwtd)))
+ (synopsis "Fast implementation of @code{GetText}")
+ (description
+ "This package provides an alternative implementation of the Ruby
+@code{GetText} library that is approximately 12x faster yet thread safe.")
+ ;; Some parts are covered by the Ruby license, see file headers.
+ (license (list license:expat license:ruby))))
+
(define-public ruby-net-http-persistent
(package
(name "ruby-net-http-persistent")
@@ -2987,62 +3140,90 @@ Ruby, but can be used for all programs.")
(home-page "https://github.com/alexch/rerun/")
(license license:expat)))
+(define-public ruby-maxitest
+ (package
+ (name "ruby-maxitest")
+ (version "3.6.0")
+ (home-page "https://github.com/grosser/maxitest")
+ (source (origin
+ ;; Pull from git because the gem does not contain tests.
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "default"
+ #:phases (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "maxitest.gemspec"
+ (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
+ "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ ;; Don't use specific versions of dependencies, instead
+ ;; take whatever is available in Guix.
+ (delete-file "Gemfile.lock")
+ #t))
+ (add-before 'check 'add-mtest-on-PATH
+ (lambda _
+ ;; Tests use 'mtest' which is not automatically added on
+ ;; PATH.
+ (setenv "PATH" (string-append (getcwd) "/bin:"
+ (getenv "PATH")))
+ #t)))))
+ (native-inputs
+ `(("ps" ,procps)
+ ("ruby-bump" ,ruby-bump)
+ ("ruby-byebug" ,ruby-byebug)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-wwtd" ,ruby-wwtd)))
+ (propagated-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Minitest with extra features")
+ (description
+ "Maxitest is a wrapper around Minitest with extra functionality such
+as timeouts, an @command{mtest} executable that can run tests by line
+number, support for interrupted tests, better backtraces, and more.")
+ (license license:expat)))
+
(define-public ruby-mocha
(package
(name "ruby-mocha")
- (version "1.1.0")
+ (version "1.11.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "mocha" version))
(sha256
(base32
- "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
+ "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'add-test-unit-to-search-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
- (substitute* "Rakefile"
- (("t\\.libs << 'test'" line)
- (string-append line "; t.libs << \""
- test-unit "/lib/ruby/vendor_ruby"
- "/gems/test-unit-"
- ,(package-version ruby-test-unit)
- "/lib\""))))
- #t))
- (add-before 'check 'use-latest-redcarpet
- (lambda _
- (substitute* "mocha.gemspec"
- (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
- "<redcarpet>.freeze, [\">= 3\"]"))
- #t))
- (add-before 'check 'hardcode-version
- (lambda _
- ;; Mocha is undefined at build time
- (substitute* "Rakefile"
- (("#\\{Mocha::VERSION\\}") ,version))
- #t))
- (add-before 'check 'remove-failing-test
- ;; FIXME: This test fails for reasons unrelated to Guix packaging.
- (lambda _
- (delete-file "test/acceptance/stubbing_nil_test.rb")
- #t)))))
- (propagated-inputs
- `(("ruby-metaclass" ,ruby-metaclass)))
+ (add-before 'check 'remove-rubocop-dependency
+ (lambda _
+ ;; Disable dependency on Rubocop, which is just a linter,
+ ;; and would introduce a circular dependency.
+ (substitute* "mocha.gemspec"
+ ((".*rubocop.*")
+ "true\n"))
+ #t)))))
(native-inputs
- `(("bundler" ,bundler)
- ("ruby-yard" ,ruby-yard)
- ("ruby-introspection" ,ruby-introspection)
- ("ruby-test-unit" ,ruby-test-unit)
- ("ruby-redcarpet" ,ruby-redcarpet)))
+ `(("ruby-introspection" ,ruby-introspection)))
(synopsis "Mocking and stubbing library for Ruby")
(description
"Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
allows mocking and stubbing of methods on real (non-mock) classes.")
(home-page "http://gofreerange.com/mocha/docs")
- (license license:expat)))
+ ;; Mocha can be used with either license at the users choice.
+ (license (list license:expat license:ruby))))
(define-public ruby-mocha-on-bacon
(package
@@ -3502,6 +3683,28 @@ URIs using the normal URI.parse method.")
(home-page "https://github.com/dball/data_uri")
(license license:expat)))
+(define-public ruby-deep-merge
+ (package
+ (name "ruby-deep-merge")
+ (version "1.2.1")
+ (home-page "https://github.com/danielsdeleo/deep_merge")
+ ;; The Rubygem source does not contain the gemspec required for tests.
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Recursively merge hashes")
+ (description
+ "Deep Merge is a set of utility functions for @code{Hash}. It permits
+you to merge elements inside a hash together recursively.")
+ (license license:expat)))
+
(define-public ruby-git
(package
(name "ruby-git")
@@ -3538,6 +3741,38 @@ and manipulate Git repositories by wrapping system calls to the git binary.")
(home-page "https://github.com/schacon/ruby-git")
(license license:expat)))
+(define-public ruby-hocon
+ (package
+ (name "ruby-hocon")
+ (version "1.3.0")
+ (home-page "https://github.com/puppetlabs/ruby-hocon")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1wz4cswjg3gs1y1bar7j4j88wjimfa9zhvy51jyi177i5dzax416"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec")
+ (format #t "test suite not run~%"))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "HOCON config library")
+ (description
+ "This package provides Ruby support for the @acronym{HOCON,
+Human-Optimized Config Object Notation} configuration file format. It
+supports parsing and modifying HOCON and JSON files, and rendering parsed
+objects back to a @code{String}.")
+ (license license:asl2.0)))
+
(define-public ruby-slop
(package
(name "ruby-slop")
@@ -3867,6 +4102,70 @@ for select languages.")
(home-page "http://coderay.rubychan.de")
(license license:expat)))
+(define-public ruby-parallel-tests
+ (package
+ (name "ruby-parallel-tests")
+ (version "2.32.0")
+ (home-page "https://github.com/grosser/parallel_tests")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (string-append name version))
+ (sha256
+ (base32
+ "0l2rjz9fnxv7hvz679v7a75mghsh9x9qpvbyapiavqsx21v42l7m"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "default"
+ #:phases (modify-phases %standard-phases
+ (add-after 'patch-source-shebangs 'patch-shell-invokations
+ (lambda _
+ (substitute* '("lib/parallel_tests/tasks.rb"
+ "spec/parallel_tests/tasks_spec.rb")
+ (("/bin/sh") (which "sh"))
+ (("/bin/bash") (which "bash")))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ ;; Remove hard coded version constraints, instead just
+ ;; use whatever versions are available in Guix.
+ (delete-file "Gemfile.lock")
+ (substitute* "Gemfile"
+ (("'minitest',.*")
+ "'minitest'\n")
+ (("'cucumber',.*")
+ "'cucumber'\n"))
+ #t))
+ (add-before 'check 'disable-rails-test
+ (lambda _
+ ;; XXX: This test attempts to download and run the test
+ ;; suites of multiple Rails versions(!) directly.
+ (delete-file "spec/rails_spec.rb")
+ #t))
+ (add-before 'check 'set-HOME
+ (lambda _
+ ;; Some tests check the output of Bundler, and fail when
+ ;; Bundler warns that /homeless-shelter does not exist.
+ (setenv "HOME" "/tmp")
+ #t)))))
+ (native-inputs
+ `(("ruby-bump" ,ruby-bump)
+ ("ruby-cucumber" ,ruby-cucumber)
+ ("ruby-minitest" ,ruby-minitest)
+ ("ruby-rake" ,ruby-rake)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-spinach" ,ruby-spinach)))
+ (propagated-inputs
+ `(("ruby-parallel" ,ruby-parallel)))
+ (synopsis "Run tests in parallel")
+ (description
+ "This package can speed up @code{Test::Unit}, @code{RSpec},
+@code{Cucumber}, and @code{Spinach} tests by running them concurrently
+across multiple CPU cores.")
+ (license license:expat)))
+
(define-public ruby-parser
(package
(name "ruby-parser")
@@ -4023,6 +4322,61 @@ invocation, and source and documentation browsing.")
(home-page "https://pryrepl.org")
(license license:expat)))
+(define-public ruby-single-cov
+ (package
+ (name "ruby-single-cov")
+ (version "1.3.2")
+ (home-page "https://github.com/grosser/single_cov")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "default"
+ #:phases (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "single_cov.gemspec"
+ (("`git ls-files lib/ bin/ MIT-LICENSE`")
+ "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ (delete-file "Gemfile.lock")
+ #t))
+ (add-before 'check 'make-files-writable
+ (lambda _
+ ;; Tests need to create local directories and open files
+ ;; with write permissions.
+ (for-each make-file-writable
+ (find-files "specs" #:directories? #t))
+ #t))
+ (add-before 'check 'disable-failing-test
+ (lambda _
+ ;; XXX: This test copies assets from minitest, but can
+ ;; not cope with the files being read-only. Just skip
+ ;; it for now.
+ (substitute* "specs/single_cov_spec.rb"
+ (("it \"complains when coverage is bad\"")
+ "xit \"complains when coverage is bad\""))
+ #t)))))
+ (native-inputs
+ `(("ruby-bump" ,ruby-bump)
+ ("ruby-minitest" ,ruby-minitest)
+ ("ruby-rspec" ,ruby-rspec)
+ ("ruby-simplecov" ,ruby-simplecov)))
+ (synopsis "Code coverage reporting tool")
+ (description
+ "This package provides actionable code coverage reports for Ruby
+projects. It has very little overhead and can be easily integrated with
+development tools to catch coverage problems early.")
+ (license license:expat)))
+
(define-public ruby-guard
(package
(name "ruby-guard")
@@ -4072,6 +4426,34 @@ file or directories are modified.")
(home-page "https://guardgem.org/")
(license license:expat)))
+(define-public ruby-spinach
+ (package
+ (name "ruby-spinach")
+ (version "0.11.0")
+ (home-page "http://github.com/codegram/spinach")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "spinach" version))
+ (sha256
+ (base32
+ "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; FIXME: Disable tests altogether because they depend on 'capybara'
+ ;; which in turn depends on many other unpackaged gems. Enable once
+ ;; capybara is available.
+ '(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-colorize" ,ruby-colorize)
+ ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
+ ("ruby-json" ,ruby-json)))
+ (synopsis "Gherkin-based BDD framework")
+ (description
+ "Spinach is a high-level @acronym{BDD, Behavior-driven development}
+framework that leverages the expressive @code{Gherkin} language to help you
+define executable specifications of your code.")
+ (license license:expat)))
+
(define-public ruby-tilt
(package
(name "ruby-tilt")
@@ -5517,6 +5899,25 @@ It is intended be used by all Cucumber implementations to parse
(home-page "https://github.com/cucumber-attic/gherkin")
(license license:expat)))
+(define-public ruby-gherkin-ruby
+ (package
+ (name "ruby-gherkin-ruby")
+ (version "0.3.2")
+ (home-page "http://github.com/codegram/gherkin-ruby")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "gherkin-ruby" version))
+ (sha256
+ (base32
+ "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
+ (build-system ruby-build-system)
+ (synopsis "Pure Ruby Gherkin parser")
+ (description
+ "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
+200 lines of code.")
+ ;; XXX: No license information anywhere but Readme.md.
+ (license license:expat)))
+
(define-public ruby-aruba
(package
(name "ruby-aruba")
@@ -7642,6 +8043,36 @@ is part of Ruby's standard library. It more closely conforms to RFC 3986,
RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
(license license:asl2.0)))
+(define-public ruby-colorize
+ (package
+ (name "ruby-colorize")
+ (version "0.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "colorize" version))
+ (sha256
+ (base32
+ "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-before 'check 'remove-codeclimate-dependency
+ (lambda _
+ (substitute* "test/test_colorize.rb"
+ ;; Do not hook the tests into the online CodeClimate
+ ;; service which is unnecessary for these tests.
+ (("require 'codeclimate-test-reporter'")
+ "")
+ (("CodeClimate.*") ""))
+ #t)))))
+ (synopsis "Add color effects to the @code{String} class")
+ (description
+ "This package extends the @code{String} class and adds a
+@code{ColorizedString} with methods to set text color, background color,
+and text effects.")
+ (home-page "http://github.com/fazibear/colorize")
+ (license license:gpl2+)))
+
(define-public ruby-colorator
(package
(name "ruby-colorator")
@@ -9096,3 +9527,55 @@ which snapshots to consider and what files to include.")
(home-page
"https://github.com/hartator/wayback-machine-downloader")
(license license:expat)))
+
+(define-public ruby-wwtd
+ (package
+ (name "ruby-wwtd")
+ (version "1.4.1")
+ (home-page "http://github.com/grosser/wwtd")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove bundled library.
+ (delete-file "spec/rake-12.3.0.gem")
+ #t))))
+ (build-system ruby-build-system)
+ (arguments
+ '(;; XXX: Tests need multiple versions of ruby, wants to run
+ ;; `bundle install`, etc.
+ #:tests? #f
+ #:phases (modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "wwtd.gemspec"
+ (("git ls-files lib/ bin/`")
+ "find lib/ bin/ -type f |sort`"))
+ #t))
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ (delete-file "Gemfile.lock")
+ #t))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (if tests?
+ (invoke "rspec" "spec/")
+ (format #t "test suite not run~%"))
+ #t)))))
+ (native-inputs
+ `(("ruby-bump" ,ruby-bump)
+ ("ruby-rspec" ,ruby-rspec)))
+ (synopsis "Run @file{.travis.yml} files locally")
+ (description
+ "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
+defined in @file{.travis.yml} on your local machine, using @code{rvm},
+@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
+ (license license:expat)))