capistrano-spec 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "capistrano-spec"
8
- gem.version = '0.5.1'
8
+ gem.version = '0.6.0'
9
9
 
10
10
  gem.summary = %Q{Test your capistrano recipes}
11
11
  gem.description = %Q{Helpers and matchers for testing capistrano}
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "capistrano-spec"
8
- s.version = "0.5.1"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Joshua Nichols", "Karl Matthias", "Peter M Souter", "Jan Graichen"]
12
- s.date = "2013-06-30"
12
+ s.date = "2013-08-15"
13
13
  s.description = "Helpers and matchers for testing capistrano"
14
14
  s.email = "josh@technicalpickles.com"
15
15
  s.extra_rdoc_files = [
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "lib/capistrano-spec.rb",
29
29
  "lib/capistrano/spec.rb",
30
30
  "spec/capistrano-spec_spec.rb",
31
+ "spec/downloaded_spec.rb",
31
32
  "spec/recipe/fakerecipe.rb",
32
33
  "spec/spec.opts",
33
34
  "spec/spec_helper.rb",
@@ -34,6 +34,14 @@ module Capistrano
34
34
  @uploads ||= {}
35
35
  end
36
36
 
37
+ def download(from, to, options={}, &block)
38
+ downloads[to] = {:from => from, :options => options, :block => block}
39
+ end
40
+
41
+ def downloads
42
+ @downloads ||= {}
43
+ end
44
+
37
45
  def stubbed_commands
38
46
  @stubbed_commands ||= {}
39
47
  end
@@ -182,6 +190,30 @@ module Capistrano
182
190
  end
183
191
  end
184
192
 
193
+ define :have_downloaded do |path|
194
+ @from = nil # Reset `to` because it will influence next match otherwise.
195
+
196
+ match do |configuration|
197
+ downloads = configuration.downloads
198
+ downloads = downloads.select { |f, d| f == path } if path
199
+ downloads = downloads.select { |f, d| d[:from] == @from } if @from
200
+ downloads.any?
201
+ end
202
+
203
+ def from(from)
204
+ @from = from
205
+ self
206
+ end
207
+
208
+ failure_message_for_should do |actual|
209
+ if @from
210
+ "expected configuration to download #{path} from #{@from}, but did not"
211
+ else
212
+ "expected configuration to download #{path}, but did not"
213
+ end
214
+ end
215
+ end
216
+
185
217
  define :have_run do |cmd|
186
218
 
187
219
  match do |configuration|
@@ -40,6 +40,28 @@ describe Capistrano::Spec do
40
40
  end
41
41
  end
42
42
 
43
+ describe 'have_downloaded' do
44
+ let(:error_message) do
45
+ /expected configuration to download .*\s* from .*\s* but did not/
46
+ end
47
+
48
+ before do
49
+ fake_recipe.find_and_execute_task('fake:thing')
50
+ end
51
+
52
+ it "will not raise error when download is in recipe" do
53
+ expect {
54
+ expect(fake_recipe).to have_downloaded('foo').from('/tmp/foo')
55
+ }.to_not raise_error(RSpec::Expectations::ExpectationNotMetError, error_message)
56
+ end
57
+
58
+ it "will raise error when run download not in recipe" do
59
+ expect {
60
+ expect(fake_recipe).to have_downloaded('bar').from('/tmp/bar')
61
+ }.to raise_error(RSpec::Expectations::ExpectationNotMetError, error_message)
62
+ end
63
+ end
64
+
43
65
  describe 'have_gotten' do
44
66
  it "will not raise error when get is in recipe" do
45
67
  fake_recipe.find_and_execute_task('fake:thing')
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+ require 'capistrano'
3
+
4
+ describe 'Capistrano has downloaded' do
5
+ include Capistrano::Spec::Matchers
6
+
7
+ before do
8
+ @configuration = Capistrano::Configuration.new
9
+ @configuration.extend Capistrano::Spec::ConfigurationExtension
10
+ @configuration.load do
11
+ def download_from_to
12
+ download 'source.file', 'target.file'
13
+ end
14
+
15
+ def download_to
16
+ download 'temp.XC3PO.file', 'target.file' # E.g. downloading generated tar
17
+ end
18
+
19
+ def download_from
20
+ download 'source.file', 'temp.XC3PO.file' # E.g. downloading to temp file
21
+ end
22
+ end
23
+ end
24
+
25
+ subject(:configuration) { @configuration }
26
+
27
+ it 'some file' do
28
+ configuration.download 'source.file', 'target.file'
29
+
30
+ expect(configuration).to have_downloaded
31
+ end
32
+
33
+ it 'a specific file from a specific location' do
34
+ configuration.download_from_to
35
+
36
+ expect(configuration).to have_downloaded('target.file').from('source.file')
37
+ end
38
+
39
+ it 'a specific file to some location' do
40
+ configuration.download_from
41
+
42
+ expect(configuration).to have_downloaded.from('source.file')
43
+ end
44
+
45
+ it 'some file to a specific location' do
46
+ configuration.download_to
47
+
48
+ expect(configuration).to have_downloaded('target.file')
49
+ end
50
+ end
@@ -17,6 +17,7 @@ require 'capistrano'
17
17
  set :bar, "baz"
18
18
  run('do some stuff')
19
19
  upload("foo", "/tmp/foo")
20
+ download("/tmp/foo", "foo")
20
21
  get('/tmp/baz', 'baz')
21
22
  put('fake content', '/tmp/put')
22
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-06-30 00:00:00.000000000 Z
15
+ date: 2013-08-15 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rspec
@@ -49,6 +49,7 @@ files:
49
49
  - lib/capistrano-spec.rb
50
50
  - lib/capistrano/spec.rb
51
51
  - spec/capistrano-spec_spec.rb
52
+ - spec/downloaded_spec.rb
52
53
  - spec/recipe/fakerecipe.rb
53
54
  - spec/spec.opts
54
55
  - spec/spec_helper.rb
@@ -69,7 +70,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
70
  version: '0'
70
71
  segments:
71
72
  - 0
72
- hash: -2637377504704629804
73
+ hash: 2219320887055981214
73
74
  required_rubygems_version: !ruby/object:Gem::Requirement
74
75
  none: false
75
76
  requirements: