capistrano 3.7.0 → 3.17.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.
Files changed (81) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +113 -0
  3. data/.github/pull_request_template.md +0 -4
  4. data/.github/release-drafter.yml +17 -0
  5. data/.github/workflows/push.yml +12 -0
  6. data/.rubocop.yml +13 -0
  7. data/CHANGELOG.md +1 -484
  8. data/CONTRIBUTING.md +2 -0
  9. data/DEVELOPMENT.md +5 -6
  10. data/Dangerfile +1 -54
  11. data/Gemfile +39 -3
  12. data/LICENSE.txt +1 -1
  13. data/README.md +10 -4
  14. data/RELEASING.md +3 -3
  15. data/Rakefile +13 -5
  16. data/UPGRADING-3.7.md +1 -12
  17. data/capistrano.gemspec +9 -8
  18. data/features/deploy.feature +34 -1
  19. data/features/installation.feature +8 -3
  20. data/features/step_definitions/assertions.rb +31 -3
  21. data/features/step_definitions/cap_commands.rb +10 -0
  22. data/features/step_definitions/setup.rb +37 -1
  23. data/features/subdirectory.feature +9 -0
  24. data/features/support/remote_command_helpers.rb +4 -0
  25. data/features/support/vagrant_helpers.rb +15 -8
  26. data/lib/Capfile +0 -4
  27. data/lib/capistrano/application.rb +11 -3
  28. data/lib/capistrano/configuration/filter.rb +1 -1
  29. data/lib/capistrano/configuration/host_filter.rb +1 -2
  30. data/lib/capistrano/configuration/question.rb +22 -3
  31. data/lib/capistrano/configuration/role_filter.rb +1 -2
  32. data/lib/capistrano/configuration/scm_resolver.rb +8 -3
  33. data/lib/capistrano/configuration/server.rb +1 -0
  34. data/lib/capistrano/configuration/servers.rb +16 -8
  35. data/lib/capistrano/configuration/variables.rb +2 -2
  36. data/lib/capistrano/configuration.rb +7 -3
  37. data/lib/capistrano/defaults.rb +1 -1
  38. data/lib/capistrano/doctor/servers_doctor.rb +1 -1
  39. data/lib/capistrano/doctor/variables_doctor.rb +12 -3
  40. data/lib/capistrano/dsl/paths.rb +3 -16
  41. data/lib/capistrano/dsl.rb +10 -2
  42. data/lib/capistrano/i18n.rb +7 -2
  43. data/lib/capistrano/immutable_task.rb +3 -2
  44. data/lib/capistrano/scm/git.rb +34 -7
  45. data/lib/capistrano/scm/hg.rb +8 -1
  46. data/lib/capistrano/scm/svn.rb +9 -0
  47. data/lib/capistrano/scm/tasks/git.rake +10 -9
  48. data/lib/capistrano/scm/tasks/hg.rake +1 -1
  49. data/lib/capistrano/tasks/deploy.rake +22 -10
  50. data/lib/capistrano/templates/deploy.rb.erb +10 -4
  51. data/lib/capistrano/templates/stage.rb.erb +1 -1
  52. data/lib/capistrano/version.rb +1 -1
  53. data/spec/integration/dsl_spec.rb +5 -3
  54. data/spec/lib/capistrano/application_spec.rb +16 -40
  55. data/spec/lib/capistrano/configuration/filter_spec.rb +1 -1
  56. data/spec/lib/capistrano/configuration/host_filter_spec.rb +10 -5
  57. data/spec/lib/capistrano/configuration/plugin_installer_spec.rb +1 -1
  58. data/spec/lib/capistrano/configuration/question_spec.rb +47 -11
  59. data/spec/lib/capistrano/configuration/role_filter_spec.rb +2 -2
  60. data/spec/lib/capistrano/configuration/scm_resolver_spec.rb +55 -0
  61. data/spec/lib/capistrano/configuration/server_spec.rb +1 -1
  62. data/spec/lib/capistrano/configuration/servers_spec.rb +6 -5
  63. data/spec/lib/capistrano/configuration_spec.rb +2 -2
  64. data/spec/lib/capistrano/doctor/environment_doctor_spec.rb +1 -1
  65. data/spec/lib/capistrano/doctor/gems_doctor_spec.rb +1 -1
  66. data/spec/lib/capistrano/doctor/servers_doctor_spec.rb +1 -1
  67. data/spec/lib/capistrano/doctor/variables_doctor_spec.rb +9 -1
  68. data/spec/lib/capistrano/dsl/paths_spec.rb +30 -0
  69. data/spec/lib/capistrano/dsl/task_enhancements_spec.rb +6 -6
  70. data/spec/lib/capistrano/dsl_spec.rb +48 -7
  71. data/spec/lib/capistrano/immutable_task_spec.rb +1 -1
  72. data/spec/lib/capistrano/plugin_spec.rb +2 -2
  73. data/spec/lib/capistrano/scm/git_spec.rb +54 -1
  74. data/spec/lib/capistrano/scm/hg_spec.rb +6 -1
  75. data/spec/lib/capistrano/scm/svn_spec.rb +21 -0
  76. data/spec/lib/capistrano/version_validator_spec.rb +23 -0
  77. data/spec/spec_helper.rb +13 -0
  78. data/spec/support/Vagrantfile +1 -1
  79. data/spec/support/test_app.rb +28 -14
  80. metadata +20 -80
  81. data/.travis.yml +0 -26
