aruba-jbb 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +7 -0
- data/.gitignore +22 -0
- data/History.txt +75 -0
- data/LICENSE +20 -0
- data/README.rdoc +163 -0
- data/Rakefile +52 -0
- data/aruba-jbb.gemspec +60 -0
- data/config/.gitignore +1 -0
- data/features/exit_statuses.feature +21 -0
- data/features/file_system_commands.feature +115 -0
- data/features/output.feature +96 -0
- data/features/running_ruby.feature +76 -0
- data/features/step_definitions/aruba_dev_steps.rb +74 -0
- data/features/support/env.rb +15 -0
- data/lib/aruba/api.rb +296 -0
- data/lib/aruba/cucumber_steps.rb +234 -0
- data/lib/aruba.rb +1 -0
- metadata +117 -0
data/.document
ADDED
data/.gitignore
ADDED
data/History.txt
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
== 0.2.1
|
2
|
+
|
3
|
+
=== Bugfixes
|
4
|
+
* Always compare with RSpec should =~ instead of should match. This gives a diff when there is no match. (Aslak Hellesøy)
|
5
|
+
|
6
|
+
== 0.2.0
|
7
|
+
|
8
|
+
=== New Features
|
9
|
+
* Added aruba.gemspec. (David Chelimsky)
|
10
|
+
|
11
|
+
=== Changed features
|
12
|
+
* Several step definitions regarding output have changed. (#1 Aslak Hellesøy)
|
13
|
+
|
14
|
+
- /^I should see "([^\"]*)"$/
|
15
|
+
+ /^the output should contain "([^"]*)"$/
|
16
|
+
|
17
|
+
- /^I should not see "([^\"]*)"$/
|
18
|
+
+ /^the output should not contain "([^"]*)"$/
|
19
|
+
|
20
|
+
- /^I should see:$/
|
21
|
+
+ /^the output should contain:$/
|
22
|
+
|
23
|
+
- /^I should not see:$/
|
24
|
+
+ /^the output should not contain:$/
|
25
|
+
|
26
|
+
- /^I should see exactly "([^\"]*)"$/
|
27
|
+
+ /^the output should contain exactly "([^"]*)"$/
|
28
|
+
|
29
|
+
- /^I should see exactly:$/
|
30
|
+
+ /^the output should contain exactly:$/
|
31
|
+
|
32
|
+
- /^I should see matching \/([^\/]*)\/$/
|
33
|
+
+ /^the output should match \/([^\/]*)\/$/
|
34
|
+
|
35
|
+
- /^I should see matching:$/
|
36
|
+
+ /^the output should match:$/
|
37
|
+
|
38
|
+
== 0.1.9
|
39
|
+
* If the GOTGEMS environment variable is set, bundler won't run (faster). (Aslak Hellesøy)
|
40
|
+
|
41
|
+
== 0.1.8
|
42
|
+
* Use // instead of "" for "I should see matching" step. (Aslak Hellesøy)
|
43
|
+
* Replace rvm gemset character '%' with '@' for rvm 0.1.24 (#5 Ashley Moran)
|
44
|
+
* Support gem bundler, making it easier to specify gems. (Aslak Hellesøy)
|
45
|
+
|
46
|
+
== 0.1.7
|
47
|
+
* New @announce-stderr tag (Robert Wahler)
|
48
|
+
* New "I should see matching" steps using Regexp (Robert Wahler)
|
49
|
+
|
50
|
+
== 0.1.6
|
51
|
+
* When /^I successfully run "(.*)"$/ now prints the combined output if exit status is not 0. (Aslak Hellesøy)
|
52
|
+
* Add bundle to list of common ruby scripts. (Aslak Hellesøy)
|
53
|
+
|
54
|
+
== 0.1.5
|
55
|
+
* Added ability to map rvm versions to a specific version with config/aruba-rvm.yml. (Aslak Hellesøy)
|
56
|
+
* Check for presence of files. (Aslak Hellesøy)
|
57
|
+
* Allow specification of rvm gemsets. (Aslak Hellesøy)
|
58
|
+
* Detect ruby commands and use current ruby when rvm is not explicitly used. (Aslak Hellesøy)
|
59
|
+
* Added support for rvm, making it possible to choose Ruby interpreter. (Aslak Hellesøy)
|
60
|
+
* Added @announce-cmd, @announce-stdout and @announce tags, useful for seeing what's executed and outputted. (Aslak Hellesøy)
|
61
|
+
|
62
|
+
== 0.1.4
|
63
|
+
* New step definition for appending to a file (Aslak Hellesøy)
|
64
|
+
|
65
|
+
== 0.1.3
|
66
|
+
* New step definition for cd (change directory) (Aslak Hellesøy)
|
67
|
+
|
68
|
+
== 0.1.2
|
69
|
+
* Separated API from Cucumber step definitions, makes this usable without Cucumber. (Aslak Hellesøy)
|
70
|
+
|
71
|
+
== 0.1.1
|
72
|
+
* Better Regexp escaping (David Chelimsky)
|
73
|
+
|
74
|
+
== 0.1.0
|
75
|
+
* First release (David Chelimsky and Aslak Hellesøy)
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 Aslak Hellesøy, David Chelimsky
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
= Aruba
|
2
|
+
|
3
|
+
aruba-jbb is a fork of http://github.com/aslakhellesoy/aruba
|
4
|
+
|
5
|
+
Aruba is a set of api methods and cucumber steps for driving out command
|
6
|
+
line applications. The command line application can be anything, a compiled
|
7
|
+
C program, a Java program, a Perl script - anything.
|
8
|
+
|
9
|
+
Aruba may also be used to test complex configuration files for third-party
|
10
|
+
applications where the software itself may not be modified.
|
11
|
+
|
12
|
+
Aruba provides support for testing using various Ruby versions (see below).
|
13
|
+
|
14
|
+
== Usage
|
15
|
+
|
16
|
+
gem install aruba-jbb
|
17
|
+
|
18
|
+
Then, just require the library in one of your Ruby files under
|
19
|
+
<tt>features/support</tt>
|
20
|
+
|
21
|
+
require 'aruba' # note that aruba-jbb and aruba cannot co-exist
|
22
|
+
|
23
|
+
You now have a bunch of step definitions that you can use in your features.
|
24
|
+
Look at aruba/cucumber_steps.rb to see all the step definitions. Look at
|
25
|
+
features/*.feature for examples (which are also testing Aruba itself).
|
26
|
+
|
27
|
+
You should be aware that Aruba runs the application it tests and creates
|
28
|
+
all local output in its own working directory (awd). The awd defaults to
|
29
|
+
<tt>tmp/aruba</tt> and is purged and created by Aruba at the beginning of
|
30
|
+
every Scenario. However, the contents created by the last Scenario
|
31
|
+
are left in the awd for your inspection.
|
32
|
+
|
33
|
+
If it is desired to alter the awd then this fork provides for setting the
|
34
|
+
working directory to something else via the ARUBA_WORKING_DIR environmental
|
35
|
+
variable. This must be set relative to the user's cwd.
|
36
|
+
|
37
|
+
This fork also contains a <tt>rebase</tt> api method which creates soft
|
38
|
+
(symbolic) links inside aruba's working directory to directories rooted
|
39
|
+
at the user's own current working directory (cwd). This permits the
|
40
|
+
application to find its configuation and support files in their usual
|
41
|
+
directories. A string of directories to rebase also may be passed by
|
42
|
+
setting the ARUBA_REBASE environmental variable. These must be set relative
|
43
|
+
to the user's cwd as well.
|
44
|
+
|
45
|
+
For example:
|
46
|
+
|
47
|
+
<tt>ARUBA_REBASE="bin,config,lib"</tt>
|
48
|
+
|
49
|
+
This will cause Aruba to create soft links called <tt>./tmp/aruba/bin</tt>,
|
50
|
+
<tt>./tmp/aruba/config</tt> and <tt>./tmp/aruba/lib</tt> each pointing
|
51
|
+
to the corresponding directory in the user's cwd.
|
52
|
+
|
53
|
+
This fork also provides support for a <tt>@no-aruba-tmpdir</tt> tag. Use of
|
54
|
+
this tag will cause Aruba to run the test application in the user's cwd
|
55
|
+
instead of the awd. When this tag is activated the directory contents are not
|
56
|
+
cleared, for obvious reasons. In fact, if the awd is set to anything outside
|
57
|
+
a directory tree containing a <tt>/tmp/</tt> portion then an error is raised
|
58
|
+
when trying to clear the contents. For similar reasons, when this is the case
|
59
|
+
the <tt>rebase</tt> method also raises an error.
|
60
|
+
|
61
|
+
== Ruby/RVM love
|
62
|
+
|
63
|
+
Aruba has a couple of step definitions that make it easier to test your
|
64
|
+
Ruby command line program with specific versions of Ruby (regardless of
|
65
|
+
what Ruby version you're using to invoke Cucumber).
|
66
|
+
|
67
|
+
This is done with the follwoing step definitions:
|
68
|
+
|
69
|
+
/^I am using rvm "([^"]*)"$/
|
70
|
+
/^I am using rvm gemset "([^"]*)"$/
|
71
|
+
|
72
|
+
Then, if you use the step definition:
|
73
|
+
|
74
|
+
/^I run "(.*)"$/
|
75
|
+
|
76
|
+
.. with a command that starts with <tt>ruby</tt>, Aruba will actually invoke
|
77
|
+
the Ruby version (and gemset if you specified) instead of just <tt>ruby</tt>,
|
78
|
+
which would be the one on your <tt>PATH</tt>, which might not be the one you
|
79
|
+
want. The same goes for commands starting with <tt>bundle</tt>,
|
80
|
+
<tt>cucumber</tt>, <tt>gem</tt>, <tt>jeweler</tt>, <tt>rails</tt>,
|
81
|
+
<tt>rake</tt>, <tt>rspec</tt> and <tt>spec</tt> -
|
82
|
+
they can all be run with a particular Ruby version that you specify.
|
83
|
+
|
84
|
+
See features/running_ruby.feature for examples.
|
85
|
+
|
86
|
+
== Getting more output with tags.
|
87
|
+
|
88
|
+
Aruba has several tags you can use to see what command actually gets run
|
89
|
+
(useful if you're using the RVM steps), STDOUT or STDERR. You can put these
|
90
|
+
tags on individual scenarios, or on a feature. The tags are:
|
91
|
+
|
92
|
+
* <tt>@announce-cmd</tt>
|
93
|
+
* <tt>@announce-stdout</tt>
|
94
|
+
* <tt>@announce-stderr</tt>
|
95
|
+
* <tt>@announce</tt> (does all of the above)
|
96
|
+
|
97
|
+
== Note on Patches/Pull Requests
|
98
|
+
|
99
|
+
* Fork the project.
|
100
|
+
* Make your feature addition or bug fix.
|
101
|
+
* Add tests for it. This is important so I don't break it in a
|
102
|
+
future version unintentionally.
|
103
|
+
* Commit, do not mess with rakefile, version, or history.
|
104
|
+
(if you want to have your own version, that is fine but bump
|
105
|
+
version in a commit by itself I can ignore when I pull)
|
106
|
+
* Send me a pull request. Bonus points for topic branches.
|
107
|
+
|
108
|
+
== Note on Aruba-JBB Step Definitions
|
109
|
+
|
110
|
+
This fork has extensively refactoried both the API and the Step
|
111
|
+
Definitions. There is some breakage with the step definitions
|
112
|
+
provided with the parent. Mostly these have to do with making
|
113
|
+
Aruba-jbb steps more specific so as to avoid anticipated collisions
|
114
|
+
with the user's own steps. On the other hand, most Aruba-jbb steps
|
115
|
+
are defined as sub strings so that the subject is no longer part of
|
116
|
+
the matcher. For example, instead of:
|
117
|
+
|
118
|
+
<tt>When /^I have a file named "([^\"]*)"$/ do |file|</tt>
|
119
|
+
|
120
|
+
This fork uses:
|
121
|
+
|
122
|
+
<tt>When /do have a file named "([^\"]*)"$/ do |file|</tt>
|
123
|
+
|
124
|
+
So in your features you can write this:
|
125
|
+
|
126
|
+
<tt> When I do have a file named "test"</tt>
|
127
|
+
. . .
|
128
|
+
<tt> When we do have a file named "test"</tt>
|
129
|
+
. . .
|
130
|
+
<tt> When they do have a file named "test"</tt>
|
131
|
+
|
132
|
+
== Note on Aruba-JBB Development Testing
|
133
|
+
|
134
|
+
This fork has not tested the JRuby features. It has also disabled
|
135
|
+
RCov in the Rake file and removed dependencies on beta versions of
|
136
|
+
RSpec.
|
137
|
+
|
138
|
+
There is a problem with loading Ruby libraries from rake which causes
|
139
|
+
Gherkin not to be found by Cucumber when Aruba features are exercised
|
140
|
+
using Rake (<tt>rake</tt> or <tt>rake cucumber</tt>). Nonetheless, all
|
141
|
+
features not using JRuby pass when exercised using <tt>cucumber features</tt>.
|
142
|
+
|
143
|
+
You can contact me at byrnejb@jharte-lyne.ca. I also monitor the
|
144
|
+
cukes@googlegroups.com mailing list.
|
145
|
+
|
146
|
+
== Note on Cucumber-Rails
|
147
|
+
|
148
|
+
I have renamed this gem since it has now evolved considerably away
|
149
|
+
from the baseline although, in the main, compatiblity between the
|
150
|
+
the two remains quite high. Nonetheless, to avoid collisions Aruba
|
151
|
+
must be removed (or uninstalled) if you wish to use Aruba-jbb.
|
152
|
+
|
153
|
+
However, Cucumber-Rails v0.3.2 has a dependency on Aruba which will
|
154
|
+
result in the Aruba baseline gem being installed whenever
|
155
|
+
Cucumber-Rails is installed or updated. Therefore the baseline Aruba
|
156
|
+
gem must be removed after updating Cucumber-Rails and the dependency
|
157
|
+
warning ignored.
|
158
|
+
|
159
|
+
== Copyright
|
160
|
+
|
161
|
+
Copyright (c) 2010 Aslak Hellesøy and David Chelimsky. See LICENSE for details.
|
162
|
+
|
163
|
+
Portions copyright (c) 2010 James B. Byrne. Released under the same LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'jeweler'
|
7
|
+
Jeweler::Tasks.new do |gem|
|
8
|
+
gem.version = "0.2.2"
|
9
|
+
gem.name = "aruba-jbb"
|
10
|
+
gem.summary = %Q{CLI Steps for Cucumber}
|
11
|
+
gem.description = %Q{CLI Steps for Cucumber, hand-crafted for you in Aruba}
|
12
|
+
gem.email = "cukes@googlegroups.com"
|
13
|
+
gem.homepage = "http://github.com/byrnejb/aruba"
|
14
|
+
gem.authors = ["Aslak Hellesøy", "David Chelimsky", "James B. Byrne"]
|
15
|
+
gem.add_development_dependency "rspec", ">= 1.3.0"
|
16
|
+
gem.add_development_dependency "cucumber", ">= 0.8.3"
|
17
|
+
end
|
18
|
+
Jeweler::GemcutterTasks.new
|
19
|
+
rescue LoadError
|
20
|
+
puts "Jeweler (or a dependency) is not available. \n" +
|
21
|
+
" Install it with: gem install jeweler"
|
22
|
+
end
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'cucumber/rake/task'
|
26
|
+
|
27
|
+
Cucumber::Rake::Task.new do |t|
|
28
|
+
t.cucumber_opts = %w{--tags ~@jruby} unless defined?(JRUBY_VERSION)
|
29
|
+
t.rcov = false
|
30
|
+
end
|
31
|
+
|
32
|
+
task :cucumber => :check_dependencies
|
33
|
+
rescue LoadError
|
34
|
+
task :cucumber do
|
35
|
+
abort "Cucumber is not available. \n" +
|
36
|
+
" In order to run features, you must install it. \n" +
|
37
|
+
" gem install cucumber"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
task :default => :cucumber
|
42
|
+
|
43
|
+
require 'rake/rdoctask'
|
44
|
+
Rake::RDocTask.new do |rdoc|
|
45
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
46
|
+
|
47
|
+
rdoc.rdoc_dir = 'rdoc'
|
48
|
+
rdoc.title = "aruba-jbb #{version}"
|
49
|
+
rdoc.rdoc_files.include('README*')
|
50
|
+
rdoc.rdoc_files.include('lib/aruba/cucumber_steps.rb')
|
51
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
52
|
+
end
|
data/aruba-jbb.gemspec
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{aruba-jbb}
|
8
|
+
s.version = "0.2.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Aslak Helles\303\270y", "David Chelimsky", "James B. Byrne"]
|
12
|
+
s.date = %q{2010-07-23}
|
13
|
+
s.description = %q{CLI Steps for Cucumber, hand-crafted for you in Aruba}
|
14
|
+
s.email = %q{cukes@googlegroups.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"History.txt",
|
23
|
+
"LICENSE",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"aruba-jbb.gemspec",
|
27
|
+
"config/.gitignore",
|
28
|
+
"features/exit_statuses.feature",
|
29
|
+
"features/file_system_commands.feature",
|
30
|
+
"features/output.feature",
|
31
|
+
"features/running_ruby.feature",
|
32
|
+
"features/step_definitions/aruba_dev_steps.rb",
|
33
|
+
"features/support/env.rb",
|
34
|
+
"lib/aruba.rb",
|
35
|
+
"lib/aruba/api.rb",
|
36
|
+
"lib/aruba/cucumber_steps.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/byrnejb/aruba}
|
39
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.7}
|
42
|
+
s.summary = %q{CLI Steps for Cucumber}
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
|
+
s.specification_version = 3
|
47
|
+
|
48
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
|
+
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
50
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.8.3"])
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
53
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.3"])
|
54
|
+
end
|
55
|
+
else
|
56
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
57
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.3"])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
data/config/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
aruba-rvm.yml
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: exit statuses
|
2
|
+
|
3
|
+
In order to specify expected exit statuses
|
4
|
+
As a developer using Cucumber
|
5
|
+
I want to use the "the exit status should be" step
|
6
|
+
|
7
|
+
Scenario: exit status of 0
|
8
|
+
When I run "ruby -h" without error
|
9
|
+
Then the exit status should be 0
|
10
|
+
|
11
|
+
Scenario: non-zero exit status
|
12
|
+
When I run "ruby -e 'exit 56'" with errors
|
13
|
+
Then the exit status should be 56
|
14
|
+
And the exit status should not be 0
|
15
|
+
|
16
|
+
Scenario: Successfully run something
|
17
|
+
When I run "ruby -e 'exit 0'" without error
|
18
|
+
|
19
|
+
Scenario: Unsuccessfully run something
|
20
|
+
When I do aruba I run "ruby -e 'exit 10'" without error step
|
21
|
+
Then aruba should fail with "Exit status was 10"
|
@@ -0,0 +1,115 @@
|
|
1
|
+
Feature: file system commands
|
2
|
+
|
3
|
+
In order to specify commands that load files
|
4
|
+
As a developer using Cucumber
|
5
|
+
I want to create temporary files
|
6
|
+
|
7
|
+
Scenario: create a dir
|
8
|
+
Given I do have a directory named "foo/bar"
|
9
|
+
When I run "ruby -e \"puts test ?d, 'foo'\""
|
10
|
+
Then the stdout should contain "true"
|
11
|
+
|
12
|
+
Scenario: create a file
|
13
|
+
Given I do have a file named "foo/bar/example.rb" with:
|
14
|
+
"""
|
15
|
+
puts "hello world"
|
16
|
+
"""
|
17
|
+
When I run "ruby foo/bar/example.rb"
|
18
|
+
Then the output should contain "hello world"
|
19
|
+
|
20
|
+
Scenario: append to a file
|
21
|
+
Given I do have a file named "foo/bar/example.rb" with:
|
22
|
+
"""
|
23
|
+
puts "hello world"
|
24
|
+
"""
|
25
|
+
When I append to "foo/bar/example.rb" with:
|
26
|
+
"""
|
27
|
+
puts "this was appended"
|
28
|
+
"""
|
29
|
+
When I run "ruby foo/bar/example.rb"
|
30
|
+
Then the output should contain "hello world"
|
31
|
+
And the output should contain "this was appended"
|
32
|
+
|
33
|
+
Scenario: clean up files generated in previous scenario
|
34
|
+
When I run "ruby foo/bar/example.rb"
|
35
|
+
Then the exit status should be 1
|
36
|
+
And the output should contain "No such file or directory -- foo/bar/example.rb"
|
37
|
+
|
38
|
+
Scenario: change to a subdir
|
39
|
+
Given I do have a file named "foo/bar/example.rb" with:
|
40
|
+
"""
|
41
|
+
puts "hello world"
|
42
|
+
"""
|
43
|
+
When I cd to "foo/bar"
|
44
|
+
And I run "ruby example.rb"
|
45
|
+
Then the output should contain "hello world"
|
46
|
+
|
47
|
+
Scenario: Reset current directory from previous scenario
|
48
|
+
When I run "ruby example.rb"
|
49
|
+
Then the exit status should be 1
|
50
|
+
|
51
|
+
Scenario: Holler if cd to bad dir
|
52
|
+
Given I do have a file named "foo/bar/example.rb" with:
|
53
|
+
"""
|
54
|
+
puts "hello world"
|
55
|
+
"""
|
56
|
+
When I do aruba I cd to "foo/nonexistant" step
|
57
|
+
Then aruba should fail with "tmp/aruba/foo/nonexistant is not a directory"
|
58
|
+
|
59
|
+
Scenario: Check for presence of a subset of files
|
60
|
+
Given I do have an empty file named "lorem/ipsum/dolor"
|
61
|
+
And I do have an empty file named "lorem/ipsum/sit"
|
62
|
+
And I do have an empty file named "lorem/ipsum/amet"
|
63
|
+
Then the following files should exist:
|
64
|
+
| lorem/ipsum/dolor |
|
65
|
+
| lorem/ipsum/amet |
|
66
|
+
|
67
|
+
Scenario: Check for absence of files
|
68
|
+
Then the following files should not exist:
|
69
|
+
| lorem/ipsum/dolor |
|
70
|
+
|
71
|
+
Scenario: Check for presence of a subset of directories
|
72
|
+
Given I do have a directory named "foo/bar"
|
73
|
+
And I do have a directory named "foo/bla"
|
74
|
+
Then the following directories should exist:
|
75
|
+
| foo/bar |
|
76
|
+
| foo/bla |
|
77
|
+
|
78
|
+
Scenario: Check file contents
|
79
|
+
Given I do have a file named "foo" with:
|
80
|
+
"""
|
81
|
+
hello world
|
82
|
+
"""
|
83
|
+
Then the file "foo" should contain "hello world"
|
84
|
+
And the file "foo" should not contain "HELLO WORLD"
|
85
|
+
|
86
|
+
Scenario: @aruba-tmpdir flag runs scenario in tmp/aruba
|
87
|
+
When I run "ruby -e \"require 'fileutils'; puts FileUtils.pwd\""
|
88
|
+
Then the stdout should contain "tmp/aruba"
|
89
|
+
|
90
|
+
@no-aruba-tmpdir
|
91
|
+
Scenario: @no-aruba-tmpdir runs scenario in cwd
|
92
|
+
When I run "ruby -e \"require 'fileutils'; puts FileUtils.pwd\""
|
93
|
+
Then the stdout should not contain "tmp/aruba"
|
94
|
+
|
95
|
+
@rebase-test @aruba-tmpdir @announce
|
96
|
+
Scenario: clean_up api checks for tmp directory subtree
|
97
|
+
Given the rebase-test before block conditions
|
98
|
+
When I cd to "../../testdata"
|
99
|
+
Then the clean_up api method should fail
|
100
|
+
And output should match /outside the tmp subtree and may not be deleted/
|
101
|
+
|
102
|
+
|
103
|
+
@rebase-test @aruba-tmpdir @announce
|
104
|
+
Scenario: @rebase-test tag creates soft links in aruba working directory
|
105
|
+
Given the rebase-test before block conditions
|
106
|
+
Then the soft links should exist in the aruba working directory
|
107
|
+
|
108
|
+
|
109
|
+
@rebase-test @aruba-tmpdir @announce
|
110
|
+
Scenario: rebase api creats soft links in aruba working directory
|
111
|
+
Given the rebase-test before block conditions
|
112
|
+
And I create the cwd sub-directory named "rebase_test"
|
113
|
+
When I rebase the directory named "rebase_test"
|
114
|
+
Then "rebase_test" should have a soft link in the aruba working directory
|
115
|
+
And I delete the cwd sub-directory named "rebase_test"
|
@@ -0,0 +1,96 @@
|
|
1
|
+
Feature: Output
|
2
|
+
|
3
|
+
In order to specify expected output
|
4
|
+
As a developer using Cucumber
|
5
|
+
I want to use the "the output should contain" step
|
6
|
+
|
7
|
+
Scenario: Run unknown command
|
8
|
+
When I run "neverever gonna work"
|
9
|
+
Then the output should contain:
|
10
|
+
"""
|
11
|
+
sh: neverever: command not found
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: Detect subset of one-line output
|
15
|
+
When I run "ruby -e 'puts \"hello world\"'"
|
16
|
+
Then the output should contain "hello world"
|
17
|
+
|
18
|
+
Scenario: Detect subset of one-line output
|
19
|
+
When I run "echo 'hello world'"
|
20
|
+
Then the output should contain "hello world"
|
21
|
+
|
22
|
+
Scenario: Detect absence of one-line output
|
23
|
+
When I run "ruby -e 'puts \"hello world\"'"
|
24
|
+
Then the output should not contain "good-bye"
|
25
|
+
|
26
|
+
Scenario: Detect subset of multiline output
|
27
|
+
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
28
|
+
Then the output should contain:
|
29
|
+
"""
|
30
|
+
hello
|
31
|
+
"""
|
32
|
+
|
33
|
+
Scenario: Detect subset of multiline output
|
34
|
+
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
35
|
+
Then the output should not contain:
|
36
|
+
"""
|
37
|
+
good-bye
|
38
|
+
"""
|
39
|
+
|
40
|
+
Scenario: Detect exact one-line output
|
41
|
+
When I run "ruby -e 'puts \"hello world\"'"
|
42
|
+
Then the output should contain exactly "hello world\n"
|
43
|
+
|
44
|
+
Scenario: Detect exact multiline output
|
45
|
+
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
46
|
+
Then the output should contain exactly:
|
47
|
+
"""
|
48
|
+
hello
|
49
|
+
world
|
50
|
+
|
51
|
+
"""
|
52
|
+
|
53
|
+
@announce
|
54
|
+
Scenario: Detect subset of one-line output with regex
|
55
|
+
When I run "ruby --version"
|
56
|
+
Then the output should contain "ruby"
|
57
|
+
And the output should match /ruby ([\d]+\.[\d]+\.[\d]+)(p\d+)? \(.*$/
|
58
|
+
|
59
|
+
@announce
|
60
|
+
Scenario: Detect subset of multiline output with regex
|
61
|
+
When I run "ruby -e 'puts \"hello\\nworld\\nextra line1\\nextra line2\\nimportant line\"'"
|
62
|
+
Then the output should match:
|
63
|
+
"""
|
64
|
+
he..o
|
65
|
+
wor.d
|
66
|
+
.*
|
67
|
+
important line
|
68
|
+
"""
|
69
|
+
|
70
|
+
@announce
|
71
|
+
Scenario: Match passing exit status and partial output
|
72
|
+
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
73
|
+
Then it should pass with:
|
74
|
+
"""
|
75
|
+
hello
|
76
|
+
"""
|
77
|
+
|
78
|
+
@announce-stdout
|
79
|
+
Scenario: Match failing exit status and partial output
|
80
|
+
When I run "ruby -e 'puts \"hello\\nworld\";exit 99'"
|
81
|
+
Then it should fail with:
|
82
|
+
"""
|
83
|
+
hello
|
84
|
+
"""
|
85
|
+
|
86
|
+
@announce-cmd
|
87
|
+
Scenario: Match output in stdout
|
88
|
+
When I run "ruby -e 'puts \"hello\\nworld\"'"
|
89
|
+
Then the stdout should contain "hello"
|
90
|
+
Then the stderr should not contain "hello"
|
91
|
+
|
92
|
+
@announce-stderr
|
93
|
+
Scenario: Match output in stderr
|
94
|
+
When I run "ruby -e 'STDERR.puts \"hello\\nworld\";exit 99'"
|
95
|
+
Then the stderr should contain "hello"
|
96
|
+
Then the stdout should not contain "hello"
|