aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm841
1 files changed, 841 insertions, 0 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6e5553bd30..fa7c2f7691 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1557,6 +1557,161 @@ functionality, making it easier to migrate test suites from bacon to minitest.")
(home-page "https://github.com/seattlerb/minitest-bacon")
(license license:expat)))
+(define-public ruby-minitest-focus
+ (package
+ (name "ruby-minitest-focus")
+ (version "1.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-focus" version))
+ (sha256
+ (base32
+ "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (native-inputs
+ `(("ruby-hoe" ,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-pretty-diff
+ ;; Use git reference because gem is out of date and does not contain testing
+ ;; script. There are no releases on GitHub.
+ (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
+ (package
+ (name "ruby-minitest-pretty-diff")
+ (version (string-append "0.1-1." (string-take commit 8)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/adammck/minitest-pretty_diff.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "script/test")))))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-turn" ,ruby-turn)))
+ (synopsis "Pretty-print hashes and arrays in MiniTest")
+ (description
+ "@code{minitest-pretty_diff} monkey-patches
+@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
+diffing them. This makes it easier to spot differences between nested
+structures when tests fail.")
+ (home-page "https://github.com/adammck/minitest-pretty_diff")
+ (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'") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-minitest" ,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-minitest-bonus-assertions
+ (package
+ (name "ruby-minitest-bonus-assertions")
+ (version "2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-bonus-assertions" version))
+ (sha256
+ (base32
+ "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#: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'") ""))
+ #t)))))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
+ ("ruby-minitest-focus" ,ruby-minitest-focus)
+ ("ruby-minitest-moar" ,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-rg
+ (package
+ (name "ruby-minitest-rg")
+ (version "5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-rg" version))
+ (sha256
+ (base32
+ "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Some tests fail even outside Guix, so disable tests.
+ ;; https://github.com/blowmage/minitest-rg/issues/12
+ ;; https://github.com/blowmage/minitest-rg/pull/13
+ `(#:tests? #f))
+ (propagated-inputs
+ `(("ruby-minitest" ,ruby-minitest)))
+ (synopsis "Coloured output for Minitest")
+ (description
+ "@code{minitest-rg} changes the colour of the output from Minitest.")
+ (home-page "http://blowmage.com/minitest-rg")
+ (license license:expat)))
+
(define-public ruby-daemons
(package
(name "ruby-daemons")
@@ -2943,6 +3098,369 @@ used to create both network servers and clients.")
(home-page "http://rubyeventmachine.com")
(license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
+(define-public ruby-turn
+ (package
+ (name "ruby-turn")
+ (version "0.9.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "turn" version))
+ (sha256
+ (base32
+ "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Tests fail because turn changes its environment so can no longer
+ ;; find test/unit. Instead simply test if the executable runs
+ ;; without issue.
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "bin/turn" "-h")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-minitest" ,ruby-minitest-4)))
+ (synopsis "Alternate set of alternative runners for MiniTest")
+ (description
+ "TURN provides a set of alternative runners for MiniTest which are both
+colorful and informative. TURN displays each test on a separate line with
+failures being displayed immediately instead of at the end of the tests. Note
+that TURN is no longer being maintained.")
+ (home-page "http://rubygems.org/gems/turn")
+ (license license:expat)))
+
+(define-public ruby-mime-types-data
+ (package
+ (name "ruby-mime-types-data")
+ (version "3.2015.1120")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mime-types-data" version))
+ (sha256
+ (base32
+ "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("ruby-hoe" ,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-mime-types
+ (package
+ (name "ruby-mime-types")
+ (version "3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "mime-types" version))
+ (sha256
+ (base32
+ "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra"))))
+ (build-system ruby-build-system)
+ (propagated-inputs
+ `(("ruby-mime-types-data" ,ruby-mime-types-data)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-fivemat" ,ruby-fivemat)
+ ("ruby-minitest-focus" ,ruby-minitest-focus)
+ ("ruby-minitest-rg" ,ruby-minitest-rg)
+ ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)))
+ (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-fivemat
+ (package
+ (name "ruby-fivemat")
+ (version "1.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "fivemat" version))
+ (sha256
+ (base32
+ "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk"))))
+ (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-sqlite3
+ (package
+ (name "ruby-sqlite3")
+ (version "1.3.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sqlite3" version))
+ (sha256
+ (base32
+ "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-gemtest-file
+ ;; This file exists in the repository but is not distributed.
+ (lambda _ (zero? (system* "touch" ".gemtest")))))))
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (native-inputs
+ `(("ruby-hoe" ,ruby-hoe)
+ ("ruby-rake-compiler" ,ruby-rake-compiler)
+ ("ruby-mini-portile" ,ruby-mini-portile)))
+ (synopsis "Interface with SQLite3 databases")
+ (description
+ "This module allows Ruby programs to interface with the SQLite3 database
+engine.")
+ (home-page
+ "https://github.com/sparklemotion/sqlite3-ruby")
+ (license license:bsd-3)))
+
+(define-public ruby-shoulda-context
+ (package
+ (name "ruby-shoulda-context")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-context" version))
+ (sha256
+ (base32
+ "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; Do not run tests to avoid circular dependence with rails.
+ ;; Instead just import the library to test.
+ (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context")))))))
+ (synopsis "Test::Unit context framework extracted from Shoulda")
+ (description
+ "@code{shoulda-context} is the context framework extracted from Shoulda.
+Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
+context, setup, and should blocks combine to produce natural test method
+names.")
+ (home-page "https://github.com/thoughtbot/shoulda-context")
+ (license license:expat)))
+
+(define-public ruby-shoulda-matchers
+ (package
+ (name "ruby-shoulda-matchers")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-matchers" version))
+ (sha256
+ (base32
+ "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'fix-import
+ (lambda _
+ ;; A presumed bug reported upstream at
+ ;; https://github.com/thoughtbot/shoulda-matchers/pull/871
+ (substitute* (string-append "lib/shoulda/matchers/active_model/"
+ "validate_inclusion_of_matcher.rb")
+ (("^require 'bigdecimal'")
+ "require 'bigdecimal'; require 'date'"))))
+ (replace 'check
+ (lambda _
+ ;; Do not run tests to avoid circular dependence with rails. Instead
+ ;; just import the library to test.
+ (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
+ (propagated-inputs
+ `(("ruby-activesupport" ,ruby-activesupport)))
+ (synopsis "Collection of testing matchers extracted from Shoulda")
+ (description
+ "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
+test common Rails functionality. These tests would otherwise be much longer,
+more complex, and error-prone.")
+ (home-page "https://github.com/thoughtbot/shoulda-matchers")
+ (license license:expat)))
+
+(define-public ruby-shoulda-matchers-2
+ (package
+ (inherit ruby-shoulda-matchers)
+ (version "2.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda-matchers" version))
+ (sha256
+ (base32
+ "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
+
+(define-public ruby-shoulda
+ (package
+ (name "ruby-shoulda")
+ (version "3.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "shoulda" version))
+ (sha256
+ (base32
+ "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ ;; Don't run tests to avoid circular dependence with rails. Instead
+ ;; just import the library to test.
+ (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda")))))))
+ (propagated-inputs
+ `(("ruby-shoulda-context" ,ruby-shoulda-context)
+ ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
+ (synopsis "Context framework and matchers for testing")
+ (description
+ "@code{shoulda} is a meta-package combining @code{shoulda-context} and
+@code{shoulda-matchers} providing tools for writing tests.")
+ (home-page "https://github.com/thoughtbot/shoulda")
+ (license license:expat)))
+
+(define-public ruby-unf
+ (package
+ (name "ruby-unf")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "unf" version))
+ (sha256
+ (base32
+ "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-dependency-to-bundler
+ (lambda _
+ ;; test-unit is required but not provided by the bundler
+ ;; environment. This is fixed in the upstream repository but fix
+ ;; has not been released.
+ (substitute* "Gemfile"
+ (("^gemspec") "gem 'test-unit'\ngemspec"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-unf-ext" ,ruby-unf-ext)))
+ (native-inputs
+ `(("ruby-shoulda" ,ruby-shoulda)
+ ("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Unicode Normalization Form support to Ruby and JRuby")
+ (description
+ "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
+support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
+@code{java.text.Normalizer} on JRuby.")
+ (home-page "https://github.com/knu/ruby-unf")
+ (license license:bsd-2)))
+
+(define-public ruby-domain-name
+ (package
+ (name "ruby-domain-name")
+ (version "0.5.25")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "domain_name" version))
+ (sha256
+ (base32
+ "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'fix-versions
+ (lambda _
+ ;; Fix NameError that appears to already be fixed upstream.
+ (substitute* "Rakefile"
+ (("DomainName::VERSION")
+ "Bundler::GemHelper.gemspec.version"))
+ ;; Loosen unnecessarily strict test-unit version specification.
+ (substitute* "domain_name.gemspec"
+ (("<test-unit>, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-unf" ,ruby-unf)))
+ (native-inputs
+ `(("ruby-shoulda" ,ruby-shoulda)
+ ("bundler" ,bundler)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Domain name manipulation library")
+ (description
+ "@code{domain_name} is a Domain name manipulation library. It parses a
+domain name ready for extracting the registered domain and TLD (Top Level
+Domain). It can also be used for cookie domain validation based on the Public
+Suffix List.")
+ (home-page "https://github.com/knu/ruby-domain_name")
+ (license license:bsd-2)))
+
+(define-public ruby-http-cookie
+ (package
+ (name "ruby-http-cookie")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "http-cookie" version))
+ (sha256
+ (base32
+ "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'add-dependency-to-bundler
+ (lambda _
+ ;; Fix NameError
+ (substitute* "Rakefile"
+ (("HTTP::Cookie::VERSION")
+ "Bundler::GemHelper.gemspec.version"))
+ #t)))))
+ (propagated-inputs
+ `(("ruby-domain-name" ,ruby-domain-name)))
+ (native-inputs
+ `(("rubysimplecov" ,ruby-simplecov)
+ ("bundler" ,bundler)
+ ("ruby-sqlite3" ,ruby-sqlite3)
+ ("ruby-test-unit" ,ruby-test-unit)))
+ (synopsis "Handle HTTP Cookies based on RFC 6265")
+ (description
+ "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
+RFC 6265. It has been designed with security, standards compliance and
+compatibility in mind, to behave just the same as today's major web browsers.
+It has built-in support for the legacy @code{cookies.txt} and
+@code{cookies.sqlite} formats of Mozilla Firefox.")
+ (home-page "https://github.com/sparklemotion/http-cookie")
+ (license license:expat)))
+
(define-public ruby-ansi
(package
(name "ruby-ansi")
@@ -3042,3 +3560,326 @@ to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
detail to ease debugging.")
(home-page "http://github.com/wwood/bioruby-commandeer")
(license license:expat)))
+
+(define-public ruby-rubytest
+ (package
+ (name "ruby-rubytest")
+ (version "0.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubytest" version))
+ (sha256
+ (base32
+ "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable regular testing to break the cycle rubytest, qed, brass,
+ ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
+ ;; simply test that the library can be require'd.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "-r" "rubytest")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)))
+ (synopsis "Universal test harness for Ruby")
+ (description
+ "Rubytest is a testing meta-framework for Ruby. It can handle any
+compliant test framework and can run tests from multiple frameworks in a
+single pass.")
+ (home-page "http://rubyworks.github.io/rubytest")
+ (license license:bsd-2)))
+
+(define-public ruby-brass
+ (package
+ (name "ruby-brass")
+ (version "1.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "brass" version))
+ (sha256
+ (base32
+ "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
+ ;; Instead simply test that the library can be require'd.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "-r" "brass")))))))
+ (synopsis "Basic foundational assertions framework")
+ (description
+ "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
+foundational assertions framework for other assertion and test frameworks to
+make use of.")
+ (home-page "http://rubyworks.github.io/brass")
+ (license license:bsd-2)))
+
+(define-public ruby-qed
+ (package
+ (name "ruby-qed")
+ (version "2.9.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "qed" version))
+ (sha256
+ (base32
+ "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
+ (build-system ruby-build-system)
+ (arguments
+ ;; Disable testing to break the cycle qed, ansi, qed, among others.
+ ;; Instead simply test that the executable runs using --copyright.
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-brass" ,ruby-brass)))
+ (synopsis "Test framework utilizing literate programming techniques")
+ (description
+ "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
+@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
+Development} (BDD) utilizing Literate Programming techniques. QED sits
+somewhere between lower-level testing tools like @code{Test::Unit} and
+requirement specifications systems like Cucumber.")
+ (home-page "http://rubyworks.github.io/qed")
+ (license license:bsd-2)))
+
+(define-public ruby-ae
+ (package
+ (name "ruby-ae")
+ (version "1.8.2")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Fetch from github so tests are included.
+ (uri (string-append
+ "https://github.com/rubyworks/ae/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _ (zero? (system* "qed")))))))
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)))
+ (native-inputs
+ `(("ruby-qed" ,ruby-qed)))
+ (synopsis "Assertions library")
+ (description
+ "Assertive Expressive (AE) is an assertions library specifically designed
+for reuse by other test frameworks.")
+ (home-page "http://rubyworks.github.io/ae")
+ (license license:bsd-2)))
+
+(define-public ruby-lemon
+ (package
+ (name "ruby-lemon")
+ (version "0.9.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "lemon" version))
+ (sha256
+ (base32
+ "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check (lambda _ (zero? (system* "qed")))))))
+ (propagated-inputs
+ `(("ruby-ae" ,ruby-ae)
+ ("ruby-ansi" ,ruby-ansi)
+ ("ruby-rubytest" ,ruby-rubytest)))
+ (native-inputs
+ `(("ruby-qed" ,ruby-qed)))
+ (synopsis "Test framework correlating code structure and test unit")
+ (description
+ "Lemon is a unit testing framework that enforces highly formal
+case-to-class and unit-to-method test construction. This enforcement can help
+focus concern on individual units of behavior.")
+ (home-page "http://rubyworks.github.io/lemon")
+ (license license:bsd-2)))
+
+(define-public ruby-rubytest-cli
+ (package
+ (name "ruby-rubytest-cli")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rubytest-cli" version))
+ (sha256
+ (base32
+ "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ; no tests
+ (propagated-inputs
+ `(("ruby-ansi" ,ruby-ansi)
+ ("ruby-rubytest" ,ruby-rubytest)))
+ (synopsis "Command-line interface for rubytest")
+ (description
+ "Rubytest CLI is a command-line interface for running tests for
+Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
+ (home-page "http://rubyworks.github.io/rubytest-cli")
+ (license license:bsd-2)))
+
+(define-public ruby-hashery
+ (package
+ (name "ruby-hashery")
+ (version "2.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hashery" version))
+ (sha256
+ (base32
+ "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (and (zero? (system* "qed"))
+ (zero? (system* "rubytest" "-Ilib" "-Itest" "test/"))))))))
+ (native-inputs
+ `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
+ ("ruby-qed" ,ruby-qed)
+ ("ruby-lemon" ,ruby-lemon)))
+ (synopsis "Hash-like classes with extra features")
+ (description
+ "The Hashery is a tight collection of @code{Hash}-like classes.
+Included are the auto-sorting @code{Dictionary} class, the efficient
+@code{LRUHash}, the flexible @code{OpenHash} and the convenient
+@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
+defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
+standard @code{Hash} making it possible to subclass and augment to fit any
+specific use case.")
+ (home-page "http://rubyworks.github.io/hashery")
+ (license license:bsd-2)))
+
+(define-public ruby-rc4
+ (package
+ (name "ruby-rc4")
+ (version "0.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby-rc4" version))
+ (sha256
+ (base32
+ "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (zero? (system* "rspec" "spec/rc4_spec.rb")))))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec-2)))
+ (synopsis "Implementation of the RC4 algorithm")
+ (description
+ "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
+ (home-page "https://github.com/caiges/Ruby-RC4")
+ (license license:expat)))
+
+(define-public ruby-afm
+ (package
+ (name "ruby-afm")
+ (version "0.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "afm" version))
+ (sha256
+ (base32
+ "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Read Adobe Font Metrics (afm) files")
+ (description
+ "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
+files and use the data therein.")
+ (home-page "http://github.com/halfbyte/afm")
+ (license license:expat)))
+
+(define-public ruby-ascii85
+ (package
+ (name "ruby-ascii85")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "Ascii85" version))
+ (sha256
+ (base32
+ "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q"))))
+ (build-system ruby-build-system)
+ (native-inputs
+ `(("bundler" ,bundler)))
+ (synopsis "Encode and decode Ascii85 binary-to-text encoding")
+ (description
+ "This library provides methods to encode and decode Ascii85
+binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
+@dfn{Portable Document Format} (PDF) file formats.")
+ (home-page "https://github.com/datawraith/ascii85gem")
+ (license license:expat)))
+
+(define-public ruby-ttfunk
+ (package
+ (name "ruby-ttfunk")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; fetch from github as the gem does not contain testing code
+ (uri (string-append
+ "https://github.com/prawnpdf/ttfunk/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'remove-rubocop
+ (lambda _
+ ;; remove rubocop as a dependency as not needed for testing
+ (substitute* "ttfunk.gemspec"
+ (("spec.add_development_dependency\\('rubocop'.*") ""))
+ (substitute* "Rakefile"
+ (("require 'rubocop/rake_task'") "")
+ (("Rubocop::RakeTask.new") ""))
+ #t)))))
+ (native-inputs
+ `(("ruby-rspec" ,ruby-rspec)
+ ("bundler" ,bundler)))
+ (synopsis "Font metrics parser for the Prawn PDF generator")
+ (description
+ "TTFunk is a TrueType font parser written in pure Ruby. It is used as
+part of the Prawn PDF generator.")
+ (home-page "https://github.com/prawnpdf/ttfunk")
+ ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
+ ;; for details."
+ (license (list license:gpl2 license:gpl3 license:ruby))))