@@ -62,14 +62,14 @@ module Capistrano
62
62
  dummy.expects(:set_defaults).never
63
63
  end
64
64
 
65
- it "calls set_defaults during load:defaults" do
65
+ it "calls set_defaults during load:defaults", capture_io: true do
66
66
  dummy = DummyPlugin.new
67
67
  dummy.expects(:set_defaults).once
68
68
  install_plugin(dummy)
69
69
  Rake::Task["load:defaults"].invoke
70
70
  end
71
71
 
72
- it "is able to load tasks from a .rake file" do
72
+ it "is able to load tasks from a .rake file", capture_io: true do
73
73
  install_plugin(ExternalTasksPlugin)
74
74
  Rake::Task["plugin_test"].invoke
75
75
  expect(fetch(:plugin_result)).to eq("hello")
@@ -27,6 +27,28 @@ module Capistrano
27
27
  Capistrano::Configuration.reset!
28
28
  end
29
29
 
30
+ describe "#set_defaults" do
31
+ it "makes git_wrapper_path using a random hex value" do
32
+ env.set(:tmp_dir, "/tmp")
33
+ subject.set_defaults
34
+ expect(env.fetch(:git_wrapper_path)).to match(%r{/tmp/git-ssh-\h{20}\.sh})
35
+ end
36
+
37
+ it "makes git_max_concurrent_connections" do
38
+ subject.set_defaults
39
+ expect(env.fetch(:git_max_concurrent_connections)).to eq(10)
40
+ env.set(:git_max_concurrent_connections, 7)
41
+ expect(env.fetch(:git_max_concurrent_connections)).to eq(7)
42
+ end
43
+
44
+ it "makes git_wait_interval" do
45
+ subject.set_defaults
46
+ expect(env.fetch(:git_wait_interval)).to eq(0)
47
+ env.set(:git_wait_interval, 5)
48
+ expect(env.fetch(:git_wait_interval)).to eq(5)
49
+ end
50
+ end
51
+
30
52
  describe "#git" do
31
53
  it "should call execute git in the context, with arguments" do
32
54
  backend.expects(:execute).with(:git, :init)
@@ -46,7 +68,7 @@ module Capistrano
46
68
  describe "#check_repo_is_reachable" do
47
69
  it "should test the repo url" do
48
70
  env.set(:repo_url, "url")
49
- backend.expects(:execute).with(:git, :'ls-remote --heads', "url").returns(true)
71
+ backend.expects(:execute).with(:git, :'ls-remote', "url", "HEAD").returns(true)
50
72
 
51
73
  subject.check_repo_is_reachable
