mirror of
https://github.com/TracksApp/tracks.git
synced 2025-09-22 05:50:47 +02:00
fix the conflict between aruba and unit/functional tests by backporting a fix from newer versions of aruba
gemspec changes to comment out dep on cucumber lib/aruba.rb emptied We need to move forward to recent versions of rails/cucumber/etc
This commit is contained in:
parent
50741162af
commit
322248963b
20 changed files with 873 additions and 3 deletions
2
Gemfile
2
Gemfile
|
@ -54,7 +54,7 @@ group :test do
|
||||||
gem "selenium-webdriver" # Note that > 2.14 has problems: https://code.google.com/p/selenium/issues/detail?id=3075
|
gem "selenium-webdriver" # Note that > 2.14 has problems: https://code.google.com/p/selenium/issues/detail?id=3075
|
||||||
gem "database_cleaner", ">=0.5.0"
|
gem "database_cleaner", ">=0.5.0"
|
||||||
gem "cucumber-rails", "~>0.3.2"
|
gem "cucumber-rails", "~>0.3.2"
|
||||||
gem "aruba"
|
gem "aruba", "0.2.2", :path => "vendor/gems/aruba-0.2.2"
|
||||||
|
|
||||||
# uncomment to use the webkit option. This depends on Qt to be installed
|
# uncomment to use the webkit option. This depends on Qt to be installed
|
||||||
#gem "capybara-webkit"
|
#gem "capybara-webkit"
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
PATH
|
||||||
|
remote: vendor/gems/aruba-0.2.2
|
||||||
|
specs:
|
||||||
|
aruba (0.2.2)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: http://rubygems.org/
|
remote: http://rubygems.org/
|
||||||
remote: http://gems.github.com/
|
remote: http://gems.github.com/
|
||||||
|
@ -16,7 +21,6 @@ GEM
|
||||||
activesupport (= 2.3.14)
|
activesupport (= 2.3.14)
|
||||||
activesupport (2.3.14)
|
activesupport (2.3.14)
|
||||||
acts_as_list (0.1.4)
|
acts_as_list (0.1.4)
|
||||||
aruba (0.2.2)
|
|
||||||
bcrypt-ruby (2.1.4)
|
bcrypt-ruby (2.1.4)
|
||||||
builder (3.0.0)
|
builder (3.0.0)
|
||||||
capybara (1.1.2)
|
capybara (1.1.2)
|
||||||
|
@ -133,7 +137,7 @@ DEPENDENCIES
|
||||||
ZenTest (>= 4.0.0)
|
ZenTest (>= 4.0.0)
|
||||||
aasm (~> 2.2.0)
|
aasm (~> 2.2.0)
|
||||||
acts_as_list (~> 0.1.4)
|
acts_as_list (~> 0.1.4)
|
||||||
aruba
|
aruba (= 0.2.2)!
|
||||||
bcrypt-ruby (~> 2.1.4)
|
bcrypt-ruby (~> 2.1.4)
|
||||||
capybara (>= 0.3.5)
|
capybara (>= 0.3.5)
|
||||||
cucumber-rails (~> 0.3.2)
|
cucumber-rails (~> 0.3.2)
|
||||||
|
|
2
vendor/gems/aruba-0.2.2/.bundle/config
vendored
Normal file
2
vendor/gems/aruba-0.2.2/.bundle/config
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
BUNDLE_DISABLE_SHARED_GEMS: "1"
|
5
vendor/gems/aruba-0.2.2/.document
vendored
Normal file
5
vendor/gems/aruba-0.2.2/.document
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
README.rdoc
|
||||||
|
lib/**/*.rb
|
||||||
|
bin/*
|
||||||
|
features/**/*.feature
|
||||||
|
LICENSE
|
23
vendor/gems/aruba-0.2.2/.gitignore
vendored
Normal file
23
vendor/gems/aruba-0.2.2/.gitignore
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
## MAC OS
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
## TEXTMATE
|
||||||
|
*.tmproj
|
||||||
|
tmtags
|
||||||
|
|
||||||
|
## EMACS
|
||||||
|
*~
|
||||||
|
\#*
|
||||||
|
.\#*
|
||||||
|
|
||||||
|
## VIM
|
||||||
|
*.swp
|
||||||
|
|
||||||
|
## PROJECT::GENERAL
|
||||||
|
coverage
|
||||||
|
rdoc
|
||||||
|
pkg
|
||||||
|
|
||||||
|
## PROJECT::SPECIFIC
|
||||||
|
tmp
|
||||||
|
Gemfile.lock
|
5
vendor/gems/aruba-0.2.2/Gemfile
vendored
Normal file
5
vendor/gems/aruba-0.2.2/Gemfile
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
source "http://rubygems.org"
|
||||||
|
gemspec
|
||||||
|
|
||||||
|
gem 'cucumber', :path => '../cucumber' if File.directory?(File.dirname(__FILE__) + '/../cucumber')
|
||||||
|
gem 'gherkin', :path => '../gherkin' if File.directory?(File.dirname(__FILE__) + '/../gherkin')
|
84
vendor/gems/aruba-0.2.2/History.txt
vendored
Normal file
84
vendor/gems/aruba-0.2.2/History.txt
vendored
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
== 0.2.2
|
||||||
|
|
||||||
|
=== New Features
|
||||||
|
* Added a @bin tag that sets up './bin' first on the path (Aslak Hellesøy)
|
||||||
|
* Richer API making aruba easier to use from Ruby code. (Mark Nijhof, Aslak Hellesøy)
|
||||||
|
|
||||||
|
=== Removed Features
|
||||||
|
* No more support for RVM. Use rvm 1.9.2,1.8.7 exec cucumber .... instead. (Mark Nijhof, Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.2.1
|
||||||
|
|
||||||
|
=== Bugfixes
|
||||||
|
* Always compare with RSpec should =~ instead of should match. This gives a diff when there is no match. (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.2.0
|
||||||
|
|
||||||
|
=== New Features
|
||||||
|
* Added aruba.gemspec. (David Chelimsky)
|
||||||
|
|
||||||
|
=== Changed features
|
||||||
|
* Several step definitions regarding output have changed. (#1 Aslak Hellesøy)
|
||||||
|
|
||||||
|
- /^I should see "([^\"]*)"$/
|
||||||
|
+ /^the output should contain "([^"]*)"$/
|
||||||
|
|
||||||
|
- /^I should not see "([^\"]*)"$/
|
||||||
|
+ /^the output should not contain "([^"]*)"$/
|
||||||
|
|
||||||
|
- /^I should see:$/
|
||||||
|
+ /^the output should contain:$/
|
||||||
|
|
||||||
|
- /^I should not see:$/
|
||||||
|
+ /^the output should not contain:$/
|
||||||
|
|
||||||
|
- /^I should see exactly "([^\"]*)"$/
|
||||||
|
+ /^the output should contain exactly "([^"]*)"$/
|
||||||
|
|
||||||
|
- /^I should see exactly:$/
|
||||||
|
+ /^the output should contain exactly:$/
|
||||||
|
|
||||||
|
- /^I should see matching \/([^\/]*)\/$/
|
||||||
|
+ /^the output should match \/([^\/]*)\/$/
|
||||||
|
|
||||||
|
- /^I should see matching:$/
|
||||||
|
+ /^the output should match:$/
|
||||||
|
|
||||||
|
== 0.1.9
|
||||||
|
* If the GOTGEMS environment variable is set, bundler won't run (faster). (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.8
|
||||||
|
* Use // instead of "" for "I should see matching" step. (Aslak Hellesøy)
|
||||||
|
* Replace rvm gemset character '%' with '@' for rvm 0.1.24 (#5 Ashley Moran)
|
||||||
|
* Support gem bundler, making it easier to specify gems. (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.7
|
||||||
|
* New @announce-stderr tag (Robert Wahler)
|
||||||
|
* New "I should see matching" steps using Regexp (Robert Wahler)
|
||||||
|
|
||||||
|
== 0.1.6
|
||||||
|
* When /^I successfully run "(.*)"$/ now prints the combined output if exit status is not 0. (Aslak Hellesøy)
|
||||||
|
* Add bundle to list of common ruby scripts. (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.5
|
||||||
|
* Added ability to map rvm versions to a specific version with config/aruba-rvm.yml. (Aslak Hellesøy)
|
||||||
|
* Check for presence of files. (Aslak Hellesøy)
|
||||||
|
* Allow specification of rvm gemsets. (Aslak Hellesøy)
|
||||||
|
* Detect ruby commands and use current ruby when rvm is not explicitly used. (Aslak Hellesøy)
|
||||||
|
* Added support for rvm, making it possible to choose Ruby interpreter. (Aslak Hellesøy)
|
||||||
|
* Added @announce-cmd, @announce-stdout and @announce tags, useful for seeing what's executed and outputted. (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.4
|
||||||
|
* New step definition for appending to a file (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.3
|
||||||
|
* New step definition for cd (change directory) (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.2
|
||||||
|
* Separated API from Cucumber step definitions, makes this usable without Cucumber. (Aslak Hellesøy)
|
||||||
|
|
||||||
|
== 0.1.1
|
||||||
|
* Better Regexp escaping (David Chelimsky)
|
||||||
|
|
||||||
|
== 0.1.0
|
||||||
|
* First release (David Chelimsky and Aslak Hellesøy)
|
20
vendor/gems/aruba-0.2.2/LICENSE
vendored
Normal file
20
vendor/gems/aruba-0.2.2/LICENSE
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Copyright (c) 2010 Aslak Hellesøy, David Chelimsky
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
41
vendor/gems/aruba-0.2.2/README.rdoc
vendored
Normal file
41
vendor/gems/aruba-0.2.2/README.rdoc
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
= aruba
|
||||||
|
|
||||||
|
Cucumber steps for driving out command line applications. The command line application can be anything,
|
||||||
|
a compiled C program, a Java program, a Perl script - anything. There is also special support for various
|
||||||
|
Ruby versions (see below).
|
||||||
|
|
||||||
|
== Usage
|
||||||
|
|
||||||
|
gem install aruba
|
||||||
|
|
||||||
|
Then, just require the library in one of your ruby files under <tt>features/support</tt>
|
||||||
|
|
||||||
|
require 'aruba'
|
||||||
|
|
||||||
|
You now have a bunch of step definitions that you can use in your features. Look at aruba/cucumber.rb
|
||||||
|
to see all the step definitions. Look at features/*.feature for examples (which are also testing Aruba
|
||||||
|
itself).
|
||||||
|
|
||||||
|
== Getting more output with tags.
|
||||||
|
|
||||||
|
Aruba has several tags you can use to see what command actually gets run (useful if you're using the RVM steps),
|
||||||
|
STDOUT or STDERR. You can put these tags on individual scenarios, or on a feature. The tags are:
|
||||||
|
|
||||||
|
* <tt>@announce-cmd</tt>
|
||||||
|
* <tt>@announce-stdout</tt>
|
||||||
|
* <tt>@announce-stderr</tt>
|
||||||
|
* <tt>@announce</tt> (does all of the above)
|
||||||
|
|
||||||
|
== Note on Patches/Pull Requests
|
||||||
|
|
||||||
|
* Fork the project.
|
||||||
|
* Make your feature addition or bug fix.
|
||||||
|
* Add tests for it. This is important so I don't break it in a
|
||||||
|
future version unintentionally.
|
||||||
|
* Commit, do not mess with rakefile, version, or history.
|
||||||
|
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
||||||
|
* Send me a pull request. Bonus points for topic branches.
|
||||||
|
|
||||||
|
== Copyright
|
||||||
|
|
||||||
|
Copyright (c) 2010 Aslak Hellesøy and David Chelimsky. See LICENSE for details.
|
13
vendor/gems/aruba-0.2.2/Rakefile
vendored
Normal file
13
vendor/gems/aruba-0.2.2/Rakefile
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
require 'rubygems'
|
||||||
|
require 'bundler'
|
||||||
|
Bundler.setup
|
||||||
|
Bundler::GemHelper.install_tasks
|
||||||
|
|
||||||
|
require 'cucumber/rake/task'
|
||||||
|
|
||||||
|
Cucumber::Rake::Task.new do |t|
|
||||||
|
t.cucumber_opts = %w{--tags ~@jruby} unless defined?(JRUBY_VERSION)
|
||||||
|
end
|
||||||
|
|
||||||
|
task :default => :cucumber
|
24
vendor/gems/aruba-0.2.2/aruba.gemspec
vendored
Normal file
24
vendor/gems/aruba-0.2.2/aruba.gemspec
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
||||||
|
|
||||||
|
Gem::Specification.new do |s|
|
||||||
|
s.name = 'aruba'
|
||||||
|
s.version = "0.2.2"
|
||||||
|
s.authors = ["Aslak Hellesøy", "David Chelimsky"]
|
||||||
|
s.description = 'CLI Steps for Cucumber, hand-crafted for you in Aruba'
|
||||||
|
s.summary = "aruba-#{s.version}"
|
||||||
|
s.email = 'cukes@googlegroups.com'
|
||||||
|
s.homepage = 'http://github.com/aslakhellesoy/aruba'
|
||||||
|
|
||||||
|
# s.add_dependency 'cucumber', '~> 0.9.0' unless File.directory?(File.dirname(__FILE__) + '/../cucumber')
|
||||||
|
s.add_development_dependency('rspec', "~> 2.0.0.beta.22")
|
||||||
|
|
||||||
|
s.rubygems_version = "1.3.7"
|
||||||
|
s.files = `git ls-files`.split("\n")
|
||||||
|
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
||||||
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
||||||
|
s.extra_rdoc_files = ["LICENSE", "README.rdoc", "History.txt"]
|
||||||
|
s.rdoc_options = ["--charset=UTF-8"]
|
||||||
|
s.require_path = "lib"
|
||||||
|
end
|
||||||
|
|
1
vendor/gems/aruba-0.2.2/config/.gitignore
vendored
Normal file
1
vendor/gems/aruba-0.2.2/config/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
aruba-rvm.yml
|
21
vendor/gems/aruba-0.2.2/features/exit_statuses.feature
vendored
Normal file
21
vendor/gems/aruba-0.2.2/features/exit_statuses.feature
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
Feature: exit statuses
|
||||||
|
|
||||||
|
In order to specify expected exit statuses
|
||||||
|
As a developer using Cucumber
|
||||||
|
I want to use the "the exit status should be" step
|
||||||
|
|
||||||
|
Scenario: exit status of 0
|
||||||
|
When I run "ruby -h"
|
||||||
|
Then the exit status should be 0
|
||||||
|
|
||||||
|
Scenario: non-zero exit status
|
||||||
|
When I run "ruby -e 'exit 56'"
|
||||||
|
Then the exit status should be 56
|
||||||
|
And the exit status should not be 0
|
||||||
|
|
||||||
|
Scenario: Successfully run something
|
||||||
|
When I successfully run "ruby -e 'exit 0'"
|
||||||
|
|
||||||
|
Scenario: Unsuccessfully run something
|
||||||
|
When I do aruba I successfully run "ruby -e 'exit 10'"
|
||||||
|
Then aruba should fail with "Exit status was 10"
|
84
vendor/gems/aruba-0.2.2/features/file_system_commands.feature
vendored
Normal file
84
vendor/gems/aruba-0.2.2/features/file_system_commands.feature
vendored
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
Feature: file system commands
|
||||||
|
|
||||||
|
In order to specify commands that load files
|
||||||
|
As a developer using Cucumber
|
||||||
|
I want to create temporary files
|
||||||
|
|
||||||
|
Scenario: create a dir
|
||||||
|
Given a directory named "foo/bar"
|
||||||
|
When I run "ruby -e \"puts test ?d, 'foo'\""
|
||||||
|
Then the stdout should contain "true"
|
||||||
|
|
||||||
|
Scenario: create a file
|
||||||
|
Given a file named "foo/bar/example.rb" with:
|
||||||
|
"""
|
||||||
|
puts "hello world"
|
||||||
|
"""
|
||||||
|
When I run "ruby foo/bar/example.rb"
|
||||||
|
Then the output should contain "hello world"
|
||||||
|
|
||||||
|
Scenario: append to a file
|
||||||
|
Given a file named "foo/bar/example.rb" with:
|
||||||
|
"""
|
||||||
|
puts "hello world"
|
||||||
|
"""
|
||||||
|
When I append to "foo/bar/example.rb" with:
|
||||||
|
"""
|
||||||
|
puts "this was appended"
|
||||||
|
"""
|
||||||
|
When I run "ruby foo/bar/example.rb"
|
||||||
|
Then the output should contain "hello world"
|
||||||
|
And the output should contain "this was appended"
|
||||||
|
|
||||||
|
Scenario: clean up files generated in previous scenario
|
||||||
|
When I run "ruby foo/bar/example.rb"
|
||||||
|
Then the exit status should be 1
|
||||||
|
And the output should contain "No such file or directory -- foo/bar/example.rb"
|
||||||
|
|
||||||
|
Scenario: change to a subdir
|
||||||
|
Given a file named "foo/bar/example.rb" with:
|
||||||
|
"""
|
||||||
|
puts "hello world"
|
||||||
|
"""
|
||||||
|
When I cd to "foo/bar"
|
||||||
|
And I run "ruby example.rb"
|
||||||
|
Then the output should contain "hello world"
|
||||||
|
|
||||||
|
Scenario: Reset current directory from previous scenario
|
||||||
|
When I run "ruby example.rb"
|
||||||
|
Then the exit status should be 1
|
||||||
|
|
||||||
|
Scenario: Holler if cd to bad dir
|
||||||
|
Given a file named "foo/bar/example.rb" with:
|
||||||
|
"""
|
||||||
|
puts "hello world"
|
||||||
|
"""
|
||||||
|
When I do aruba I cd to "foo/nonexistant"
|
||||||
|
Then aruba should fail with "tmp/aruba/foo/nonexistant is not a directory"
|
||||||
|
|
||||||
|
Scenario: Check for presence of a subset of files
|
||||||
|
Given an empty file named "lorem/ipsum/dolor"
|
||||||
|
Given an empty file named "lorem/ipsum/sit"
|
||||||
|
Given an empty file named "lorem/ipsum/amet"
|
||||||
|
Then the following files should exist:
|
||||||
|
| lorem/ipsum/dolor |
|
||||||
|
| lorem/ipsum/amet |
|
||||||
|
|
||||||
|
Scenario: Check for absence of files
|
||||||
|
Then the following files should not exist:
|
||||||
|
| lorem/ipsum/dolor |
|
||||||
|
|
||||||
|
Scenario: Check for presence of a subset of directories
|
||||||
|
Given a directory named "foo/bar"
|
||||||
|
Given a directory named "foo/bla"
|
||||||
|
Then the following directories should exist:
|
||||||
|
| foo/bar |
|
||||||
|
| foo/bla |
|
||||||
|
|
||||||
|
Scenario: Check file contents
|
||||||
|
Given a file named "foo" with:
|
||||||
|
"""
|
||||||
|
hello world
|
||||||
|
"""
|
||||||
|
Then the file "foo" should contain "hello world"
|
||||||
|
And the file "foo" should not contain "HELLO WORLD"
|
96
vendor/gems/aruba-0.2.2/features/output.feature
vendored
Normal file
96
vendor/gems/aruba-0.2.2/features/output.feature
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
Feature: Output
|
||||||
|
|
||||||
|
In order to specify expected output
|
||||||
|
As a developer using Cucumber
|
||||||
|
I want to use the "the output should contain" step
|
||||||
|
|
||||||
|
Scenario: Run unknown command
|
||||||
|
When I run "neverever gonna work"
|
||||||
|
Then the output should contain:
|
||||||
|
"""
|
||||||
|
sh: neverever: command not found
|
||||||
|
"""
|
||||||
|
|
||||||
|
Scenario: Detect subset of one-line output
|
||||||
|
When I run "ruby -e 'puts \"hello world\"'"
|
||||||
|
Then the output should contain "hello world"
|
||||||
|
|
||||||
|
Scenario: Detect subset of one-line output
|
||||||
|
When I run "echo 'hello world'"
|
||||||
|
Then the output should contain "hello world"
|
||||||
|
|
||||||
|
Scenario: Detect absence of one-line output
|
||||||
|
When I run "ruby -e 'puts \"hello world\"'"
|
||||||
|
Then the output should not contain "good-bye"
|
||||||
|
|
||||||
|
Scenario: Detect subset of multiline output
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
||||||
|
Then the output should contain:
|
||||||
|
"""
|
||||||
|
hello
|
||||||
|
"""
|
||||||
|
|
||||||
|
Scenario: Detect subset of multiline output
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
||||||
|
Then the output should not contain:
|
||||||
|
"""
|
||||||
|
good-bye
|
||||||
|
"""
|
||||||
|
|
||||||
|
Scenario: Detect exact one-line output
|
||||||
|
When I run "ruby -e 'puts \"hello world\"'"
|
||||||
|
Then the output should contain exactly "hello world\n"
|
||||||
|
|
||||||
|
Scenario: Detect exact multiline output
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
||||||
|
Then the output should contain exactly:
|
||||||
|
"""
|
||||||
|
hello
|
||||||
|
world
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
@announce
|
||||||
|
Scenario: Detect subset of one-line output with regex
|
||||||
|
When I run "ruby --version"
|
||||||
|
Then the output should contain "ruby"
|
||||||
|
And the output should match /ruby ([\d]+\.[\d]+\.[\d]+)(p\d+)? \(.*$/
|
||||||
|
|
||||||
|
@announce
|
||||||
|
Scenario: Detect subset of multiline output with regex
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\\nextra line1\\nextra line2\\nimportant line\"'"
|
||||||
|
Then the output should match:
|
||||||
|
"""
|
||||||
|
he..o
|
||||||
|
wor.d
|
||||||
|
.*
|
||||||
|
important line
|
||||||
|
"""
|
||||||
|
|
||||||
|
@announce
|
||||||
|
Scenario: Match passing exit status and partial output
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
||||||
|
Then it should pass with:
|
||||||
|
"""
|
||||||
|
hello
|
||||||
|
"""
|
||||||
|
|
||||||
|
@announce-stdout
|
||||||
|
Scenario: Match failing exit status and partial output
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\";exit 99'"
|
||||||
|
Then it should fail with:
|
||||||
|
"""
|
||||||
|
hello
|
||||||
|
"""
|
||||||
|
|
||||||
|
@announce-cmd
|
||||||
|
Scenario: Match output in stdout
|
||||||
|
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
||||||
|
Then the stdout should contain "hello"
|
||||||
|
Then the stderr should not contain "hello"
|
||||||
|
|
||||||
|
@announce-stderr
|
||||||
|
Scenario: Match output in stderr
|
||||||
|
When I run "ruby -e 'STDERR.puts \"hello\\nworld\";exit 99'"
|
||||||
|
Then the stderr should contain "hello"
|
||||||
|
Then the stdout should not contain "hello"
|
24
vendor/gems/aruba-0.2.2/features/step_definitions/aruba_dev_steps.rb
vendored
Normal file
24
vendor/gems/aruba-0.2.2/features/step_definitions/aruba_dev_steps.rb
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
Given /^I have a local file named "([^"]*)" with:$/ do |filename, content|
|
||||||
|
File.open(filename, 'w') {|io| io.write(content)}
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I do aruba (.*)$/ do |aruba_step|
|
||||||
|
begin
|
||||||
|
When(aruba_step)
|
||||||
|
rescue => e
|
||||||
|
@aruba_exception = e
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain the JRuby version$/ do
|
||||||
|
pending "This must be manually run in JRuby" unless defined?(JRUBY_VERSION)
|
||||||
|
Then %{the output should contain "#{JRUBY_VERSION}"}
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain the current Ruby version$/ do
|
||||||
|
Then %{the output should contain "#{RUBY_VERSION}"}
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^aruba should fail with "([^"]*)"$/ do |error_message|
|
||||||
|
@aruba_exception.message.should =~ compile_and_escape(error_message)
|
||||||
|
end
|
15
vendor/gems/aruba-0.2.2/features/support/env.rb
vendored
Normal file
15
vendor/gems/aruba-0.2.2/features/support/env.rb
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
|
||||||
|
require 'aruba'
|
||||||
|
require 'fileutils'
|
||||||
|
|
||||||
|
begin
|
||||||
|
# rspec-2
|
||||||
|
require 'rspec/expectations'
|
||||||
|
rescue LoadError
|
||||||
|
# rspec-1
|
||||||
|
require 'spec/expectations'
|
||||||
|
end
|
||||||
|
|
||||||
|
Before do
|
||||||
|
FileUtils.rm(Dir['config/*.yml'])
|
||||||
|
end
|
0
vendor/gems/aruba-0.2.2/lib/aruba.rb
vendored
Normal file
0
vendor/gems/aruba-0.2.2/lib/aruba.rb
vendored
Normal file
220
vendor/gems/aruba-0.2.2/lib/aruba/api.rb
vendored
Normal file
220
vendor/gems/aruba-0.2.2/lib/aruba/api.rb
vendored
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
require 'tempfile'
|
||||||
|
require 'rbconfig'
|
||||||
|
|
||||||
|
module Aruba
|
||||||
|
module Api
|
||||||
|
def in_current_dir(&block)
|
||||||
|
_mkdir(current_dir)
|
||||||
|
Dir.chdir(current_dir, &block)
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_dir
|
||||||
|
File.join(*dirs)
|
||||||
|
end
|
||||||
|
|
||||||
|
def cd(dir)
|
||||||
|
dirs << dir
|
||||||
|
raise "#{current_dir} is not a directory." unless File.directory?(current_dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
def dirs
|
||||||
|
@dirs ||= ['tmp/aruba']
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_file(file_name, file_content, check_presence = false)
|
||||||
|
in_current_dir do
|
||||||
|
raise "expected #{file_name} to be present" if check_presence && !File.file?(file_name)
|
||||||
|
_mkdir(File.dirname(file_name))
|
||||||
|
File.open(file_name, 'w') { |f| f << file_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def append_to_file(file_name, file_content)
|
||||||
|
in_current_dir do
|
||||||
|
File.open(file_name, 'a') { |f| f << file_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_dir(dir_name)
|
||||||
|
in_current_dir do
|
||||||
|
_mkdir(dir_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_file_presence(paths, expect_presence)
|
||||||
|
in_current_dir do
|
||||||
|
paths.each do |path|
|
||||||
|
if expect_presence
|
||||||
|
File.should be_file(path)
|
||||||
|
else
|
||||||
|
File.should_not be_file(path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_file_content(file, partial_content, expect_match)
|
||||||
|
regexp = compile_and_escape(partial_content)
|
||||||
|
in_current_dir do
|
||||||
|
content = IO.read(file)
|
||||||
|
if expect_match
|
||||||
|
content.should =~ regexp
|
||||||
|
else
|
||||||
|
content.should_not =~ regexp
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_exact_file_content(file, exact_content)
|
||||||
|
in_current_dir do
|
||||||
|
IO.read(file).should == exact_content
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_directory_presence(paths, expect_presence)
|
||||||
|
in_current_dir do
|
||||||
|
paths.each do |path|
|
||||||
|
if expect_presence
|
||||||
|
File.should be_directory(path)
|
||||||
|
else
|
||||||
|
File.should_not be_directory(path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def _mkdir(dir_name)
|
||||||
|
FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def unescape(string)
|
||||||
|
eval(%{"#{string}"})
|
||||||
|
end
|
||||||
|
|
||||||
|
def compile_and_escape(string)
|
||||||
|
Regexp.compile(Regexp.escape(string))
|
||||||
|
end
|
||||||
|
|
||||||
|
def combined_output
|
||||||
|
@last_stdout + (@last_stderr == '' ? '' : "\n#{'-'*70}\n#{@last_stderr}")
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_partial_output(partial_output)
|
||||||
|
combined_output.should =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_passing_with(partial_output)
|
||||||
|
assert_exit_status_and_partial_output(true, partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_failing_with(partial_output)
|
||||||
|
assert_exit_status_and_partial_output(false, partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_exit_status_and_partial_output(expect_to_pass, partial_output)
|
||||||
|
assert_partial_output(partial_output)
|
||||||
|
if expect_to_pass
|
||||||
|
@last_exit_status.should == 0
|
||||||
|
else
|
||||||
|
@last_exit_status.should_not == 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def install_gems(gemfile)
|
||||||
|
create_file("Gemfile", gemfile)
|
||||||
|
if ENV['GOTGEMS'].nil?
|
||||||
|
run("gem install bundler")
|
||||||
|
run("bundle --no-color install")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def run(cmd, fail_on_error=true)
|
||||||
|
cmd = detect_ruby(cmd)
|
||||||
|
|
||||||
|
stderr_file = Tempfile.new('cucumber')
|
||||||
|
stderr_file.close
|
||||||
|
in_current_dir do
|
||||||
|
announce_or_puts("$ cd #{Dir.pwd}") if @announce_dir
|
||||||
|
announce_or_puts("$ #{cmd}") if @announce_cmd
|
||||||
|
|
||||||
|
mode = RUBY_VERSION =~ /^1\.9/ ? {:external_encoding=>"UTF-8"} : 'r'
|
||||||
|
|
||||||
|
IO.popen("#{cmd} 2> #{stderr_file.path}", mode) do |io|
|
||||||
|
@last_stdout = io.read
|
||||||
|
announce_or_puts(@last_stdout) if @announce_stdout
|
||||||
|
end
|
||||||
|
|
||||||
|
@last_exit_status = $?.exitstatus
|
||||||
|
end
|
||||||
|
@last_stderr = IO.read(stderr_file.path)
|
||||||
|
|
||||||
|
announce_or_puts(@last_stderr) if @announce_stderr
|
||||||
|
|
||||||
|
if(@last_exit_status != 0 && fail_on_error)
|
||||||
|
fail("Exit status was #{@last_exit_status}. Output:\n#{combined_output}")
|
||||||
|
end
|
||||||
|
|
||||||
|
@last_stderr
|
||||||
|
end
|
||||||
|
|
||||||
|
def announce_or_puts(msg)
|
||||||
|
if(@puts)
|
||||||
|
puts(msg)
|
||||||
|
else
|
||||||
|
announce(msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def detect_ruby(cmd)
|
||||||
|
if cmd =~ /^ruby\s/
|
||||||
|
cmd.gsub(/^ruby\s/, "#{current_ruby} ")
|
||||||
|
else
|
||||||
|
cmd
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_ruby
|
||||||
|
File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
|
||||||
|
end
|
||||||
|
|
||||||
|
def use_clean_gemset(gemset)
|
||||||
|
run(%{rvm gemset create "#{gemset}"}, true)
|
||||||
|
if @last_stdout =~ /'#{gemset}' gemset created \((.*)\)\./
|
||||||
|
gem_home = $1
|
||||||
|
set_env('GEM_HOME', gem_home)
|
||||||
|
set_env('GEM_PATH', gem_home)
|
||||||
|
set_env('BUNDLE_PATH', gem_home)
|
||||||
|
|
||||||
|
paths = (ENV['PATH'] || "").split(File::PATH_SEPARATOR)
|
||||||
|
paths.unshift(File.join(gem_home, 'bin'))
|
||||||
|
set_env('PATH', paths.uniq.join(File::PATH_SEPARATOR))
|
||||||
|
|
||||||
|
run("gem install bundler", true)
|
||||||
|
else
|
||||||
|
raise "I didn't understand rvm's output: #{@last_stdout}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def unset_bundler_env_vars
|
||||||
|
%w[RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE].each do |key|
|
||||||
|
set_env(key, nil)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_env(key, value)
|
||||||
|
announce_or_puts(%{$ export #{key}="#{value}"}) if @announce_env
|
||||||
|
original_env[key] = ENV.delete(key)
|
||||||
|
ENV[key] = value
|
||||||
|
end
|
||||||
|
|
||||||
|
def restore_env
|
||||||
|
original_env.each do |key, value|
|
||||||
|
ENV[key] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def original_env
|
||||||
|
@original_env ||= {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
188
vendor/gems/aruba-0.2.2/lib/aruba/cucumber.rb
vendored
Normal file
188
vendor/gems/aruba-0.2.2/lib/aruba/cucumber.rb
vendored
Normal file
|
@ -0,0 +1,188 @@
|
||||||
|
require 'aruba/api'
|
||||||
|
|
||||||
|
World(Aruba::Api)
|
||||||
|
|
||||||
|
Before('@disable-bundler') do
|
||||||
|
unset_bundler_env_vars
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@bin') do
|
||||||
|
@__aruba_original_paths = (ENV['PATH'] || '').split(File::PATH_SEPARATOR)
|
||||||
|
ENV['PATH'] = ([File.expand_path('bin')] + @__aruba_original_paths).join(File::PATH_SEPARATOR)
|
||||||
|
end
|
||||||
|
|
||||||
|
After('@bin') do
|
||||||
|
ENV['PATH'] = @__aruba_original_paths.join(File::PATH_SEPARATOR)
|
||||||
|
end
|
||||||
|
|
||||||
|
Before do
|
||||||
|
FileUtils.rm_rf(current_dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@puts') do
|
||||||
|
@puts = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce-cmd') do
|
||||||
|
@announce_cmd = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce-stdout') do
|
||||||
|
@announce_stdout = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce-stderr') do
|
||||||
|
@announce_stderr = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce-dir') do
|
||||||
|
@announce_dir = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce-env') do
|
||||||
|
@announce_env = true
|
||||||
|
end
|
||||||
|
|
||||||
|
Before('@announce') do
|
||||||
|
@announce_stdout = true
|
||||||
|
@announce_stderr = true
|
||||||
|
@announce_cmd = true
|
||||||
|
@announce_dir = true
|
||||||
|
@announce_env = true
|
||||||
|
end
|
||||||
|
|
||||||
|
After do
|
||||||
|
restore_env
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I'm using a clean gemset "([^"]*)"$/ do |gemset|
|
||||||
|
use_clean_gemset(gemset)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^a directory named "([^"]*)"$/ do |dir_name|
|
||||||
|
create_dir(dir_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^a file named "([^"]*)" with:$/ do |file_name, file_content|
|
||||||
|
create_file(file_name, file_content)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^an empty file named "([^"]*)"$/ do |file_name|
|
||||||
|
create_file(file_name, "")
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I write to "([^"]*)" with:$/ do |file_name, file_content|
|
||||||
|
create_file(file_name, file_content, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I overwrite "([^"]*)" with:$/ do |file_name, file_content|
|
||||||
|
create_file(file_name, file_content, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I append to "([^"]*)" with:$/ do |file_name, file_content|
|
||||||
|
append_to_file(file_name, file_content)
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I cd to "([^"]*)"$/ do |dir|
|
||||||
|
cd(dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I run "(.*)"$/ do |cmd|
|
||||||
|
run(unescape(cmd), false)
|
||||||
|
end
|
||||||
|
|
||||||
|
When /^I successfully run "(.*)"$/ do |cmd|
|
||||||
|
run(unescape(cmd))
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain "([^"]*)"$/ do |partial_output|
|
||||||
|
assert_partial_output(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should not contain "([^"]*)"$/ do |partial_output|
|
||||||
|
combined_output.should_not =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain:$/ do |partial_output|
|
||||||
|
combined_output.should =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should not contain:$/ do |partial_output|
|
||||||
|
combined_output.should_not =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain exactly "([^"]*)"$/ do |exact_output|
|
||||||
|
combined_output.should == unescape(exact_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should contain exactly:$/ do |exact_output|
|
||||||
|
combined_output.should == exact_output
|
||||||
|
end
|
||||||
|
|
||||||
|
# "the output should match" allows regex in the partial_output, if
|
||||||
|
# you don't need regex, use "the output should contain" instead since
|
||||||
|
# that way, you don't have to escape regex characters that
|
||||||
|
# appear naturally in the output
|
||||||
|
Then /^the output should match \/([^\/]*)\/$/ do |partial_output|
|
||||||
|
combined_output.should =~ /#{partial_output}/
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the output should match:$/ do |partial_output|
|
||||||
|
combined_output.should =~ /#{partial_output}/m
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the exit status should be (\d+)$/ do |exit_status|
|
||||||
|
@last_exit_status.should == exit_status.to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the exit status should not be (\d+)$/ do |exit_status|
|
||||||
|
@last_exit_status.should_not == exit_status.to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^it should (pass|fail) with:$/ do |pass_fail, partial_output|
|
||||||
|
self.__send__("assert_#{pass_fail}ing_with", partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the stderr should contain "([^"]*)"$/ do |partial_output|
|
||||||
|
@last_stderr.should =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the stdout should contain "([^"]*)"$/ do |partial_output|
|
||||||
|
@last_stdout.should =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the stderr should not contain "([^"]*)"$/ do |partial_output|
|
||||||
|
@last_stderr.should_not =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the stdout should not contain "([^"]*)"$/ do |partial_output|
|
||||||
|
@last_stdout.should_not =~ compile_and_escape(partial_output)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the following files should exist:$/ do |files|
|
||||||
|
check_file_presence(files.raw.map{|file_row| file_row[0]}, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the following files should not exist:$/ do |files|
|
||||||
|
check_file_presence(files.raw.map{|file_row| file_row[0]}, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the following directories should exist:$/ do |directories|
|
||||||
|
check_directory_presence(directories.raw.map{|directory_row| directory_row[0]}, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the following directories should not exist:$/ do |directories|
|
||||||
|
check_file_presence(directories.raw.map{|directory_row| directory_row[0]}, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the file "([^"]*)" should contain "([^"]*)"$/ do |file, partial_content|
|
||||||
|
check_file_content(file, partial_content, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the file "([^"]*)" should not contain "([^"]*)"$/ do |file, partial_content|
|
||||||
|
check_file_content(file, partial_content, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^the file "([^"]*)" should contain exactly:$/ do |file, exact_content|
|
||||||
|
check_exact_file_content(file, exact_content)
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue