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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -3
- data/CHANGELOG.md +92 -2
- data/Gemfile +1 -5
- data/README.md +84 -3
- data/Rakefile +5 -1
- data/capistrano.gemspec +5 -1
- data/features/configuration.feature +9 -7
- data/features/deploy.feature +9 -8
- data/features/step_definitions/assertions.rb +15 -17
- data/features/step_definitions/cap_commands.rb +1 -1
- data/features/step_definitions/setup.rb +11 -7
- data/features/support/env.rb +8 -9
- data/features/support/remote_command_helpers.rb +2 -3
- data/features/support/vagrant_helpers.rb +35 -0
- data/lib/capistrano/all.rb +2 -1
- data/lib/capistrano/application.rb +52 -7
- data/lib/capistrano/configuration.rb +39 -10
- data/lib/capistrano/configuration/filter.rb +56 -0
- data/lib/capistrano/configuration/question.rb +23 -11
- data/lib/capistrano/configuration/server.rb +14 -5
- data/lib/capistrano/configuration/servers.rb +12 -29
- data/lib/capistrano/defaults.rb +11 -9
- data/lib/capistrano/deploy.rb +1 -0
- data/lib/capistrano/dsl.rb +13 -2
- data/lib/capistrano/dsl/env.rb +6 -2
- data/lib/capistrano/dsl/task_enhancements.rb +5 -3
- data/lib/capistrano/git.rb +8 -2
- data/lib/capistrano/hg.rb +7 -1
- data/lib/capistrano/svn.rb +2 -2
- data/lib/capistrano/tasks/deploy.rake +12 -10
- data/lib/capistrano/tasks/git.rake +1 -1
- data/lib/capistrano/tasks/install.rake +17 -14
- data/lib/capistrano/templates/Capfile +6 -4
- data/lib/capistrano/templates/deploy.rb.erb +5 -15
- data/lib/capistrano/upload_task.rb +9 -0
- data/lib/capistrano/version.rb +1 -1
- data/spec/integration/dsl_spec.rb +129 -10
- data/spec/lib/capistrano/application_spec.rb +24 -6
- data/spec/lib/capistrano/configuration/filter_spec.rb +105 -0
- data/spec/lib/capistrano/configuration/question_spec.rb +18 -12
- data/spec/lib/capistrano/configuration/server_spec.rb +19 -19
- data/spec/lib/capistrano/configuration/servers_spec.rb +101 -20
- data/spec/lib/capistrano/configuration_spec.rb +24 -3
- data/spec/lib/capistrano/dsl/task_enhancements_spec.rb +88 -0
- data/spec/lib/capistrano/dsl_spec.rb +2 -13
- data/spec/lib/capistrano/git_spec.rb +15 -4
- data/spec/lib/capistrano/hg_spec.rb +13 -2
- data/spec/lib/capistrano/scm_spec.rb +3 -3
- data/spec/lib/capistrano/svn_spec.rb +11 -1
- data/spec/lib/capistrano/upload_task_spec.rb +19 -0
- data/spec/lib/capistrano/version_validator_spec.rb +4 -4
- data/spec/spec_helper.rb +2 -1
- data/spec/support/Vagrantfile +1 -1
- data/spec/support/test_app.rb +2 -0
- metadata +45 -26
- data/lib/capistrano/configuration/servers/host_filter.rb +0 -82
- data/lib/capistrano/configuration/servers/role_filter.rb +0 -86
- data/spec/lib/capistrano/configuration/servers/host_filter_spec.rb +0 -84
- data/spec/lib/capistrano/configuration/servers/role_filter_spec.rb +0 -140
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5fec938fed98daad8d2ce764486a4b059095a1a
|
4
|
+
data.tar.gz: 5c46c098df29b9ea0f08a07db3270d83dcc598a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddfb0bdd5ea6266b25c6f96c02d466238f450ead5b4c47d13140c40db509ef92718dda37fefae01a364a812144d6cee16682be6ebfaa2274f1bdb558f218ff8f
|
7
|
+
data.tar.gz: f4e4fe76dacb08739437eaf3c83397f9119d8858ae23dff58b75c3325c380d0ca51cb995ebb26f00389aee9309a1eacad774bbf8c3da777c35640395715097b2
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,10 +4,98 @@ Reverse Chronological Order:
|
|
4
4
|
|
5
5
|
## master
|
6
6
|
|
7
|
-
https://github.com/capistrano/capistrano/compare/v3.2.0
|
7
|
+
https://github.com/capistrano/capistrano/compare/v3.2.1...v3.3.0
|
8
|
+
|
9
|
+
## `3.3.3`
|
10
|
+
|
11
|
+
https://github.com/capistrano/capistrano/compare/v3.2.1...v3.3.0
|
12
|
+
|
13
|
+
* Enhancement (@townsen)
|
14
|
+
* Added the variable `:repo_tree` which allows the specification of a sub-tree that
|
15
|
+
will be extracted from the repository. This is useful when deploying a project
|
16
|
+
that lives in a subdirectory of a larger repository.
|
17
|
+
Implemented only for git and hg.
|
18
|
+
If not defined then the behaviour is as previously and the whole repository is
|
19
|
+
extracted (subject to git-archive `.gitattributes` of course).
|
20
|
+
|
21
|
+
* Enhancement (@townsen): Remove unnecessary entries from default backtrace
|
22
|
+
|
23
|
+
When the `--backtrace` (or `--trace`) command line option is not supplied
|
24
|
+
Rake lowers the noise level in exception backtraces by building
|
25
|
+
a regular expression containing all the system library paths and
|
26
|
+
using it to exclude backtrace entries that match.
|
27
|
+
|
28
|
+
This does not always go far enough, particularly in RVM environments when
|
29
|
+
many gem paths are added. This commit reverses that approach and _only_
|
30
|
+
include backtrace entries that fall within the Capfile and list of tasks
|
31
|
+
imported thereafter. This makes reading exceptions much easier on the eye.
|
32
|
+
|
33
|
+
If the full unexpurgated backtrace is required then the --backtrace
|
34
|
+
and --trace options supply it as before.
|
35
|
+
|
36
|
+
* Disable loading stages configs on `cap -T`
|
37
|
+
* Track (anonymous) statistics, see https://github.com/capistrano/stats
|
38
|
+
|
39
|
+
* Enhancements (@townsen)
|
40
|
+
* Fix matching on hosts with custom ports or users set
|
41
|
+
* Previously filtering would affect any generated configuration files so that
|
42
|
+
files newly deployed would not be the same as those on the hosts previously
|
43
|
+
deployed (and now excluded by filters). This is almost certainly not what is
|
44
|
+
wanted: the filters should apply only to the on() method and thus any
|
45
|
+
configuration files deployed will be identical across the set of servers
|
46
|
+
making up the stage.
|
47
|
+
* Host and Role filtering now affects only `on()` commands
|
48
|
+
and not the `roles()`, `release_roles()` and `primary()` methods.
|
49
|
+
* This applies to filters defined via the command line, the environment
|
50
|
+
and the :filter variable.
|
51
|
+
* Filtering now supports Regular expressions
|
52
|
+
* This change _could_ cause existing scripts that use filtering and depend on
|
53
|
+
the old behaviour to fail, though it is unlikely. Users who rely on
|
54
|
+
filtering should check that generated configuration files are correct, and
|
55
|
+
where not introduce server properties to do the filtering. For example, if a
|
56
|
+
filter was used to specify an active subset of servers (by hostname), it should
|
57
|
+
be removed and replaced with an 'active' property (set to true or false) on the
|
58
|
+
server definitions. This keeps the stage file as the canonical model of the
|
59
|
+
deployment environment.
|
60
|
+
|
61
|
+
* See the documentation in the README.md file
|
62
|
+
|
63
|
+
* Enhancements (@townsen)
|
64
|
+
* Added set_if_empty method to DSL to allow conditional setting
|
65
|
+
* Altered standard Capistrano defaults so that they are not set
|
66
|
+
at the start of a stage if they have been previously set. This
|
67
|
+
allows variables like :default_env to be set in deploy.rb.
|
68
|
+
* Deep copy properties added using the 'roles' keyword
|
69
|
+
* If a property exists on a server when another definition is
|
70
|
+
encountered and is an Array, Set or Hash then add the new values
|
71
|
+
|
72
|
+
This allows roles to specify properties common to all servers and
|
73
|
+
then for individual servers to modify them, keeping things DRY
|
74
|
+
|
75
|
+
Breaking Changes:
|
76
|
+
* By using Ruby's noecho method introduced in Ruby version 1.9.3, we dropped support for Ruby versions prior to 1.9.3. See [issue #878](https://github.com/capistrano/capistrano/issues/878) and [PR #1112](https://github.com/capistrano/capistrano/pull/1112) for more information. (@kaikuchn)
|
77
|
+
|
78
|
+
* Bug Fixes:
|
79
|
+
* Fixed compatibility with FreeBSD tar (@robbertkl)
|
80
|
+
* remote_file can be used inside a namespace (@mikz)
|
81
|
+
|
82
|
+
* Minor Changes
|
83
|
+
* Remove -v flag from mkdir call. (@caligo-mentis)
|
84
|
+
* Capistrano now allows to customize `local_user` for revision log. (@sauliusgrigaitis)
|
85
|
+
* Added tests for after/before hooks features (@juanibiapina, @miry)
|
86
|
+
* Added `--force` flag to `svn export` command to fix errors when the release directory already exists.
|
87
|
+
* Improved the output of `cap --help`. (@mbrictson)
|
88
|
+
* Cucumber suite now runs on the latest version of Vagrant (@tpett)
|
89
|
+
* The `ask` method now supports the `echo: false` option. (@mbrictson, @kaikuchn)
|
90
|
+
* Cucumber scenario improvements (@bruno-)
|
91
|
+
* Added suggestion to Capfile to use 'capistrano-passenger' gem, replacing suggestion in config/deploy.rb to re-implement 'deploy:restart' (@betesh)
|
92
|
+
* Updated svn fetch_revision method to use `svnversion`
|
93
|
+
* `cap install` no longer overwrites existing files. (@dmarkow)
|
8
94
|
|
9
95
|
## `3.2.1`
|
10
96
|
|
97
|
+
https://github.com/capistrano/capistrano/compare/v3.2.0...v3.2.1
|
98
|
+
|
11
99
|
* Bug Fixes:
|
12
100
|
* 3.2.0 introduced some behaviour to modify the way before/after hooks were called, to allow the optional
|
13
101
|
preservation of arguments to be passed to tasks. This release reverts that commit in order to restore
|
@@ -19,6 +107,7 @@ https://github.com/capistrano/capistrano/compare/v3.2.0...HEAD
|
|
19
107
|
* Changed asking question to more standard format (like common unix commandline tools) (@sponomarev)
|
20
108
|
* Fixed typos in the README. (@sponomarev)
|
21
109
|
* Added `keys` method to Configuration to allow introspection of configuration options. (@juanibiapina)
|
110
|
+
* Improve error message when git:check fails (raise instead of silently `exit 1`) (@mbrictson)
|
22
111
|
|
23
112
|
## `3.2.0`
|
24
113
|
|
@@ -40,7 +129,8 @@ https://github.com/capistrano/capistrano/compare/v3.0.1...v3.1.0
|
|
40
129
|
Breaking changes:
|
41
130
|
|
42
131
|
* `deploy:restart` task **is no longer run by default**.
|
43
|
-
From this version, developers who restart the app on each deploy need to declare it in their deploy flow (eg `after 'deploy:publishing', 'deploy:restart'`)
|
132
|
+
From this version, developers who restart the app on each deploy need to declare it in their deploy flow (eg `after 'deploy:publishing', 'deploy:restart'`)
|
133
|
+
or, for passenger applications, use the capistrano-passenger gem.
|
44
134
|
|
45
135
|
Please, check https://github.com/capistrano/capistrano/commit/4e6523e1f50707499cf75eb53dce37a89528a9b0 for more information. (@kirs)
|
46
136
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# Capistrano [](https://travis-ci.org/capistrano/capistrano) [](https://codeclimate.com/github/capistrano/capistrano) <a href="http://codersclan.net/?repo_id=325&source=small"><img src="http://img.shields.io/badge/get-support-blue.svg"></a>
|
2
2
|
|
3
3
|
## Requirements
|
4
4
|
|
5
|
-
* Ruby >= 1.9 (JRuby and C-Ruby/YARV are supported)
|
5
|
+
* Ruby >= 1.9.3 (JRuby and C-Ruby/YARV are supported)
|
6
6
|
|
7
7
|
## Support
|
8
8
|
|
@@ -55,7 +55,7 @@ $ bundle exec cap install STAGES=local,sandbox,qa,production
|
|
55
55
|
## Usage
|
56
56
|
|
57
57
|
``` sh
|
58
|
-
$ bundle exec cap -
|
58
|
+
$ bundle exec cap -T
|
59
59
|
|
60
60
|
$ bundle exec cap staging deploy
|
61
61
|
$ bundle exec cap production deploy
|
@@ -153,6 +153,11 @@ end
|
|
153
153
|
|
154
154
|
Perfect, who needs telephones.
|
155
155
|
|
156
|
+
When using `ask` to get user input, you can pass `echo: false` to prevent the input from being displayed:
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
ask(:database_password, "default", echo: false)
|
160
|
+
```
|
156
161
|
|
157
162
|
## Using password authentication
|
158
163
|
|
@@ -224,6 +229,13 @@ DEBUG [9ce34809] leehambley pts/0 2013-06-13 17:11 (port-11262.pppoe.wtn
|
|
224
229
|
INFO [9ce34809] Finished in 0.420 seconds command successful.
|
225
230
|
```
|
226
231
|
|
232
|
+
## VCS Requirements
|
233
|
+
|
234
|
+
Capistano requires modern versions of Git, Mercurial and Subversion
|
235
|
+
respectively (if you are using that particular VCS). Git Git requirement is at
|
236
|
+
least version 1.8.x. Mercurial and Subversion, any modern version should
|
237
|
+
suffice.
|
238
|
+
|
227
239
|
## A word about PTYs
|
228
240
|
|
229
241
|
There is a configuration option which asks the backend driver to ask the remote host
|
@@ -252,6 +264,7 @@ The following variables are settable:
|
|
252
264
|
| Variable Name | Description | Notes |
|
253
265
|
|:---------------------:|----------------------------------------------------------------------|-----------------------------------------------------------------|
|
254
266
|
| `:repo_url` | The URL of your scm repository (git, hg, svn) | file://, https://, ssh://, or svn+ssh:// are all supported |
|
267
|
+
| `:repo_tree` | The subtree of the scm repository to deploy (git, hg) | Only implemented for git and hg repos. Extract just this tree |
|
255
268
|
| `:branch` | The branch you wish to deploy | This only has meaning for git and hg repos, to specify the branch of an svn repo, set `:repo_url` to the branch location. |
|
256
269
|
| `:scm` | The source control system used | `:git`, `:hg`, `:svn` are currently supported |
|
257
270
|
| `:tmp_dir` | The (optional) temp directory that will be used (default: /tmp) | if you have a shared web host, this setting may need to be set (i.e. /home/user/tmp/capistrano). |
|
@@ -262,6 +275,53 @@ __Support removed__ for following variables:
|
|
262
275
|
|:---------------------:|---------------------------------------------------------------------|-----------------------------------------------------------------|
|
263
276
|
| `:copy_exclude` | The (optional) array of files and/or folders excluded from deploy | Replaced by Git's native `.gitattributes`, see [#515](https://github.com/capistrano/capistrano/issues/515) for more info. |
|
264
277
|
|
278
|
+
## Host and Role Filtering
|
279
|
+
|
280
|
+
Capistrano enables the declaration of servers and roles, each of which may have properties
|
281
|
+
associated with them. Tasks are then able to use these definitions in two distinct ways:
|
282
|
+
|
283
|
+
* To determine _configurations_: typically by using the `roles()`, `release_roles()` and
|
284
|
+
`primary()` methods. Typically these are used outside the scope of the `on()` method.
|
285
|
+
|
286
|
+
* To _interact_ with remote hosts using the `on()` method
|
287
|
+
|
288
|
+
An example of the two would be to create a `/etc/krb5.conf` file containing the list of
|
289
|
+
available KDC's by using the list of servers returned by `roles(:kdc)` and then uploading
|
290
|
+
it to all client machines using `on(roles(:all)) do upload!(file) end`
|
291
|
+
|
292
|
+
A problem with this arises when _filters_ are used. Filters are designed to limit the
|
293
|
+
actual set of hosts that are used to a subset of those in the overall stage, but how
|
294
|
+
should that apply in the above case?
|
295
|
+
|
296
|
+
If the filter applies to both the _interaction_ and _configuration_ aspects, any configuration
|
297
|
+
files deployed will not be the same as those on the hosts excluded by the filters. This is
|
298
|
+
almost certainly not what is wanted, the filters should apply only to the _interactions_
|
299
|
+
ensuring that any configuration files deployed will be identical across the stage.
|
300
|
+
|
301
|
+
Another type of filtering is done by defining properties on servers and selecting on that
|
302
|
+
basis. An example of that is the 'no_release' property and it's use in the
|
303
|
+
`release_roles()` method. To distinguish these two types of filtering we name them:
|
304
|
+
|
305
|
+
* On-Filtering
|
306
|
+
Specified in the following ways:
|
307
|
+
* Via environment variables HOSTS and ROLES
|
308
|
+
* Via command line options `--hosts` and `--roles`
|
309
|
+
* Via the `:filter` variable set in a stage file
|
310
|
+
* Property-Filtering
|
311
|
+
These are specified by options passed to the `roles()` method (and implicitly in methods
|
312
|
+
like `release_roles()` and `primary()`)
|
313
|
+
|
314
|
+
To increase the utility of On-Filters they can use regular expressions:
|
315
|
+
* If the host name in a filter doesn't match `/^[-A-Za-z0-9.]+$/` (the set of valid characters
|
316
|
+
for a DNS name) then it's assumed to be a regular expression.
|
317
|
+
* Since role names are Ruby symbols they can legitimately contain any characters. To allow multiple
|
318
|
+
of them to be specified on one line we use the comma. To use a regexp for a role filter begin
|
319
|
+
and end the string with '/'. These may not contain a comma.
|
320
|
+
|
321
|
+
When filters are specified using comma separated lists, the final filter is the _union_ of
|
322
|
+
all of the components. However when multiple filters are declared the result is the
|
323
|
+
_intersection_.
|
324
|
+
|
265
325
|
## SSHKit
|
266
326
|
|
267
327
|
[SSHKit](https://github.com/leehambley/sshkit) is the driver for SSH
|
@@ -269,6 +329,27 @@ connections behind the scenes in Capistrano. Depending on how deep you dig, you
|
|
269
329
|
might run into interfaces that come directly from SSHKit (the configuration is
|
270
330
|
a good example).
|
271
331
|
|
332
|
+
## Testing
|
333
|
+
|
334
|
+
Capistrano has two test suites: an RSpec suite and a Cucumber suite. The
|
335
|
+
RSpec suite handles quick feedback unit specs. The Cucumber features are
|
336
|
+
an integration suite that uses Vagrant to deploy to a real virtual
|
337
|
+
server. In order to run the Cucumber suite you will need to install
|
338
|
+
[Vagrant](http://www.vagrantup.com/) and Vagrant supported
|
339
|
+
virtualization software like
|
340
|
+
[VirtualBox](https://www.virtualbox.org/wiki/Downloads).
|
341
|
+
|
342
|
+
```
|
343
|
+
# To run the RSpec suite
|
344
|
+
$ rake spec
|
345
|
+
|
346
|
+
# To run the Cucumber suite
|
347
|
+
$ rake features
|
348
|
+
|
349
|
+
# To run the Cucumber suite and leave the VM running (faster for subsequent runs)
|
350
|
+
$ rake features KEEP_RUNNING=1
|
351
|
+
```
|
352
|
+
|
272
353
|
## License
|
273
354
|
|
274
355
|
MIT License (MIT)
|
data/Rakefile
CHANGED
data/capistrano.gemspec
CHANGED
@@ -20,12 +20,16 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.licenses = ['MIT']
|
21
21
|
|
22
22
|
gem.post_install_message = <<eos
|
23
|
-
Capistrano 3.1 has some breaking changes
|
23
|
+
Capistrano 3.1 has some breaking changes. Please check the CHANGELOG: http://goo.gl/SxB0lr
|
24
24
|
|
25
25
|
If you're upgrading Capistrano from 2.x, we recommend to read the upgrade guide: http://goo.gl/4536kB
|
26
|
+
|
27
|
+
The `deploy:restart` hook for passenger applications is now in a separate gem called capistrano-passenger. Just add it to your Gemfile and require it in your Capfile.
|
26
28
|
eos
|
27
29
|
|
30
|
+
gem.required_ruby_version = '>= 1.9.3'
|
28
31
|
gem.add_dependency 'sshkit', '~> 1.3'
|
32
|
+
gem.add_dependency 'capistrano-stats', '~> 1.0.3'
|
29
33
|
gem.add_dependency 'rake', '>= 10.0.0'
|
30
34
|
gem.add_dependency 'i18n'
|
31
35
|
|
@@ -19,10 +19,12 @@ Feature: The path to the configuration can be changed, removing the need to
|
|
19
19
|
Then the task is successful
|
20
20
|
And contains "install" in the output
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
# Feature disabled because this is not how it works, we don't load
|
23
|
+
# tasks from stage files, as we expect them to be defined in ./lib/tasks
|
24
|
+
# Scenario: Show install task with configuration in a custom location
|
25
|
+
# And config stage file has line "desc 'Special Task'"
|
26
|
+
# And config stage file has line "task :special_stage_task"
|
27
|
+
# But the configuration is in a custom location
|
28
|
+
# When I run "cap -T"
|
29
|
+
# Then the task is successful
|
30
|
+
# And contains "special_stage_task" in the output
|
data/features/deploy.feature
CHANGED
@@ -6,7 +6,8 @@ Feature: Deploy
|
|
6
6
|
|
7
7
|
Scenario: Creating the repo
|
8
8
|
When I run cap "git:check"
|
9
|
-
Then
|
9
|
+
Then the task is successful
|
10
|
+
And references in the remote repo are listed
|
10
11
|
|
11
12
|
Scenario: Creating the directory structure
|
12
13
|
When I run cap "deploy:check:directories"
|
@@ -22,16 +23,16 @@ Feature: Deploy
|
|
22
23
|
Then directories referenced in :linked_files are created in shared
|
23
24
|
|
24
25
|
Scenario: Checking linked files - missing file
|
25
|
-
Given a
|
26
|
-
But
|
26
|
+
Given a linked file "missing_file.txt"
|
27
|
+
But file "missing_file.txt" does not exist in shared path
|
27
28
|
When I run cap "deploy:check:linked_files"
|
28
|
-
Then the task
|
29
|
+
Then the task fails
|
29
30
|
|
30
31
|
Scenario: Checking linked files - file exists
|
31
|
-
Given a
|
32
|
-
And
|
32
|
+
Given a linked file "existing_file.txt"
|
33
|
+
And file "existing_file.txt" exists in shared path
|
33
34
|
When I run cap "deploy:check:linked_files"
|
34
|
-
Then the task
|
35
|
+
Then the task is successful
|
35
36
|
|
36
37
|
Scenario: Creating a release
|
37
38
|
Given I run cap "deploy:check:directories"
|
@@ -40,7 +41,7 @@ Feature: Deploy
|
|
40
41
|
And the release is created
|
41
42
|
|
42
43
|
Scenario: Symlink linked files
|
43
|
-
When I run cap "deploy:symlink:linked_files" as part of a release
|
44
|
+
When I run cap "deploy:symlink:linked_files deploy:symlink:release" as part of a release
|
44
45
|
Then file symlinks are created in the new release
|
45
46
|
|
46
47
|
Scenario: Symlink linked dirs
|
@@ -1,4 +1,5 @@
|
|
1
1
|
Then(/^references in the remote repo are listed$/) do
|
2
|
+
expect(@output).to include('refs/heads/master')
|
2
3
|
end
|
3
4
|
|
4
5
|
Then(/^the shared path is created$/) do
|
@@ -22,13 +23,6 @@ Then(/^directories referenced in :linked_files are created in shared$/) do
|
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
Then(/^the task will be successful$/) do
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
Then(/^the task will exit$/) do
|
30
|
-
end
|
31
|
-
|
32
26
|
Then(/^the repo is cloned$/) do
|
33
27
|
run_vagrant_command(test_dir_exists(TestApp.repo_path))
|
34
28
|
end
|
@@ -38,9 +32,8 @@ Then(/^the release is created$/) do
|
|
38
32
|
end
|
39
33
|
|
40
34
|
Then(/^file symlinks are created in the new release$/) do
|
41
|
-
pending
|
42
35
|
TestApp.linked_files.each do |file|
|
43
|
-
run_vagrant_command(test_symlink_exists(TestApp.
|
36
|
+
run_vagrant_command(test_symlink_exists(TestApp.current_path.join(file)))
|
44
37
|
end
|
45
38
|
end
|
46
39
|
|
@@ -57,26 +50,26 @@ end
|
|
57
50
|
|
58
51
|
Then(/^the deploy\.rb file is created$/) do
|
59
52
|
file = TestApp.test_app_path.join('config/deploy.rb')
|
60
|
-
expect(File.exists?(file)).to
|
53
|
+
expect(File.exists?(file)).to be true
|
61
54
|
end
|
62
55
|
|
63
56
|
Then(/^the default stage files are created$/) do
|
64
57
|
staging = TestApp.test_app_path.join('config/deploy/staging.rb')
|
65
58
|
production = TestApp.test_app_path.join('config/deploy/production.rb')
|
66
|
-
expect(File.exists?(staging)).to
|
67
|
-
expect(File.exists?(production)).to
|
59
|
+
expect(File.exists?(staging)).to be true
|
60
|
+
expect(File.exists?(production)).to be true
|
68
61
|
end
|
69
62
|
|
70
63
|
Then(/^the tasks folder is created$/) do
|
71
64
|
path = TestApp.test_app_path.join('lib/capistrano/tasks')
|
72
|
-
expect(Dir.exists?(path)).to
|
65
|
+
expect(Dir.exists?(path)).to be true
|
73
66
|
end
|
74
67
|
|
75
68
|
Then(/^the specified stage files are created$/) do
|
76
69
|
qa = TestApp.test_app_path.join('config/deploy/qa.rb')
|
77
70
|
production = TestApp.test_app_path.join('config/deploy/production.rb')
|
78
|
-
expect(File.exists?(qa)).to
|
79
|
-
expect(File.exists?(production)).to
|
71
|
+
expect(File.exists?(qa)).to be true
|
72
|
+
expect(File.exists?(production)).to be true
|
80
73
|
end
|
81
74
|
|
82
75
|
Then(/^it creates the file with the remote_task prerequisite$/) do
|
@@ -90,7 +83,11 @@ Then(/^it will not recreate the file$/) do
|
|
90
83
|
end
|
91
84
|
|
92
85
|
Then(/^the task is successful$/) do
|
93
|
-
expect(@success).to
|
86
|
+
expect(@success).to be true
|
87
|
+
end
|
88
|
+
|
89
|
+
Then(/^the task fails$/) do
|
90
|
+
expect(@success).to be_falsey
|
94
91
|
end
|
95
92
|
|
96
93
|
Then(/^the failure task will run$/) do
|
@@ -100,7 +97,8 @@ end
|
|
100
97
|
|
101
98
|
Then(/^the failure task will not run$/) do
|
102
99
|
failed = TestApp.shared_path.join('failed')
|
103
|
-
|
100
|
+
expect { run_vagrant_command(test_file_exists(failed)) }
|
101
|
+
.to raise_error(VagrantHelpers::VagrantSSHCommandError)
|
104
102
|
end
|
105
103
|
|
106
104
|
When(/^an error is raised$/) do
|