52
74
  end
@@ -70,10 +92,27 @@ module Capistrano
70
92
 
71
93
  subject.clone_repo
72
94
  end
95
+
96
+ context "with username and password specified" do
97
+ before do
98
+ env.set(:git_http_username, "hello")
99
+ env.set(:git_http_password, "topsecret")
100
+ env.set(:repo_url, "https://example.com/repo.git")
101
+ env.set(:repo_path, "path")
102
+ end
103
+
104
+ it "should include the credentials in the url" do
105
+ backend.expects(:execute).with(:git, :clone, "--mirror", "https://hello:topsecret@example.com/repo.git", "path")
106
+ subject.clone_repo
107
+ end
108
+ end
73
109
  end
74
110
 
75
111
  describe "#update_mirror" do
76
112
  it "should run git update" do
113
+ env.set(:repo_url, "url")
114
+
115
+ backend.expects(:execute).with(:git, :remote, "set-url", "origin", "url")
77
116
  backend.expects(:execute).with(:git, :remote, :update, "--prune")
78
117
 
79
118
  subject.update_mirror
@@ -82,6 +121,9 @@ module Capistrano
82
121
  it "should run git update in shallow mode" do
83
122
  env.set(:git_shallow_clone, "1")
84
123
  env.set(:branch, "branch")
124
+ env.set(:repo_url, "url")
125
+
126
+ backend.expects(:execute).with(:git, :remote, "set-url", "origin", "url")
85
127
  backend.expects(:execute).with(:git, :fetch, "--depth", "1", "origin", "branch")
86
128
 
87
129
  subject.update_mirror
@@ -127,5 +169,16 @@ module Capistrano
127
169
  expect(revision).to eq("81cec13b777ff46348693d327fc8e7832f79bf43")
128
170
  end
129
171
  end
172
+
173
+ describe "#verify_commit" do
174
+ it "should run git verify-commit" do
175
+ env.set(:branch, "branch")
176
+
177
+ backend.expects(:capture).with(:git, "rev-list --max-count=1 branch").returns("81cec13b777ff46348693d327fc8e7832f79bf43")
178
+ backend.expects(:execute).with(:git, :"verify-commit", "81cec13b777ff46348693d327fc8e7832f79bf43")
179
+
180
+ subject.verify_commit
181
+ end
182
+ end
130
183
  end
131
184
  end
@@ -85,8 +85,13 @@ module Capistrano
85
85
  env.set(:repo_tree, "tree")
86
86
  env.set(:branch, :branch)
87
87
  env.set(:release_path, "path")
88
+ env.set(:tmp_dir, "/tmp")
88
89
 
89
- backend.expects(:execute).with(:hg, "archive --type tgz -p . -I", "tree", "--rev", :branch, "| tar -x --strip-components 1 -f - -C", "path")
90
+ SecureRandom.stubs(:hex).with(10).returns("random")
91
+ backend.expects(:execute).with(:hg, "archive -p . -I", "tree", "--rev", :branch, "/tmp/random.tar")
92
+ backend.expects(:execute).with(:mkdir, "-p", "path")
93
+ backend.expects(:execute).with(:tar, "-x --strip-components 1 -f", "/tmp/random.tar", "-C", "path")
94
+ backend.expects(:execute).with(:rm, "/tmp/random.tar")
90
95
 
91
96
  subject.archive_to_release_path
92
97
  end
@@ -71,6 +71,10 @@ module Capistrano
71
71
 
72
72
  describe "#update_mirror" do
73
73
  it "should run svn update" do
74
+ env.set(:repo_url, "url")
75
+ env.set(:repo_path, "path")
76
+ backend.expects(:capture).with(:svn, :info, "path").returns("URL: url\n")
77
+
74
78
  env.set(:svn_username, "someuser")
75
79
  env.set(:svn_password, "somepassword")
76
80
  backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword")
@@ -80,6 +84,10 @@ module Capistrano
80
84
 
81
85
  context "for specific revision" do
82
86
  it "should run svn update" do
