bean_counter 0.0.1
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/.gitignore +17 -0
- data/.rdoc_options +9 -0
- data/.rspec +1 -0
- data/.travis.yml +21 -0
- data/Gemfile +11 -0
- data/LICENSE +22 -0
- data/README.md +306 -0
- data/Rakefile +38 -0
- data/bean_counter.gemspec +26 -0
- data/lib/bean_counter.rb +8 -0
- data/lib/bean_counter/core.rb +115 -0
- data/lib/bean_counter/enqueued_expectation.rb +130 -0
- data/lib/bean_counter/mini_test.rb +3 -0
- data/lib/bean_counter/spec.rb +5 -0
- data/lib/bean_counter/spec_matchers.rb +25 -0
- data/lib/bean_counter/strategies/stalk_climber_strategy.rb +150 -0
- data/lib/bean_counter/strategy.rb +250 -0
- data/lib/bean_counter/test_assertions.rb +227 -0
- data/lib/bean_counter/test_unit.rb +3 -0
- data/lib/bean_counter/tube_expectation.rb +66 -0
- data/lib/bean_counter/version.rb +4 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/spec_spec.rb +224 -0
- data/test/test_helper.rb +52 -0
- data/test/unit/core_test.rb +156 -0
- data/test/unit/enqueued_expectation_test.rb +223 -0
- data/test/unit/strategies/stalk_climber_strategy_test.rb +501 -0
- data/test/unit/strategy_test.rb +98 -0
- data/test/unit/test_assertions_test.rb +270 -0
- data/test/unit/tube_expectation_test.rb +93 -0
- metadata +149 -0
data/.gitignore
ADDED
data/.rdoc_options
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--debug
|
data/.travis.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
rvm:
|
4
|
+
- 1.9.3
|
5
|
+
- 2.0.0
|
6
|
+
- jruby-19mode
|
7
|
+
- rbx-19mode
|
8
|
+
|
9
|
+
before_install:
|
10
|
+
- curl -L https://github.com/kr/beanstalkd/archive/v1.9.tar.gz | tar xz -C /tmp
|
11
|
+
- cd /tmp/beanstalkd-1.9/
|
12
|
+
- make
|
13
|
+
- ./beanstalkd &
|
14
|
+
- cd $TRAVIS_BUILD_DIR
|
15
|
+
|
16
|
+
script: bundle exec rake test_all
|
17
|
+
|
18
|
+
matrix:
|
19
|
+
allow_failures:
|
20
|
+
- rvm: jruby-19mode
|
21
|
+
- rvm: rbx-19mode
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Freewrite.org
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,306 @@
|
|
1
|
+
# BeanCounter
|
2
|
+
|
3
|
+
[](http://travis-ci.org/gemeraldbeanstalk/bean_counter)
|
4
|
+
[](https://gemnasium.com/gemeraldbeanstalk/bean_counter)
|
5
|
+
[](https://coveralls.io/r/gemeraldbeanstalk/bean_counter)
|
6
|
+
[](https://codeclimate.com/github/gemeraldbeanstalk/bean_counter)
|
7
|
+
|
8
|
+
BeanCounter provides additional TestUnit/MiniTest assertions and/or RSpec matchers for testing Ruby code that relies on
|
9
|
+
[Beaneater](https://github.com/beanstalkd/beaneater) and [Beanstalkd](https://github.com/kr/beanstalkd).
|
10
|
+
|
11
|
+
##### TestUnit/MiniTest Assertions
|
12
|
+
For TestUnit/MiniTest, BeanCounter provides 6 assertions/refutations
|
13
|
+
for use in your tests:
|
14
|
+
- ```assert_enqueued/refute_enqueued``` - Searches all jobs in the beanstalkd
|
15
|
+
pool for jobs with attributes matching the keys/values of the Hash given
|
16
|
+
- ```assert_enqueues/refute_enqueues``` - Searches only those jobs in the
|
17
|
+
beanstalkd pool enqueued during the execution of the provided block for jobs
|
18
|
+
with attributes matching the keys/values of the Hash given
|
19
|
+
- ```assert_tube/refute_tube``` - Searches all tubes in the beanstalkd pool
|
20
|
+
for a tube with attributes matching the keys/values of a given Hash
|
21
|
+
|
22
|
+
BeanCounter also provides a helper, ```BeanCounter.reset!``` to reset a given tube or
|
23
|
+
the entire beanstalkd pool by deleting the appropriate jobs.
|
24
|
+
|
25
|
+
##### RSpec Matchers
|
26
|
+
For RSpec, BeanCounter provides 2 equivalent should/should_not matchers for use in your specs:
|
27
|
+
- ```have_enqueued``` - Searches for jobs in the beanstalkd
|
28
|
+
pool with attributes matching the keys/values of the Hash given.
|
29
|
+
If called on a block only inspects jobs enqueued during the execution of
|
30
|
+
the block. Otherwise, inspects all jobs.
|
31
|
+
- ```have_tube``` - Searches all tubes in the beanstalkd pool
|
32
|
+
for a tube with attributes matching the keys/values of a given Hash
|
33
|
+
|
34
|
+
BeanCounter also provides a helper, ```BeanCounter.reset!``` to reset a given tube or
|
35
|
+
the entire beanstalkd pool by deleting the appropriate jobs.
|
36
|
+
|
37
|
+
## Installation
|
38
|
+
|
39
|
+
Add this line to your application's Gemfile:
|
40
|
+
|
41
|
+
gem 'bean_counter'
|
42
|
+
|
43
|
+
And then execute:
|
44
|
+
|
45
|
+
$ bundle
|
46
|
+
|
47
|
+
Or install it without bundler:
|
48
|
+
|
49
|
+
$ gem install bean_counter
|
50
|
+
|
51
|
+
## Test Framework Configuration
|
52
|
+
#### TestUnit/MiniTest
|
53
|
+
In order to use BeanCounter in your tests you'll need to require and configure
|
54
|
+
it in your test_helper:
|
55
|
+
```ruby
|
56
|
+
# To make the assertions available to all test cases you can require one of the
|
57
|
+
# following in test/test_helper.rb:
|
58
|
+
|
59
|
+
# For TestUnit, adds assertions to Test::Unit::TestCase and any derived classes:
|
60
|
+
require 'bean_counter/test_unit'
|
61
|
+
|
62
|
+
# For MiniTest, adds assertions to MiniTest::Unit::TestCase and any derived classes:
|
63
|
+
require 'bean_counter/mini_test'
|
64
|
+
|
65
|
+
|
66
|
+
# To maintain greater control over where the assertions are available, require
|
67
|
+
# bean_counter/test_assertions directly then include BeanCounter::TestAssertions
|
68
|
+
# in any test classes where you want to make use of the assertions:
|
69
|
+
|
70
|
+
# test/test_helper.rb
|
71
|
+
require 'bean_counter/test_assertions'
|
72
|
+
|
73
|
+
# test/beaneater_test.rb
|
74
|
+
require 'test_helper'
|
75
|
+
|
76
|
+
# For TestUnit:
|
77
|
+
class BeaneaterTest < Test::Unit::TestCase
|
78
|
+
include BeanCounter::TestAssertions
|
79
|
+
|
80
|
+
# assertions will be available to all tests in this class
|
81
|
+
end
|
82
|
+
|
83
|
+
# Or for MiniTest:
|
84
|
+
class BeaneaterTest < MiniTest::Unit::TestCase
|
85
|
+
include BeanCounter::TestAssertions
|
86
|
+
|
87
|
+
# assertions will be available to all tests in this class
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
#### RSpec
|
92
|
+
In order to use BeanCounter in your specs you'll need to require and configure
|
93
|
+
it in your spec_helper:
|
94
|
+
```ruby
|
95
|
+
# To make the BeanCounter matchers available to all specs, require
|
96
|
+
# bean_counter/spec in spec/spec_helper.rb:
|
97
|
+
require 'bean_counter/spec'
|
98
|
+
|
99
|
+
|
100
|
+
# To maintain more control over where the matchers are available, require
|
101
|
+
# bean_counter/spec_matchers directly and include BeanCounter::SpecMatchers in
|
102
|
+
# any spec where you want to use the matchers:
|
103
|
+
|
104
|
+
# spec/spec_helper.rb
|
105
|
+
require 'bean_counter/spec_matchers'
|
106
|
+
|
107
|
+
# Then include BeanCounter::SpecMatchers in any test class that needs access to the
|
108
|
+
# matchers:
|
109
|
+
|
110
|
+
# spec/beaneater_client_spec.rb
|
111
|
+
require 'spec_helper'
|
112
|
+
|
113
|
+
describe BeaneaterClient do
|
114
|
+
include BeanCounter::SpecMatchers
|
115
|
+
|
116
|
+
# matchers will be available to all test cases inside this block
|
117
|
+
end
|
118
|
+
```
|
119
|
+
|
120
|
+
## General Configuration
|
121
|
+
Beyond the configuration required to utilize BeanCounter with your test
|
122
|
+
framework, BeanCounter may also require other test framework agnostic
|
123
|
+
configuration to work properly or as desired.
|
124
|
+
|
125
|
+
#####BeanCounter.beanstalkd_url
|
126
|
+
```BeanCounter.beanstalkd_url``` allows you to directly provide a string or an
|
127
|
+
Array of strings that will be used by BeanCounter when communicating with the
|
128
|
+
beanstalkd pool. By default, BeanCounter will try to intelligently determine
|
129
|
+
the location of beanstalkd servers by checking for configuration in a few
|
130
|
+
different places, though in some cases special configuration may be required.
|
131
|
+
|
132
|
+
First, and of higest precedence, BeanCounter will check
|
133
|
+
```ENV['BEANSTALKD_URL']``` for a comma separated list of beanstalkd
|
134
|
+
servers. If no evironment variable is found, any value provided for
|
135
|
+
```BeanCounter.beanstalkd_url``` will be used to connect to the the beanstalkd pool.
|
136
|
+
Finally, if no environment variable is found and no value has been provided for
|
137
|
+
BeanCounter.beanstalkd_url, BeanCounter will try to use any configuration
|
138
|
+
provided to Beaneater. If no beanstalkd_url can be determined, a Runtime error
|
139
|
+
will be raised.
|
140
|
+
|
141
|
+
Beanstalkd urls can be provided in any of the variety of formats shown below:
|
142
|
+
```
|
143
|
+
$ BEANSTALKD_URL='127.0.0.1,beanstalk://localhost:11300,localhost:11301' rake test
|
144
|
+
BeanCounter.beanstalkd_url
|
145
|
+
#=> ['127.0.0.1', 'beanstalk://localhost:11300', 'localhost:11301']
|
146
|
+
|
147
|
+
BeanCounter.beanstalkd_url = 'beanstalk://localhost'
|
148
|
+
BeanCounter.beanstalkd_url
|
149
|
+
#=> 'beanstalk://localhost'
|
150
|
+
|
151
|
+
BeanCounter.beanstalkd_url = ['127.0.0.1', 'beanstalk://localhost:11300', 'localhost:11301']
|
152
|
+
BeanCounter.beanstalkd_url
|
153
|
+
#=> ['127.0.0.1', 'beanstalk://localhost:11300', 'localhost:11301']
|
154
|
+
```
|
155
|
+
|
156
|
+
#####BeanCounter.strategy
|
157
|
+
```BeanCounter.strategy``` allows you to choose and configure the strategy
|
158
|
+
BeanCounter uses for accessing and interacting with the beanstalkd pool. At
|
159
|
+
present, there is only a single strategy available, but at least one other is
|
160
|
+
in the works.
|
161
|
+
|
162
|
+
The strategy currently available, BeanCounter::Strategy::StalkClimber, utilizes
|
163
|
+
[StalkClimber](https://github.com/gemeraldbeanstalk/stalk_climber.git) to
|
164
|
+
navigate the beanstalkd pool. The job traversal method employed by StalkClimber
|
165
|
+
suffers from some inefficiencies that come with trying to sequential access a
|
166
|
+
queue, but overall it is a powerful strategy that supports multiple servers and
|
167
|
+
offers solid performance given the design of beanstalkd.
|
168
|
+
|
169
|
+
## Usage
|
170
|
+
Whether you are using the TestUnit/MiniTest or RSpec matchers, the usage is the
|
171
|
+
same, the only difference is the invocation.
|
172
|
+
|
173
|
+
Each assertion/matcher takes a Hash of options that will be used to find
|
174
|
+
matching jobs. Each key in the options Hash is a String or a Symbol that
|
175
|
+
identifies an attribute of a job that the corresponding Hash value should be
|
176
|
+
compared against. All attribute comparisons are performed using the triple-equal
|
177
|
+
(===) operator/method of the given value.
|
178
|
+
|
179
|
+
#####assert_enqueued/have_enqueued
|
180
|
+
The attributes available on a job for comparison are: ```age```, ```body```,
|
181
|
+
```buries```, ```connection```, ```delay```, ```id```, ```kicks```, ```pri```,
|
182
|
+
```releases```, ```reserves```, ```state```, ```time-left```, ```timeouts```,
|
183
|
+
```ttr```, and ```tube```.
|
184
|
+
|
185
|
+
To assert or set the expectation that a job with the body of 'foo'
|
186
|
+
should have been enqueued on the default tube you could use the following:
|
187
|
+
```
|
188
|
+
# TestUnit/MiniTest
|
189
|
+
assert_enqueued(:tube => 'default', :body => 'foo')
|
190
|
+
|
191
|
+
# You could also use a Regexp if you prefer
|
192
|
+
# RSpec
|
193
|
+
should have_enqueued(:tube => 'default', :body => /foo/)
|
194
|
+
```
|
195
|
+
|
196
|
+
#####assert_enqueues/have_enqueued
|
197
|
+
The assert_enqueues assertion and the have_enqueued matcher also support a
|
198
|
+
block form that will only check jobs enqueued during the execution of the given
|
199
|
+
block for matches. For example, if you wanted to assert or set the expectation
|
200
|
+
that a particular method caused a job to be enqueued to the exports tube in the
|
201
|
+
ready state, you could use something like the following:
|
202
|
+
```
|
203
|
+
# TestUnit/MiniTest
|
204
|
+
assert_enqueues(:tube => 'exports', :state => 'ready') do
|
205
|
+
method_that_should_enqueue_a_job
|
206
|
+
end
|
207
|
+
|
208
|
+
# The form is a little different in RSpec:
|
209
|
+
proc do
|
210
|
+
method_that_should_enqueue_a_job
|
211
|
+
end.should have_enqueued(:tube => 'exports', :state => 'ready')
|
212
|
+
```
|
213
|
+
|
214
|
+
The refutations/negative matches work the same way:
|
215
|
+
```
|
216
|
+
# TestUnit/MiniTest
|
217
|
+
refute_enqueues(:tube => 'exports', :state => 'ready') do
|
218
|
+
method_that_should_not_enqueue_a_job
|
219
|
+
end
|
220
|
+
|
221
|
+
# RSpec:
|
222
|
+
proc do
|
223
|
+
method_that_should_enqueue_a_job
|
224
|
+
end.should_not have_enqueued(:tube => 'exports', :state => 'ready')
|
225
|
+
```
|
226
|
+
|
227
|
+
The options Hash for enqueued/enqueues assertions/matchers may additionally
|
228
|
+
include a count key ('count' or :count) that can be used to verify that a
|
229
|
+
particular number of matching jobs are found.
|
230
|
+
|
231
|
+
If no count option is provided, the assertion/match succeeds if any job is found
|
232
|
+
that matches all of the options given. If no jobs are found that match the
|
233
|
+
options given, the assertion fails.
|
234
|
+
|
235
|
+
If a count option is provided the assertion/matcher only succeeds if the
|
236
|
+
triple-equal (===) operator/method of the value of the provided count evaluates
|
237
|
+
to true when given the total number of matching jobs. Otherwise the assertion
|
238
|
+
fails. The use of === allows for more advanced comparisons using Procs, Ranges,
|
239
|
+
Regexps, etc.
|
240
|
+
```
|
241
|
+
# TestUnit/MiniTest
|
242
|
+
assert_enqueues(:tube => 'default', :body => 'foo', :count => 1) do
|
243
|
+
method_that_should_enqueue_exactly_one_job
|
244
|
+
end
|
245
|
+
|
246
|
+
# You could also use a Range if you prefer
|
247
|
+
# RSpec
|
248
|
+
proc do
|
249
|
+
method_that_should_enqueue_between_1_and_3_jobs
|
250
|
+
end.should have_enqueued(:tube => 'default', :body => /foo/, :count => 1..3)
|
251
|
+
```
|
252
|
+
|
253
|
+
A count key can also be used with the refutations/negative matches, but tends
|
254
|
+
to be better stated as an assertion/positive match with a count.
|
255
|
+
|
256
|
+
#####assert_tube/have_tube
|
257
|
+
Similar to the other assertions/matchers, assert_tube and have_tube take a Hash
|
258
|
+
of options that will be used to find matching tubes. Each key in the options
|
259
|
+
Hash is a String or a Symbol that identifies an attribute of a tube that the
|
260
|
+
corresponding Hash value should be compared against. All attribute comparisons
|
261
|
+
are performed using the triple-equal (===) operator/method of the given value.
|
262
|
+
|
263
|
+
The attributes available on a tube for matching are: ```cmd-delete```,
|
264
|
+
```cmd-pause-tube```, ```current-jobs-buried```, ```current-jobs-delayed```,
|
265
|
+
```current-jobs-ready```, ```current-jobs-reserved```,
|
266
|
+
```current-jobs-urgent```, ```current-using```, ```current-waiting```,
|
267
|
+
```current-watching```, ```name```, ```pause```, ```pause-time-left```,
|
268
|
+
and ```total-jobs```.
|
269
|
+
|
270
|
+
For example to assert that no connections are waiting on the default tube
|
271
|
+
something like the following could be used:
|
272
|
+
```
|
273
|
+
# TestUnit/MiniTest
|
274
|
+
assert_tube(:name => 'default', 'current-waiting' => 0)
|
275
|
+
|
276
|
+
# RSpec
|
277
|
+
should have_tube(:name => 'default', 'current-waiting' => 0)
|
278
|
+
```
|
279
|
+
|
280
|
+
Similarly one could use refute_tube or the negative matcher for have_tube to
|
281
|
+
verify that the exports tube is paused:
|
282
|
+
```
|
283
|
+
# TestUnit/MiniTest
|
284
|
+
refute_tube(:name => 'exports', :pause => 0)
|
285
|
+
|
286
|
+
#RSpec
|
287
|
+
should_not have_tube(:name => 'exports', :pause => 0)
|
288
|
+
```
|
289
|
+
|
290
|
+
For more detailed explanations and more examples make sure to check out the
|
291
|
+
docs, expectations, and respective tests:
|
292
|
+
[docs](http://rubydoc.info/gems/bean_counter/0.0.1/frames)
|
293
|
+
[enqueued_expectation](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/lib/bean_counter/enqueued_expectation.rb)
|
294
|
+
[tube_expectation](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/lib/bean_counter/tube_expectation.rb)
|
295
|
+
[test_assertions](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/lib/bean_counter/test_assertions.rb)
|
296
|
+
[spec_matchers](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/lib/bean_counter/spec_matchers.rb)
|
297
|
+
[test_assertions_test](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/test/unit/test_assertions_test.rb)
|
298
|
+
[spec_spec](https://github.com/gemeraldbeanstalk/bean_counter/tree/master/spec/spec_spec.rb)
|
299
|
+
|
300
|
+
## Contributing
|
301
|
+
|
302
|
+
1. Fork it
|
303
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
304
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
305
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
306
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
require 'coveralls/rake/task'
|
5
|
+
require 'English'
|
6
|
+
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs << 'test'
|
9
|
+
t.pattern = 'test/**/*_test.rb'
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec::Core::RakeTask.new(:spec)
|
13
|
+
|
14
|
+
Coveralls::RakeTask.new
|
15
|
+
|
16
|
+
task :test_all do
|
17
|
+
failures = []
|
18
|
+
|
19
|
+
fork do
|
20
|
+
Rake::Task[:test].invoke
|
21
|
+
end
|
22
|
+
Process.wait
|
23
|
+
failures << 'TestUnit' unless $CHILD_STATUS.exitstatus == 0
|
24
|
+
|
25
|
+
fork do
|
26
|
+
Rake::Task[:spec].invoke
|
27
|
+
end
|
28
|
+
Process.wait
|
29
|
+
failures << 'RSpec' unless $CHILD_STATUS.exitstatus == 0
|
30
|
+
|
31
|
+
Rake::Task['coveralls:push'].invoke if ENV['CI']
|
32
|
+
|
33
|
+
if failures.any?
|
34
|
+
raise RuntimeError, "\n\nTest failures occured in test suite(s): #{failures.join(', ')}\n", []
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
task :default => :test_all
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bean_counter/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'bean_counter'
|
8
|
+
spec.version = BeanCounter::VERSION
|
9
|
+
spec.authors = ['gemeraldbeanstalk']
|
10
|
+
spec.email = ['gemeraldbeanstalk@gmail.com ']
|
11
|
+
spec.description = %q{Test::Unit assertions for Beaneater}
|
12
|
+
spec.summary = %q{BeanCounter provides additional assertions for testing Ruby code that relies on Beaneater}
|
13
|
+
spec.homepage = 'https://github.com/gemeraldbeanstalk/bean_counter'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^test/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'beaneater'
|
22
|
+
spec.add_dependency 'stalk_climber', '>= 0.1.0'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
end
|