aruba-doubles 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -4
- data/aruba-doubles.gemspec +1 -1
- data/features/history.feature +15 -0
- data/lib/aruba-doubles.rb +11 -1
- data/lib/aruba-doubles/cucumber.rb +9 -0
- data/lib/aruba-doubles/double.rb +21 -1
- data/lib/aruba-doubles/history.rb +35 -0
- data/spec/aruba-doubles/double_spec.rb +8 -2
- data/spec/aruba-doubles/history_spec.rb +12 -0
- metadata +22 -18
- data/.travis.yml +0 -4
data/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Aruba-Doubles
|
|
2
2
|
|
|
3
|
-
[](http://travis-ci.org/bjoernalbers/aruba-doubles)
|
|
4
|
-
|
|
5
3
|
Cucumber Steps to double Command Line Applications
|
|
6
4
|
|
|
7
5
|
## Introduction
|
|
@@ -27,8 +25,8 @@ Cucumber Steps to double Command Line Applications
|
|
|
27
25
|
Aruba-Doubles is a [Cucumber](http://cukes.info/) extention to
|
|
28
26
|
temporarily "replace" selected Command Line Applications by Test
|
|
29
27
|
Doubles.
|
|
30
|
-
This allows you to simply stub
|
|
31
|
-
|
|
28
|
+
This allows you to simply stub these applications, fake their output and
|
|
29
|
+
check if and how they have been called.
|
|
32
30
|
|
|
33
31
|
(Aruba-Doubles is not an official part of
|
|
34
32
|
[Aruba](https://github.com/cucumber/aruba) but a good companion in the
|
data/aruba-doubles.gemspec
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Feature: History
|
|
2
|
+
|
|
3
|
+
In order to check if and how a Test Double has been called
|
|
4
|
+
As a BDD-guy
|
|
5
|
+
I want to have all calls to Test Doubles logged into a History
|
|
6
|
+
|
|
7
|
+
Scenario: Check history
|
|
8
|
+
Given I double `foo --bar baz`
|
|
9
|
+
Then the double `foo --bar baz` should not have been run
|
|
10
|
+
When I run `foo --bar baz`
|
|
11
|
+
Then the double `foo --bar baz` should have been run
|
|
12
|
+
But the double `foo` should not have been run
|
|
13
|
+
|
|
14
|
+
Scenario: Clean history after each scenario
|
|
15
|
+
Then the double `foo --bar baz` should not have been run
|
data/lib/aruba-doubles.rb
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
require 'tempfile'
|
|
2
2
|
require 'shellwords'
|
|
3
|
+
require 'pstore'
|
|
3
4
|
require 'aruba-doubles/double'
|
|
5
|
+
require 'aruba-doubles/history'
|
|
4
6
|
|
|
5
7
|
module ArubaDoubles
|
|
8
|
+
|
|
9
|
+
# Basename of the history file
|
|
10
|
+
HISTORY_FILE = 'history.pstore'
|
|
11
|
+
|
|
6
12
|
def double_cmd(cmd, output = {})
|
|
7
|
-
argv =
|
|
13
|
+
argv = cmd.shellsplit
|
|
8
14
|
filename = argv.shift
|
|
9
15
|
double = Double.find(filename) || Double.new(filename)
|
|
10
16
|
double.create { on argv, output }
|
|
11
17
|
end
|
|
18
|
+
|
|
19
|
+
def history
|
|
20
|
+
@history ||= History.new(File.join(Double.bindir, HISTORY_FILE))
|
|
21
|
+
end
|
|
12
22
|
end
|
|
@@ -8,6 +8,7 @@ end
|
|
|
8
8
|
|
|
9
9
|
After do
|
|
10
10
|
ArubaDoubles::Double.teardown
|
|
11
|
+
history.clear
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
Given /^I double `([^`]*)`$/ do |cmd|
|
|
@@ -37,3 +38,11 @@ end
|
|
|
37
38
|
Given /^I double `([^`]*)` with exit status (\d+)$/ do |cmd, exit_status|
|
|
38
39
|
double_cmd(cmd, :exit => exit_status.to_i)
|
|
39
40
|
end
|
|
41
|
+
|
|
42
|
+
Then /^the double `([^`]*)` should have been run$/ do |cmd|
|
|
43
|
+
history.should include(cmd.shellsplit)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
Then /^the double `([^`]*)` should not have been run$/ do |cmd|
|
|
47
|
+
history.should_not include(cmd.shellsplit)
|
|
48
|
+
end
|
data/lib/aruba-doubles/double.rb
CHANGED
|
@@ -38,6 +38,7 @@ module ArubaDoubles
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
# Return the doubles directory.
|
|
41
|
+
#
|
|
41
42
|
# @return [String]
|
|
42
43
|
def bindir
|
|
43
44
|
@bindir ||= Dir.mktmpdir
|
|
@@ -53,6 +54,7 @@ module ArubaDoubles
|
|
|
53
54
|
end
|
|
54
55
|
|
|
55
56
|
# Return all registered doubles.
|
|
57
|
+
#
|
|
56
58
|
# @return [Array<ArubaDoubles::Double>]
|
|
57
59
|
def all
|
|
58
60
|
self.doubles.values
|
|
@@ -90,6 +92,7 @@ module ArubaDoubles
|
|
|
90
92
|
attr_reader :filename, :output
|
|
91
93
|
|
|
92
94
|
# Instantiate and register new double.
|
|
95
|
+
#
|
|
93
96
|
# @return [ArubaDoubles::Double]
|
|
94
97
|
def initialize(cmd, default_output = {}, &block)
|
|
95
98
|
@filename = cmd
|
|
@@ -105,8 +108,10 @@ module ArubaDoubles
|
|
|
105
108
|
|
|
106
109
|
# Run the double.
|
|
107
110
|
#
|
|
108
|
-
# This will
|
|
111
|
+
# This will append the call to the doubles history, display any
|
|
112
|
+
# outputs if defined and exit.
|
|
109
113
|
def run(argv = ARGV)
|
|
114
|
+
history << [filename] + argv
|
|
110
115
|
output = @outputs[argv] || @default_output
|
|
111
116
|
puts output[:puts] if output[:puts]
|
|
112
117
|
warn output[:warn] if output[:warn]
|
|
@@ -114,6 +119,7 @@ module ArubaDoubles
|
|
|
114
119
|
end
|
|
115
120
|
|
|
116
121
|
# Create the executable double.
|
|
122
|
+
#
|
|
117
123
|
# @return [String] full path to the double.
|
|
118
124
|
def create(&block)
|
|
119
125
|
register
|
|
@@ -160,5 +166,19 @@ module ArubaDoubles
|
|
|
160
166
|
self.class.doubles.delete(filename)
|
|
161
167
|
end
|
|
162
168
|
|
|
169
|
+
# Return the history object for this double.
|
|
170
|
+
#
|
|
171
|
+
# @return [ArubaDoubles::History]
|
|
172
|
+
def history
|
|
173
|
+
@history ||= History.new(history_file)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Return full (absolute) path to history file.
|
|
177
|
+
# The file will reside in the doubles directory.
|
|
178
|
+
#
|
|
179
|
+
# @return [String]
|
|
180
|
+
def history_file
|
|
181
|
+
File.expand_path(HISTORY_FILE, File.dirname($PROGRAM_NAME))
|
|
182
|
+
end
|
|
163
183
|
end
|
|
164
184
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module ArubaDoubles
|
|
2
|
+
class History
|
|
3
|
+
|
|
4
|
+
include Enumerable
|
|
5
|
+
|
|
6
|
+
def initialize(filename)
|
|
7
|
+
@store = PStore.new(filename)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def <<(args)
|
|
11
|
+
@store.transaction do
|
|
12
|
+
@store[:history] ||= []
|
|
13
|
+
@store[:history] << args
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def clear
|
|
18
|
+
@store.transaction do
|
|
19
|
+
@store[:history] = []
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def each
|
|
24
|
+
entries.each { |e| yield(e) }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def entries
|
|
30
|
+
@store.transaction(readonly=true) do
|
|
31
|
+
@store[:history] || []
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -112,6 +112,7 @@ describe ArubaDoubles::Double do
|
|
|
112
112
|
|
|
113
113
|
describe '#run' do
|
|
114
114
|
before do
|
|
115
|
+
ArubaDoubles::History.stub(:new).and_return(stub(:<< => nil))
|
|
115
116
|
@double = ArubaDoubles::Double.new('foo',
|
|
116
117
|
:puts => 'default stdout',
|
|
117
118
|
:warn => 'default stderr',
|
|
@@ -123,6 +124,13 @@ describe ArubaDoubles::Double do
|
|
|
123
124
|
@double.stub(:puts => nil, :warn => nil, :exit => nil)
|
|
124
125
|
end
|
|
125
126
|
|
|
127
|
+
it 'should append the call to the doubles history' do
|
|
128
|
+
history = double('history')
|
|
129
|
+
history.should_receive(:<<).with(%w[foo] + ARGV)
|
|
130
|
+
ArubaDoubles::History.should_receive(:new).and_return(history)
|
|
131
|
+
@double.run
|
|
132
|
+
end
|
|
133
|
+
|
|
126
134
|
context 'when ARGV does match' do
|
|
127
135
|
def run_double
|
|
128
136
|
@double.run %w[--hello]
|
|
@@ -164,8 +172,6 @@ describe ArubaDoubles::Double do
|
|
|
164
172
|
run_double
|
|
165
173
|
end
|
|
166
174
|
end
|
|
167
|
-
|
|
168
|
-
it 'should read ARGV'
|
|
169
175
|
end
|
|
170
176
|
|
|
171
177
|
describe '.create' do
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
describe ArubaDoubles::History do
|
|
5
|
+
|
|
6
|
+
#TODO: Add examples to test the transactional stuff with PStore!
|
|
7
|
+
|
|
8
|
+
it 'should initialize a PStore with the filename' do
|
|
9
|
+
PStore.should_receive(:new).with('history.pstore')
|
|
10
|
+
ArubaDoubles::History.new('history.pstore')
|
|
11
|
+
end
|
|
12
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aruba-doubles
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-04-
|
|
12
|
+
date: 2012-04-21 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: cucumber
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70241989258120 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 1.0.2
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70241989258120
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70241989257520 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 2.6.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70241989257520
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rake
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70241989256900 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 0.9.2.2
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70241989256900
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: aruba
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70241989256280 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: 0.4.6
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70241989256280
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: guard-cucumber
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70241989255780 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,10 +65,10 @@ dependencies:
|
|
|
65
65
|
version: 0.7.3
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70241989255780
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: guard-rspec
|
|
71
|
-
requirement: &
|
|
71
|
+
requirement: &70241989255140 !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
74
74
|
- - ! '>='
|
|
@@ -76,7 +76,7 @@ dependencies:
|
|
|
76
76
|
version: 0.5.1
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *70241989255140
|
|
80
80
|
description: Cucumber Steps to double Command Line Applications
|
|
81
81
|
email:
|
|
82
82
|
- bjoernalbers@googlemail.com
|
|
@@ -87,7 +87,6 @@ files:
|
|
|
87
87
|
- .gitignore
|
|
88
88
|
- .rbenv-version
|
|
89
89
|
- .rvmrc
|
|
90
|
-
- .travis.yml
|
|
91
90
|
- Gemfile
|
|
92
91
|
- Guardfile
|
|
93
92
|
- LICENSE
|
|
@@ -96,12 +95,15 @@ files:
|
|
|
96
95
|
- aruba-doubles.gemspec
|
|
97
96
|
- features/define_output.feature
|
|
98
97
|
- features/double_commands.feature
|
|
98
|
+
- features/history.feature
|
|
99
99
|
- features/step_definitions/dev_steps.rb
|
|
100
100
|
- features/support/env.rb
|
|
101
101
|
- lib/aruba-doubles.rb
|
|
102
102
|
- lib/aruba-doubles/cucumber.rb
|
|
103
103
|
- lib/aruba-doubles/double.rb
|
|
104
|
+
- lib/aruba-doubles/history.rb
|
|
104
105
|
- spec/aruba-doubles/double_spec.rb
|
|
106
|
+
- spec/aruba-doubles/history_spec.rb
|
|
105
107
|
- spec/spec_helper.rb
|
|
106
108
|
homepage: https://github.com/bjoernalbers/aruba-doubles
|
|
107
109
|
licenses: []
|
|
@@ -117,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
117
119
|
version: '0'
|
|
118
120
|
segments:
|
|
119
121
|
- 0
|
|
120
|
-
hash:
|
|
122
|
+
hash: -2111762355513459524
|
|
121
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
124
|
none: false
|
|
123
125
|
requirements:
|
|
@@ -126,17 +128,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
126
128
|
version: '0'
|
|
127
129
|
segments:
|
|
128
130
|
- 0
|
|
129
|
-
hash:
|
|
131
|
+
hash: -2111762355513459524
|
|
130
132
|
requirements: []
|
|
131
133
|
rubyforge_project:
|
|
132
134
|
rubygems_version: 1.8.10
|
|
133
135
|
signing_key:
|
|
134
136
|
specification_version: 3
|
|
135
|
-
summary: aruba-doubles-1.
|
|
137
|
+
summary: aruba-doubles-1.2.0
|
|
136
138
|
test_files:
|
|
137
139
|
- features/define_output.feature
|
|
138
140
|
- features/double_commands.feature
|
|
141
|
+
- features/history.feature
|
|
139
142
|
- features/step_definitions/dev_steps.rb
|
|
140
143
|
- features/support/env.rb
|
|
141
144
|
- spec/aruba-doubles/double_spec.rb
|
|
145
|
+
- spec/aruba-doubles/history_spec.rb
|
|
142
146
|
- spec/spec_helper.rb
|
data/.travis.yml
DELETED