87
+ env.set(:repo_url, "url")
88
+ env.set(:repo_path, "path")
89
+ backend.expects(:capture).with(:svn, :info, "path").returns("URL: url\n")
90
+
83
91
  env.set(:svn_username, "someuser")
84
92
  env.set(:svn_password, "somepassword")
85
93
  env.set(:svn_revision, "12345")
@@ -88,6 +96,19 @@ module Capistrano
88
96
  subject.update_mirror
89
97
  end
90
98
  end
99
+
100
+ it "should run svn switch if repo_url is changed" do
101
+ env.set(:repo_url, "url")
102
+ env.set(:repo_path, "path")
103
+ backend.expects(:capture).with(:svn, :info, "path").returns("URL: old_url\n")
104
+
105
+ env.set(:svn_username, "someuser")
106
+ env.set(:svn_password, "somepassword")
107
+ backend.expects(:execute).with(:svn, :switch, "url", "--username someuser", "--password somepassword")
108
+ backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword")
109
+
110
+ subject.update_mirror
111
+ end
91
112
  end
92
113
 
93
114
  describe "#archive_to_release_path" do
@@ -89,6 +89,29 @@ module Capistrano
89
89
  end
90
90
  end
91
91
  end
92
+
93
+ context "with multiple versions" do
94
+ let(:current_version) { "3.5.9" }
95
+
96
+ context "valid" do
97
+ let(:version) { [">= 3.5.0", "< 3.5.10"] }
98
+ it { is_expected.to be_truthy }
99
+ end
100
+
101
+ context "invalid" do
102
+ let(:version) { [">= 3.5.0", "< 3.5.8"] }
103
+ it "fails" do
104
+ expect { subject }.to raise_error(RuntimeError)
105
+ end
106
+ end
107
+
108
+ context "invalid" do
109
+ let(:version) { ["> 3.5.9", "< 3.5.13"] }
110
+ it "fails" do
111
+ expect { subject }.to raise_error(RuntimeError)
112
+ end
113
+ end
114
+ end
92
115
  end
93
116
  end
94
117
  end
data/spec/spec_helper.rb CHANGED
@@ -13,4 +13,17 @@ RSpec.configure do |config|
13
13
  config.raise_errors_for_deprecations!
14
14
  config.mock_framework = :mocha
15
15
  config.order = "random"
16
+
17
+ config.around(:example, capture_io: true) do |example|
18
+ begin
19
+ Rake.application.options.trace_output = StringIO.new
20
+ $stdout = StringIO.new
21
+ $stderr = StringIO.new
22
+ example.run
23
+ ensure
24
+ Rake.application.options.trace_output = STDERR
25
+ $stdout = STDOUT
26
+ $stderr = STDERR
27
+ end
28
+ end
16
29
  end
@@ -6,7 +6,7 @@ Vagrant.configure("2") do |config|
6
6
  [:app].each_with_index do |role, i|
7
7
  config.vm.define(role, primary: true) do |primary|
8
8
  primary.vm.define role
9
- primary.vm.box = "hashicorp/precise64"
9
+ primary.vm.box = "hashicorp/bionic64"
10
10
  primary.vm.network "forwarded_port", guest: 22, host: "222#{i}".to_i
11
11
  primary.vm.provision :shell, inline: "sudo apt-get -y install git-core"
12
12
 
@@ -19,6 +19,7 @@ module TestApp
19
19
  set :linked_files, #{linked_files}
20
20
  set :linked_dirs, #{linked_dirs}
21
21
  set :format_options, log_file: nil
22
+ set :local_user, #{current_user.inspect}
22
23
  CONFIG
23
24
  end
24
25
 
@@ -39,18 +40,19 @@ module TestApp
39
40
  FileUtils.mkdir(test_app_path)
40
41
 
41
42
  File.open(gemfile, "w+") do |file|
43
+ file.write "source 'https://rubygems.org'\n"
42
44
  file.write "gem 'capistrano', path: '#{path_to_cap}'"
43
45
  end
44
46
 
45
47
  Dir.chdir(test_app_path) do
