gnu: Add ruby-cucumber and ruby-aruba.

These packages are mutually dependant, so I've put them in one commit.

* gnu/packages/ruby.scm (ruby-aruba, ruby-aruba-without-tests, ruby-cucumber,
ruby-cucumber-without-tests): New variables.
This commit is contained in:
Christopher Baines 2019-01-27 10:26:08 +00:00
parent aada5f6f3b
commit 15b16c2c46
No known key found for this signature in database
GPG Key ID: 5E28A33B0B84F577
1 changed files with 147 additions and 1 deletions

View File

@ -32,6 +32,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages dbm)
@ -55,7 +56,8 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages xml)
#:use-module (gnu packages web)
#:use-module (guix build-system ruby))
#:use-module (guix build-system ruby)
#:use-module ((srfi srfi-1) #:select (alist-delete)))
(define-public ruby
(package
@ -3814,6 +3816,150 @@ 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-aruba
(package
(name "ruby-aruba")
(version "0.14.8")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "aruba" version))
(sha256
(base32
"0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
(build-system ruby-build-system)
(arguments
'(#:test-target "spec"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch
(lambda _
(substitute* "spec/aruba/api_spec.rb"
;; This resolves some errors in the specs
;;
;; undefined method `parse' for Time:Class
(("require 'spec_helper'")
"require 'spec_helper'\nrequire 'time'"))
;; Avoid shebang issues in this spec file
(substitute* "spec/aruba/matchers/command_spec.rb"
(("/usr/bin/env bash")
(which "bash")))
#t))
(add-before 'check 'remove-unnecessary-dependencies
(lambda _
(substitute* "Gemfile"
((".*byebug.*") "\n")
((".*pry.*") "\n")
((".*yaml.*") "\n")
((".*bcat.*") "\n")
((".*kramdown.*") "\n")
((".*rubocop.*") "\n")
((".*cucumber-pro.*") "\n")
((".*cucumber.*") "\n")
((".*license_finder.*") "\n")
((".*rake.*") "gem 'rake'\n")
((".*simplecov.*") "\n")
((".*relish.*") "\n"))
(substitute* "spec/spec_helper.rb"
((".*simplecov.*") "")
(("^SimpleCov.*") ""))
(substitute* "aruba.gemspec"
(("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
"spec.add_runtime_dependency 'cucumber'"))
#t))
(add-before 'check 'set-home
(lambda _ (setenv "HOME" "/tmp") #t)))))
(native-inputs
`(("bundler" ,bundler)
("ruby-rspec" ,ruby-rspec)
("ruby-fuubar" ,ruby-fuubar)))
(propagated-inputs
`(("ruby-childprocess" ,ruby-childprocess)
("ruby-contracts" ,ruby-contracts)
("ruby-cucumber" ,ruby-cucumber)
("ruby-ffi" ,ruby-ffi)
("ruby-rspec-expectations" ,ruby-rspec-expectations)
("ruby-thor" ,ruby-thor)
("ruby-yard" ,ruby-yard)))
(synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
(description
"Aruba is an extension for Cucumber, RSpec and Minitest for testing
command-line applications. It supports applications written in any
language.")
(home-page "https://github.com/cucumber/aruba")
(license license:expat)))
;; A version of ruby-aruba without tests run so that circular dependencies can
;; be avoided.
(define ruby-aruba-without-tests
(package
(inherit ruby-aruba)
(arguments '(#:tests? #f))
(propagated-inputs
`(("ruby-cucumber" ,ruby-cucumber-without-tests)
,@(alist-delete "ruby-cucumber"
(package-propagated-inputs ruby-aruba))))
(native-inputs '())))
(define-public ruby-cucumber
(package
(name "ruby-cucumber")
(version "3.1.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cucumber/cucumber-ruby.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
(build-system ruby-build-system)
(arguments
'(#:test-target "spec"
#:phases
(modify-phases %standard-phases
;; Don't run or require rubocop, the code linting tool, as this is a
;; bit unnecessary.
(add-after 'unpack 'dont-run-rubocop
(lambda _
(substitute* "Rakefile"
((".*rubocop/rake\\_task.*") "")
((".*RuboCop.*") ""))
#t)))))
(propagated-inputs
`(("ruby-builder" ,ruby-builder)
("ruby-cucumber-core" ,ruby-cucumber-core)
("ruby-cucumber-wire" ,ruby-cucumber-wire)
("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
("ruby-diff-lcs" ,ruby-diff-lcs)
("ruby-gherkin" ,ruby-gherkin)
("ruby-multi-json" ,ruby-multi-json)
("ruby-multi-test" ,ruby-multi-test)))
(native-inputs
`(("bundler" ,bundler)
;; Use a untested version of aruba, to avoid a circular dependency, as
;; ruby-aruba depends on ruby-cucumber.
("ruby-aruba", ruby-aruba-without-tests)
("ruby-rspec" ,ruby-rspec)
("ruby-pry" ,ruby-pry)
("ruby-nokogiri" ,ruby-nokogiri)))
(synopsis "Describe automated tests in plain language")
(description
"Cucumber is a tool for running automated tests written in plain
language. It's designed to support a Behaviour Driven Development (BDD)
software development workflow.")
(home-page "https://cucumber.io/")
(license license:expat)))
(define ruby-cucumber-without-tests
(package (inherit ruby-cucumber)
(arguments
'(#:tests? #f))
(native-inputs
'())))
(define-public ruby-cucumber-core
(package
(name "ruby-cucumber-core")