capistrano 3.2.1 → 3.3.3

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -3
  3. data/CHANGELOG.md +92 -2
  4. data/Gemfile +1 -5
  5. data/README.md +84 -3
  6. data/Rakefile +5 -1
  7. data/capistrano.gemspec +5 -1
  8. data/features/configuration.feature +9 -7
  9. data/features/deploy.feature +9 -8
  10. data/features/step_definitions/assertions.rb +15 -17
  11. data/features/step_definitions/cap_commands.rb +1 -1
  12. data/features/step_definitions/setup.rb +11 -7
  13. data/features/support/env.rb +8 -9
  14. data/features/support/remote_command_helpers.rb +2 -3
  15. data/features/support/vagrant_helpers.rb +35 -0
  16. data/lib/capistrano/all.rb +2 -1
  17. data/lib/capistrano/application.rb +52 -7
  18. data/lib/capistrano/configuration.rb +39 -10
  19. data/lib/capistrano/configuration/filter.rb +56 -0
  20. data/lib/capistrano/configuration/question.rb +23 -11
  21. data/lib/capistrano/configuration/server.rb +14 -5
  22. data/lib/capistrano/configuration/servers.rb +12 -29
  23. data/lib/capistrano/defaults.rb +11 -9
  24. data/lib/capistrano/deploy.rb +1 -0
  25. data/lib/capistrano/dsl.rb +13 -2
  26. data/lib/capistrano/dsl/env.rb +6 -2
  27. data/lib/capistrano/dsl/task_enhancements.rb +5 -3
  28. data/lib/capistrano/git.rb +8 -2
  29. data/lib/capistrano/hg.rb +7 -1
  30. data/lib/capistrano/svn.rb +2 -2
  31. data/lib/capistrano/tasks/deploy.rake +12 -10
  32. data/lib/capistrano/tasks/git.rake +1 -1
  33. data/lib/capistrano/tasks/install.rake +17 -14
  34. data/lib/capistrano/templates/Capfile +6 -4
  35. data/lib/capistrano/templates/deploy.rb.erb +5 -15
  36. data/lib/capistrano/upload_task.rb +9 -0
  37. data/lib/capistrano/version.rb +1 -1
  38. data/spec/integration/dsl_spec.rb +129 -10
  39. data/spec/lib/capistrano/application_spec.rb +24 -6
  40. data/spec/lib/capistrano/configuration/filter_spec.rb +105 -0
  41. data/spec/lib/capistrano/configuration/question_spec.rb +18 -12
  42. data/spec/lib/capistrano/configuration/server_spec.rb +19 -19
  43. data/spec/lib/capistrano/configuration/servers_spec.rb +101 -20
  44. data/spec/lib/capistrano/configuration_spec.rb +24 -3
  45. data/spec/lib/capistrano/dsl/task_enhancements_spec.rb +88 -0
  46. data/spec/lib/capistrano/dsl_spec.rb +2 -13
  47. data/spec/lib/capistrano/git_spec.rb +15 -4
  48. data/spec/lib/capistrano/hg_spec.rb +13 -2
  49. data/spec/lib/capistrano/scm_spec.rb +3 -3
  50. data/spec/lib/capistrano/svn_spec.rb +11 -1
  51. data/spec/lib/capistrano/upload_task_spec.rb +19 -0
  52. data/spec/lib/capistrano/version_validator_spec.rb +4 -4
  53. data/spec/spec_helper.rb +2 -1
  54. data/spec/support/Vagrantfile +1 -1
  55. data/spec/support/test_app.rb +2 -0
  56. metadata +45 -26
  57. data/lib/capistrano/configuration/servers/host_filter.rb +0 -82
  58. data/lib/capistrano/configuration/servers/role_filter.rb +0 -86
  59. data/spec/lib/capistrano/configuration/servers/host_filter_spec.rb +0 -84
  60. data/spec/lib/capistrano/configuration/servers/role_filter_spec.rb +0 -140