46
- `bundle`
48
+ run "bundle"
47
49
  end
48
50
  end
49
51
 
50
52
  def install_test_app_with(config)
51
53
  create_test_app
52
54
  Dir.chdir(test_app_path) do
53
- `bundle exec cap install STAGES=#{stage}`
55
+ run "cap install STAGES=#{stage}"
54
56
  end
55
57
  write_local_deploy_file(config)
56
58
  end
@@ -89,14 +91,16 @@ module TestApp
89
91
  File.open(shared_path.join(path), "w")
90
92
  end
91
93
 
92
- def cap(task)
93
- run "bundle exec cap #{stage} #{task}"
94
+ def cap(task, subdirectory=nil)
95
+ run "cap #{stage} #{task} --trace", subdirectory
94
96
  end
95
97
 
96
- def run(command)
98
+ def run(command, subdirectory=nil)
97
99
  output = nil
98
- Dir.chdir(test_app_path) do
99
- output = `#{command}`
100
+ command = "bundle exec #{command}" unless command =~ /^bundle\b/
101
+ dir = subdirectory ? test_app_path.join(subdirectory) : test_app_path
102
+ Dir.chdir(dir) do
103
+ output = with_clean_bundler_env { `#{command}` }
100
104
  end
101
105
  [$CHILD_STATUS.success?, output]
102
106
  end
@@ -129,12 +133,12 @@ module TestApp
129
133
  deploy_to.join("releases")
130
134
  end
131
135
 
132
- def release_path
133
- releases_path.join(timestamp)
136
+ def release_path(t=timestamp)
137
+ releases_path.join(t)
134
138
  end
135
139
 
136
- def timestamp
137
- Time.now.utc.strftime("%Y%m%d%H%M%S")
140
+ def timestamp(offset=0)
141
+ (Time.now.utc + offset).strftime("%Y%m%d%H%M%S")
138
142
  end
139
143
 
140
144
  def repo_path
@@ -154,7 +158,7 @@ module TestApp
154
158
  end
155
159
 
156
160
  def current_user
157
- `whoami`.chomp
161
+ "(GitHub Web Flow) via ShipIt"
158
162
  end
159
163
 
160
164
  def task_dir
@@ -182,7 +186,17 @@ module TestApp
182
186
  FileUtils.mv(config_path, location)
183
187
  end
184
188
 
185
- def git_wrapper_path
186
- "/tmp/git-ssh-my_app_name-#{stage}-#{current_user}.sh"
189
+ def git_wrapper_path_glob
190
+ "/tmp/git-ssh-*.sh"
191
+ end
192
+
193
+ def with_clean_bundler_env(&block)
194
+ return yield unless defined?(Bundler)
195
+
196
+ if Bundler.respond_to?(:with_unbundled_env)
197
+ Bundler.with_unbundled_env(&block)
198
+ else
199
+ Bundler.with_clean_env(&block)
200
+ end
187
201
  end
188
202
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Clements
8
8
  - Lee Hambley
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-10 00:00:00.000000000 Z
12
+ date: 2022-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: airbrussh
@@ -67,76 +67,6 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.9.0
70
- - !ruby/object:Gem::Dependency
71
- name: capistrano-harrow
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: danger
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: mocha
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rspec
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
70
  description: Capistrano is a utility and framework for executing commands in parallel
141
71
  on multiple remote machines, via SSH.
142
72
  email:
@@ -148,11 +78,13 @@ executables:
148
78
  extensions: []
149
79
  extra_rdoc_files: []
150
80
  files:
81
+ - ".circleci/config.yml"
151
82
  - ".github/issue_template.md"
152
83
  - ".github/pull_request_template.md"
84
+ - ".github/release-drafter.yml"
85
+ - ".github/workflows/push.yml"
153
86
  - ".gitignore"
154
87
  - ".rubocop.yml"
155
- - ".travis.yml"
156
88
  - CHANGELOG.md
157
89
  - CONTRIBUTING.md
158
90
  - DEVELOPMENT.md
@@ -176,6 +108,7 @@ files:
176
108
  - features/step_definitions/assertions.rb
177
109
  - features/step_definitions/cap_commands.rb
178
110
  - features/step_definitions/setup.rb
111
+ - features/subdirectory.feature
179
112
  - features/support/env.rb
180
113
  - features/support/remote_command_helpers.rb
181
114
  - features/support/vagrant_helpers.rb
@@ -247,6 +180,7 @@ files:
247
180
  - spec/lib/capistrano/configuration/plugin_installer_spec.rb
248
181
  - spec/lib/capistrano/configuration/question_spec.rb
249
182
  - spec/lib/capistrano/configuration/role_filter_spec.rb
183
+ - spec/lib/capistrano/configuration/scm_resolver_spec.rb
250
184
  - spec/lib/capistrano/configuration/server_spec.rb
251
185
  - spec/lib/capistrano/configuration/servers_spec.rb
252
186
  - spec/lib/capistrano/configuration_spec.rb
@@ -277,11 +211,16 @@ files:
277
211
  - spec/support/tasks/plugin.rake
278
212
  - spec/support/tasks/root.rake
279
213
  - spec/support/test_app.rb
280
- homepage: http://capistranorb.com/
214
+ homepage: https://capistranorb.com/
281
215
  licenses:
282
216
  - MIT
283
- metadata: {}
284
- post_install_message:
217
+ metadata:
218
+ bug_tracker_uri: https://github.com/capistrano/capistrano/issues
219
+ changelog_uri: https://github.com/capistrano/capistrano/releases
220
+ source_code_uri: https://github.com/capistrano/capistrano
221
+ homepage_uri: https://capistranorb.com/
222
+ documentation_uri: https://capistranorb.com/
223
+ post_install_message:
285
224
  rdoc_options: []
286
225
  require_paths:
287
226
  - lib
@@ -296,9 +235,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
235
  - !ruby/object:Gem::Version
297
236
  version: '0'
298
237
  requirements: []
299
- rubyforge_project:
300
- rubygems_version: 2.6.8
301
- signing_key:
238
+ rubygems_version: 3.3.8
239
+ signing_key:
302
240
  specification_version: 4
303
241
  summary: Capistrano - Welcome to easy deployment with Ruby over SSH
304
242
  test_files:
@@ -312,6 +250,7 @@ test_files:
312
250
  - features/step_definitions/assertions.rb
313
251
  - features/step_definitions/cap_commands.rb
314
252
  - features/step_definitions/setup.rb
253
+ - features/subdirectory.feature
315
254
  - features/support/env.rb
316
255
  - features/support/remote_command_helpers.rb
317
256
  - features/support/vagrant_helpers.rb
@@ -325,6 +264,7 @@ test_files:
325
264
  - spec/lib/capistrano/configuration/plugin_installer_spec.rb
326
265
  - spec/lib/capistrano/configuration/question_spec.rb
327
266
  - spec/lib/capistrano/configuration/role_filter_spec.rb
267
+ - spec/lib/capistrano/configuration/scm_resolver_spec.rb
328
268
  - spec/lib/capistrano/configuration/server_spec.rb
329
269
  - spec/lib/capistrano/configuration/servers_spec.rb
330
270
  - spec/lib/capistrano/configuration_spec.rb
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3.1
4
- - 2.2
5
- - 2.1
6
- - 2.0
7
- matrix:
8
- # Rubinius periodically fails in general, and it always segfaults for RuboCop
9
- # in particular. Until we figure out how to make it work consistently, allow
10
- # it to fail without breaking the build.
11
- allow_failures:
12
- - rvm: rbx-2
13
- include:
14
- - rvm: rbx-2
15
- script: bundle exec rake spec
16
- # Run Danger only once, on 2.3.1
17
- - rvm: 2.3.1
18
- before_script: bundle exec danger
19
-
20
- script: bundle exec rake spec rubocop
21
- install: bundle install --jobs=1
22
- cache: bundler
23
- branches:
24
- except:
25
- - legacy-v2
26
- sudo: false