@@ -1,84 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Capistrano
4
- class Configuration
5
- class Servers
6
-
7
- describe HostFilter do
8
- let(:host_filter) { HostFilter.new(available) }
9
- let(:available) { [ Server.new('server1'), Server.new('server2'), Server.new('server3') ] }
10
-
11
- describe '#new' do
12
- it 'takes one array of hostnames' do
13
- expect(host_filter)
14
- end
15
- end
16
-
17
- describe '.for' do
18
-
19
- subject { HostFilter.for(available) }
20
-
21
- context 'without env vars' do
22
- it 'returns all available hosts' do
23
- expect(subject).to eq available
24
- end
25
- end
26
-
27
- context 'with ENV vars' do
28
- before do
29
- ENV.stubs(:[]).with('HOSTS').returns('server1,server2')
30
- end
31
-
32
- it 'returns all required hosts defined in HOSTS' do
33
- expect(subject).to eq [Server.new('server1'), Server.new('server2')]
34
- end
35
- end
36
-
37
- context 'with configuration filters' do
38
- before do
39
- Configuration.env.set(:filter, hosts: %w{server1 server2})
40
- end
41
-
42
- it 'returns all required hosts defined in the filter' do
43
- expect(subject).to eq [Server.new('server1'), Server.new('server2')]
44
- end
45
-
46
- after do
47
- Configuration.env.delete(:filter)
48
- end
49
- end
50
-
51
- context 'with a single configuration filter' do
52
- before do
53
- Configuration.env.set(:filter, hosts: 'server3')
54
- end
55
-
56
- it 'returns all required hosts defined in the filter' do
57
- expect(subject).to eq [Server.new('server3')]
58
- end
59
-
60
- after do
61
- Configuration.env.delete(:filter)
62
- end
63
- end
64
-
65
- context 'with configuration filters and ENV vars' do
66
- before do
67
- Configuration.env.set(:filter, hosts: 'server1')
68
- ENV.stubs(:[]).with('HOSTS').returns('server3')
69
- end
70
-
71
- it 'returns all required hosts defined in the filter' do
72
- expect(subject).to eq [Server.new('server1'), Server.new('server3')]
73
- end
74
-
75
- after do
76
- Configuration.env.delete(:filter)
77
- end
78
- end
79
- end
80
- end
81
-
82
- end
83
- end
84
- end
@@ -1,140 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Capistrano
4
- class Configuration
5
- class Servers
6
-
7
- describe RoleFilter do
8
- let(:role_filter) { RoleFilter.new(required, available) }
9
- let(:required) { [] }
10
- let(:available) { [:web, :app, :db] }
11
-
12
- describe '#new' do
13
- it 'takes two arrays of role names' do
14
- expect(role_filter)
15
- end
16
- end
17
-
18
- describe '.for' do
19
-
20
- subject { RoleFilter.for(required, available) }
21
-
22
- context 'without env vars' do
23
- context ':all required' do
24
- let(:required) { [:all] }
25
-
26
- it 'returns all available names' do
27
- expect(subject).to eq available
28
- end
29
- end
30
-
31
- context 'role names required' do
32
- let(:required) { [:web, :app] }
33
- it 'returns all required names' do
34
- expect(subject).to eq required
35
- end
36
- end
37
- end
38
-
39
- context 'with ENV vars' do
40
- before do
41
- ENV.stubs(:[]).with('ROLES').returns('app,web')
42
- end
43
-
44
- context ':all required' do
45
- let(:required) { [:all] }
46
-
47
- it 'returns available names defined in ROLES' do
48
- expect(subject).to eq [:app, :web]
49
- end
50
- end
51
-
52
- context 'role names required' do
53
- let(:required) { [:web, :db] }
54
- it 'returns all required names defined in ROLES' do
55
- expect(subject).to eq [:web]
56
- end
57
- end
58
- end
59
-
60
- context 'with configuration filters' do
61
- before do
62
- Configuration.env.set(:filter, roles: %w{app web})
63
- end
64
-
65
- context ':all required' do
66
- let(:required) { [:all] }
67
-
68
- it 'returns available names defined in the filter' do
69
- expect(subject).to eq [:app, :web]
70
- end
71
- end
72
-
73
- context 'role names required' do
74
- let(:required) { [:web, :db] }
75
- it 'returns all required names defined in the filter' do
76
- expect(subject).to eq [:web]
77
- end
78
- end
79
-
80
- after do
81
- Configuration.env.delete(:filter)
82
- end
83
- end
84
-
85
- context 'with a single configuration filter' do
86
- before do
87
- Configuration.env.set(:filter, roles: 'web')
88
- end
89
-
90
- context ':all required' do
91
- let(:required) { [:all] }
92
-
93
- it 'returns available names defined in the filter' do
94
- expect(subject).to eq [:web]
95
- end
96
- end
97
-
98
- context 'role names required' do
99
- let(:required) { [:web, :db] }
100
- it 'returns all required names defined in the filter' do
101
- expect(subject).to eq [:web]
102
- end
103
- end
104
-
105
- after do
106
- Configuration.env.delete(:filter)
107
- end
108
- end
109
-
110
- context 'with configuration filters and ENV vars' do
111
- before do
112
- Configuration.env.set(:filter, roles: %w{app})
113
- ENV.stubs(:[]).with('ROLES').returns('web')
114
- end
115
-
116
- context ':all required' do
117
- let(:required) { [:all] }
118
-
119
- it 'returns available names defined in the filter' do
120
- expect(subject).to eq [:web, :app]
121
- end
122
- end
123
-
124
- context 'role names required' do
125
- let(:required) { [:web, :db] }
126
- it 'returns all required names defined in the filter' do
127
- expect(subject).to eq [:web]
128
- end
129
- end
130
-
131
- after do
132
- Configuration.env.delete(:filter)
133
- end
134
- end
135
- end
136
- end
137
-
138
- end
139
- end
140
- end