capistrano 2.6.0 → 2.6.1.pre
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/CHANGELOG +26 -0
 - data/Gemfile +2 -0
 - data/lib/capistrano.rb +1 -0
 - data/lib/capistrano/cli/help.txt +3 -0
 - data/lib/capistrano/configuration/connections.rb +5 -2
 - data/lib/capistrano/configuration/servers.rb +21 -3
 - data/lib/capistrano/ext/string.rb +5 -0
 - data/lib/capistrano/recipes/deploy.rb +2 -1
 - data/lib/capistrano/recipes/deploy/scm/base.rb +3 -3
 - data/lib/capistrano/recipes/deploy/scm/git.rb +6 -6
 - data/lib/capistrano/recipes/deploy/strategy/remote_cache.rb +3 -3
 - data/lib/capistrano/version.rb +5 -7
 - data/test/configuration/connections_test.rb +18 -0
 - data/test/configuration/servers_test.rb +25 -0
 - data/test/deploy/scm/git_test.rb +4 -4
 - metadata +12 -8
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 2.6.1 / June 25 2011
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            A short maintenance release, Some fixes to the verbose flag inside the Git SCM
         
     | 
| 
      
 4 
     | 
    
         
            +
            as well as another argument for the (internal) `variable()` command, offering
         
     | 
| 
      
 5 
     | 
    
         
            +
            a default. The Git SCM is now verbose by default, but can be disabled by
         
     | 
| 
      
 6 
     | 
    
         
            +
            setting `:scm_verbose` to false.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            There has been an additional method added to string, within the context of the
         
     | 
| 
      
 9 
     | 
    
         
            +
            test suite, I'm always sketchy about adding additional methods to core
         
     | 
| 
      
 10 
     | 
    
         
            +
            classes, but it's a short term fix until I make the time to patch the test
         
     | 
| 
      
 11 
     | 
    
         
            +
            suite not to compare strings literally. The method is `String#compact`, and is
         
     | 
| 
      
 12 
     | 
    
         
            +
            implemented simply as `self.gsub(/\s+/, ' ')`.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Here's the run-down of changes, and their committers, as always - a huge thank
         
     | 
| 
      
 15 
     | 
    
         
            +
            you to the community that continues to drive Capistrano's development.
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            * `deploy:setup` now respects `:group_writable` (Mathew Davies)
         
     | 
| 
      
 18 
     | 
    
         
            +
            * Fixes to `:scm_verbose` for the Git module (defaults to On.) (Daniel Duvall)
         
     | 
| 
      
 19 
     | 
    
         
            +
            * Will now copy hidden files in the project's root into the release
         
     | 
| 
      
 20 
     | 
    
         
            +
            directory (Mark Jaquith)
         
     | 
| 
      
 21 
     | 
    
         
            +
            * Now handles closing already-dead connections in a sane way (does not raise
         
     | 
| 
      
 22 
     | 
    
         
            +
            an exception) (Will Bryant)
         
     | 
| 
      
 23 
     | 
    
         
            +
            * Renamed `Capistrano::VERSION::TINY` to `Capistrano::VERSION::PATCH` (Lee
         
     | 
| 
      
 24 
     | 
    
         
            +
            Hambley)
         
     | 
| 
      
 25 
     | 
    
         
            +
            * Removed the `VERSION` file (Lee Hambley)
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       1 
27 
     | 
    
         
             
            ## 2.6.0 / May 3 2011
         
     | 
| 
       2 
28 
     | 
    
         | 
| 
       3 
29 
     | 
    
         
             
            A rather large release, feature-version bump because of the new
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/lib/capistrano.rb
    CHANGED
    
    
    
        data/lib/capistrano/cli/help.txt
    CHANGED
    
    | 
         @@ -74,5 +74,8 @@ The following options are understood: 
     | 
|
| 
       74 
74 
     | 
    
         
             
              <%= color 'HOSTFILTER', :bold %>
         
     | 
| 
       75 
75 
     | 
    
         
             
            	Execute tasks against this comma-separated list of host, but only if the host has the proper role for the task.
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
      
 77 
     | 
    
         
            +
              <%= color 'HOSTROLEFILTER', :bold %>
         
     | 
| 
      
 78 
     | 
    
         
            +
            	Execute tasks against the hosts in this comma-separated list of roles, but only if the host has the proper role for the task.
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       77 
80 
     | 
    
         
             
              <%= color 'ROLES', :bold %>
         
     | 
| 
       78 
81 
     | 
    
         
             
            	Execute tasks against this comma-separated list of roles.  Hosts which do not have the right roles will be skipped.
         
     | 
| 
         @@ -138,8 +138,11 @@ module Capistrano 
     | 
|
| 
       138 
138 
     | 
    
         
             
                  # Destroys sessions for each server in the list.
         
     | 
| 
       139 
139 
     | 
    
         
             
                  def teardown_connections_to(servers)
         
     | 
| 
       140 
140 
     | 
    
         
             
                    servers.each do |server|
         
     | 
| 
       141 
     | 
    
         
            -
                       
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
      
 141 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 142 
     | 
    
         
            +
                        sessions.delete(server).close
         
     | 
| 
      
 143 
     | 
    
         
            +
                      rescue IOError
         
     | 
| 
      
 144 
     | 
    
         
            +
                        # the TCP connection is already dead
         
     | 
| 
      
 145 
     | 
    
         
            +
                      end
         
     | 
| 
       143 
146 
     | 
    
         
             
                    end
         
     | 
| 
       144 
147 
     | 
    
         
             
                  end
         
     | 
| 
       145 
148 
     | 
    
         | 
| 
         @@ -26,6 +26,9 @@ module Capistrano 
     | 
|
| 
       26 
26 
     | 
    
         
             
                  # Yet additionally, if the HOSTFILTER environment variable is set, it
         
     | 
| 
       27 
27 
     | 
    
         
             
                  # will limit the result to hosts found in that (comma-separated) list.
         
     | 
| 
       28 
28 
     | 
    
         
             
                  #
         
     | 
| 
      
 29 
     | 
    
         
            +
                  # If the HOSTROLEFILTER environment variable is set, it will limit the
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # result to hosts found in that (comma-separated) list of roles 
         
     | 
| 
      
 31 
     | 
    
         
            +
                  #
         
     | 
| 
       29 
32 
     | 
    
         
             
                  # Usage:
         
     | 
| 
       30 
33 
     | 
    
         
             
                  #
         
     | 
| 
       31 
34 
     | 
    
         
             
                  #   # return all known servers
         
     | 
| 
         @@ -39,6 +42,9 @@ module Capistrano 
     | 
|
| 
       39 
42 
     | 
    
         
             
                  #   # returns the given hosts, translated to ServerDefinition objects
         
     | 
| 
       40 
43 
     | 
    
         
             
                  #   servers = find_servers :hosts => "jamis@example.host.com"
         
     | 
| 
       41 
44 
     | 
    
         
             
                  def find_servers(options={})
         
     | 
| 
      
 45 
     | 
    
         
            +
                    return [] if options.key?(:hosts) && (options[:hosts].nil? || [] == options[:hosts])
         
     | 
| 
      
 46 
     | 
    
         
            +
                    return [] if options.key?(:roles) && (options[:roles].nil? || [] == options[:roles])
         
     | 
| 
      
 47 
     | 
    
         
            +
                    
         
     | 
| 
       42 
48 
     | 
    
         
             
                    hosts  = server_list_from(ENV['HOSTS'] || options[:hosts])
         
     | 
| 
       43 
49 
     | 
    
         | 
| 
       44 
50 
     | 
    
         
             
                    if hosts.any?
         
     | 
| 
         @@ -69,9 +75,21 @@ module Capistrano 
     | 
|
| 
       69 
75 
     | 
    
         
             
                protected
         
     | 
| 
       70 
76 
     | 
    
         | 
| 
       71 
77 
     | 
    
         
             
                  def filter_server_list(servers)
         
     | 
| 
       72 
     | 
    
         
            -
                    return servers unless ENV['HOSTFILTER']
         
     | 
| 
       73 
     | 
    
         
            -
                     
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
                    return servers unless ENV['HOSTFILTER'] or ENV['HOSTROLEFILTER']
         
     | 
| 
      
 79 
     | 
    
         
            +
                    if ENV['HOSTFILTER']
         
     | 
| 
      
 80 
     | 
    
         
            +
                      filters = ENV['HOSTFILTER'].split(/,/)
         
     | 
| 
      
 81 
     | 
    
         
            +
                      servers.select { |server| filters.include?(server.host) }
         
     | 
| 
      
 82 
     | 
    
         
            +
                    elsif ENV['HOSTROLEFILTER']
         
     | 
| 
      
 83 
     | 
    
         
            +
                      filters = ENV['HOSTROLEFILTER'].split(/,/).map do |role|
         
     | 
| 
      
 84 
     | 
    
         
            +
                        local_roles = roles[role.to_sym]
         
     | 
| 
      
 85 
     | 
    
         
            +
                        if local_roles.is_a? Array
         
     | 
| 
      
 86 
     | 
    
         
            +
                          roles[role.to_sym]
         
     | 
| 
      
 87 
     | 
    
         
            +
                        else
         
     | 
| 
      
 88 
     | 
    
         
            +
                          roles[role.to_sym].servers
         
     | 
| 
      
 89 
     | 
    
         
            +
                        end
         
     | 
| 
      
 90 
     | 
    
         
            +
                      end.flatten
         
     | 
| 
      
 91 
     | 
    
         
            +
                      servers.select { |server| filters.include?(server) }
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
       75 
93 
     | 
    
         
             
                  end
         
     | 
| 
       76 
94 
     | 
    
         | 
| 
       77 
95 
     | 
    
         
             
                  def server_list_from(hosts)
         
     | 
| 
         @@ -183,7 +183,8 @@ namespace :deploy do 
     | 
|
| 
       183 
183 
     | 
    
         
             
              task :setup, :except => { :no_release => true } do
         
     | 
| 
       184 
184 
     | 
    
         
             
                dirs = [deploy_to, releases_path, shared_path]
         
     | 
| 
       185 
185 
     | 
    
         
             
                dirs += shared_children.map { |d| File.join(shared_path, d) }
         
     | 
| 
       186 
     | 
    
         
            -
                run "#{try_sudo} mkdir -p #{dirs.join(' ')} 
     | 
| 
      
 186 
     | 
    
         
            +
                run "#{try_sudo} mkdir -p #{dirs.join(' ')}"
         
     | 
| 
      
 187 
     | 
    
         
            +
                run "#{try_sudo} chmod g+w #{dirs.join(' ')}" if fetch(:group_writable, true)
         
     | 
| 
       187 
188 
     | 
    
         
             
              end
         
     | 
| 
       188 
189 
     | 
    
         | 
| 
       189 
190 
     | 
    
         
             
              desc <<-DESC
         
     | 
| 
         @@ -161,11 +161,11 @@ module Capistrano 
     | 
|
| 
       161 
161 
     | 
    
         | 
| 
       162 
162 
     | 
    
         
             
                      # A helper for accessing variable values, which takes into
         
     | 
| 
       163 
163 
     | 
    
         
             
                      # consideration the current mode ("normal" vs. "local").
         
     | 
| 
       164 
     | 
    
         
            -
                      def variable(name)
         
     | 
| 
      
 164 
     | 
    
         
            +
                      def variable(name, default = nil)
         
     | 
| 
       165 
165 
     | 
    
         
             
                        if local? && configuration.exists?("local_#{name}".to_sym)
         
     | 
| 
       166 
     | 
    
         
            -
                          return configuration["local_#{name}".to_sym]
         
     | 
| 
      
 166 
     | 
    
         
            +
                          return configuration["local_#{name}".to_sym] || default
         
     | 
| 
       167 
167 
     | 
    
         
             
                        else
         
     | 
| 
       168 
     | 
    
         
            -
                          configuration[name]
         
     | 
| 
      
 168 
     | 
    
         
            +
                          configuration[name] || default
         
     | 
| 
       169 
169 
     | 
    
         
             
                        end
         
     | 
| 
       170 
170 
     | 
    
         
             
                      end
         
     | 
| 
       171 
171 
     | 
    
         | 
| 
         @@ -144,16 +144,16 @@ module Capistrano 
     | 
|
| 
       144 
144 
     | 
    
         | 
| 
       145 
145 
     | 
    
         
             
                      # checkout into a local branch rather than a detached HEAD
         
     | 
| 
       146 
146 
     | 
    
         
             
                      execute << "cd #{destination} && #{git} checkout #{verbose} -b deploy #{revision}"
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
       148 
148 
     | 
    
         
             
                      if variable(:git_enable_submodules)
         
     | 
| 
       149 
149 
     | 
    
         
             
                        execute << "#{git} submodule #{verbose} init"
         
     | 
| 
       150 
150 
     | 
    
         
             
                        execute << "#{git} submodule #{verbose} sync"
         
     | 
| 
       151 
151 
     | 
    
         
             
                        execute << "#{git} submodule #{verbose} update --init --recursive"
         
     | 
| 
       152 
152 
     | 
    
         
             
                      end
         
     | 
| 
       153 
153 
     | 
    
         | 
| 
       154 
     | 
    
         
            -
                      execute.join(" && ")
         
     | 
| 
      
 154 
     | 
    
         
            +
                      execute.join(" && ").compact
         
     | 
| 
       155 
155 
     | 
    
         
             
                    end
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
       157 
157 
     | 
    
         
             
                    # An expensive export. Performs a checkout as above, then
         
     | 
| 
       158 
158 
     | 
    
         
             
                    # removes the repo.
         
     | 
| 
       159 
159 
     | 
    
         
             
                    def export(revision, destination)
         
     | 
| 
         @@ -199,8 +199,8 @@ module Capistrano 
     | 
|
| 
       199 
199 
     | 
    
         | 
| 
       200 
200 
     | 
    
         
             
                    # Returns a string of diffs between two revisions
         
     | 
| 
       201 
201 
     | 
    
         
             
                    def diff(from, to=nil)
         
     | 
| 
       202 
     | 
    
         
            -
                       
     | 
| 
       203 
     | 
    
         
            -
                      scm :diff, from
         
     | 
| 
      
 202 
     | 
    
         
            +
                      return scm :diff, from unless to
         
     | 
| 
      
 203 
     | 
    
         
            +
                      scm :diff, "#{from}..#{to}"
         
     | 
| 
       204 
204 
     | 
    
         
             
                    end
         
     | 
| 
       205 
205 
     | 
    
         | 
| 
       206 
206 
     | 
    
         
             
                    # Returns a log of changes between the two revisions (inclusive).
         
     | 
| 
         @@ -266,7 +266,7 @@ module Capistrano 
     | 
|
| 
       266 
266 
     | 
    
         
             
                      # If verbose output is requested, return nil, otherwise return the
         
     | 
| 
       267 
267 
     | 
    
         
             
                      # command-line switch for "quiet" ("-q").
         
     | 
| 
       268 
268 
     | 
    
         
             
                      def verbose
         
     | 
| 
       269 
     | 
    
         
            -
                        variable(:scm_verbose) ?  
     | 
| 
      
 269 
     | 
    
         
            +
                        variable(:scm_verbose, true) ? "-q" : nil
         
     | 
| 
       270 
270 
     | 
    
         
             
                      end
         
     | 
| 
       271 
271 
     | 
    
         
             
                  end
         
     | 
| 
       272 
272 
     | 
    
         
             
                end
         
     | 
| 
         @@ -39,14 +39,14 @@ module Capistrano 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                      def copy_repository_cache
         
     | 
| 
       41 
41 
     | 
    
         
             
                        logger.trace "copying the cached version to #{configuration[:release_path]}"
         
     | 
| 
       42 
     | 
    
         
            -
                        if copy_exclude.empty? 
     | 
| 
      
 42 
     | 
    
         
            +
                        if copy_exclude.empty?
         
     | 
| 
       43 
43 
     | 
    
         
             
                          run "cp -RPp #{repository_cache} #{configuration[:release_path]} && #{mark}"
         
     | 
| 
       44 
44 
     | 
    
         
             
                        else
         
     | 
| 
       45 
45 
     | 
    
         
             
                          exclusions = copy_exclude.map { |e| "--exclude=\"#{e}\"" }.join(' ')
         
     | 
| 
       46 
     | 
    
         
            -
                          run "rsync -lrpt #{exclusions} #{repository_cache} 
     | 
| 
      
 46 
     | 
    
         
            +
                          run "rsync -lrpt #{exclusions} #{repository_cache}/ #{configuration[:release_path]} && #{mark}"
         
     | 
| 
       47 
47 
     | 
    
         
             
                        end
         
     | 
| 
       48 
48 
     | 
    
         
             
                      end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       50 
50 
     | 
    
         
             
                      def copy_exclude
         
     | 
| 
       51 
51 
     | 
    
         
             
                        @copy_exclude ||= Array(configuration.fetch(:copy_exclude, []))
         
     | 
| 
       52 
52 
     | 
    
         
             
                      end
         
     | 
    
        data/lib/capistrano/version.rb
    CHANGED
    
    | 
         @@ -3,16 +3,14 @@ module Capistrano 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
              class Version
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                STRING = CURRENT.to_s
         
     | 
| 
      
 6 
     | 
    
         
            +
                MAJOR = 2
         
     | 
| 
      
 7 
     | 
    
         
            +
                MINOR = 6
         
     | 
| 
      
 8 
     | 
    
         
            +
                PATCH = 1
         
     | 
| 
       11 
9 
     | 
    
         | 
| 
       12 
10 
     | 
    
         
             
                def self.to_s
         
     | 
| 
       13 
     | 
    
         
            -
                   
     | 
| 
      
 11 
     | 
    
         
            +
                  "#{MAJOR}.#{MINOR}.#{PATCH}.pre"
         
     | 
| 
       14 
12 
     | 
    
         
             
                end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       16 
14 
     | 
    
         
             
              end
         
     | 
| 
       17 
15 
     | 
    
         | 
| 
       18 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -355,6 +355,24 @@ class ConfigurationConnectionsTest < Test::Unit::TestCase 
     | 
|
| 
       355 
355 
     | 
    
         
             
                assert_equal 2, block_called
         
     | 
| 
       356 
356 
     | 
    
         
             
              end
         
     | 
| 
       357 
357 
     | 
    
         | 
| 
      
 358 
     | 
    
         
            +
              def test_execute_on_servers_should_cope_with_already_dropped_connections_when_attempting_to_close_them
         
     | 
| 
      
 359 
     | 
    
         
            +
                cap1 = server("cap1")
         
     | 
| 
      
 360 
     | 
    
         
            +
                cap2 = server("cap2")
         
     | 
| 
      
 361 
     | 
    
         
            +
                connection1 = mock()
         
     | 
| 
      
 362 
     | 
    
         
            +
                connection2 = mock()
         
     | 
| 
      
 363 
     | 
    
         
            +
                connection3 = mock()
         
     | 
| 
      
 364 
     | 
    
         
            +
                connection4 = mock()
         
     | 
| 
      
 365 
     | 
    
         
            +
                connection1.expects(:close).raises(IOError)
         
     | 
| 
      
 366 
     | 
    
         
            +
                connection2.expects(:close)
         
     | 
| 
      
 367 
     | 
    
         
            +
                connection3.expects(:close)
         
     | 
| 
      
 368 
     | 
    
         
            +
                connection4.expects(:close)
         
     | 
| 
      
 369 
     | 
    
         
            +
                @config.current_task = mock_task(:max_hosts => 1)
         
     | 
| 
      
 370 
     | 
    
         
            +
                @config.expects(:find_servers_for_task).times(2).with(@config.current_task, {}).returns([cap1, cap2])
         
     | 
| 
      
 371 
     | 
    
         
            +
                Capistrano::SSH.expects(:connect).times(4).returns(connection1).then.returns(connection2).then.returns(connection3).then.returns(connection4)
         
     | 
| 
      
 372 
     | 
    
         
            +
                @config.execute_on_servers {}
         
     | 
| 
      
 373 
     | 
    
         
            +
                @config.execute_on_servers {}
         
     | 
| 
      
 374 
     | 
    
         
            +
              end
         
     | 
| 
      
 375 
     | 
    
         
            +
              
         
     | 
| 
       358 
376 
     | 
    
         
             
              def test_connect_should_honor_once_option
         
     | 
| 
       359 
377 
     | 
    
         
             
                assert @config.sessions.empty?
         
     | 
| 
       360 
378 
     | 
    
         
             
                @config.current_task = mock_task
         
     | 
| 
         @@ -131,6 +131,14 @@ class ConfigurationServersTest < Test::Unit::TestCase 
     | 
|
| 
       131 
131 
     | 
    
         
             
                ENV.delete('HOSTFILTER')
         
     | 
| 
       132 
132 
     | 
    
         
             
              end
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
      
 134 
     | 
    
         
            +
              def test_task_with_hostrolefilter_environment_variable_should_apply_only_to_those_hosts
         
     | 
| 
      
 135 
     | 
    
         
            +
                ENV['HOSTROLEFILTER'] = "web"
         
     | 
| 
      
 136 
     | 
    
         
            +
                task = new_task(:testing)
         
     | 
| 
      
 137 
     | 
    
         
            +
                assert_equal %w(web1 web2).sort, @config.find_servers_for_task(task).map { |s| s.host }.sort
         
     | 
| 
      
 138 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 139 
     | 
    
         
            +
                ENV.delete('HOSTROLEFILTER')
         
     | 
| 
      
 140 
     | 
    
         
            +
              end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
       134 
142 
     | 
    
         
             
              def test_task_with_only_should_apply_only_to_matching_tasks
         
     | 
| 
       135 
143 
     | 
    
         
             
                task = new_task(:testing, @config, :roles => :app, :only => { :primary => true })
         
     | 
| 
       136 
144 
     | 
    
         
             
                assert_equal %w(app1), @config.find_servers_for_task(task).map { |s| s.host }
         
     | 
| 
         @@ -155,4 +163,21 @@ class ConfigurationServersTest < Test::Unit::TestCase 
     | 
|
| 
       155 
163 
     | 
    
         
             
                assert_equal %w(app1 app2 app3), @config.find_servers(:roles => lambda { :app }).map { |s| s.host }.sort
         
     | 
| 
       156 
164 
     | 
    
         
             
                assert_equal %w(app2 file), @config.find_servers(:roles => lambda { [:report, :file] }).map { |s| s.host }.sort
         
     | 
| 
       157 
165 
     | 
    
         
             
              end
         
     | 
| 
      
 166 
     | 
    
         
            +
              
         
     | 
| 
      
 167 
     | 
    
         
            +
              def test_find_servers_with_hosts_nil_or_empty
         
     | 
| 
      
 168 
     | 
    
         
            +
                assert_equal [], @config.find_servers(:hosts => nil)
         
     | 
| 
      
 169 
     | 
    
         
            +
                assert_equal [], @config.find_servers(:hosts => [])
         
     | 
| 
      
 170 
     | 
    
         
            +
                result = @config.find_servers(:hosts => @config.find_servers(:roles => :report)[0])
         
     | 
| 
      
 171 
     | 
    
         
            +
                assert_equal 1, result.size
         
     | 
| 
      
 172 
     | 
    
         
            +
                result = @config.find_servers(:hosts => "app1")
         
     | 
| 
      
 173 
     | 
    
         
            +
                assert_equal 1, result.size
         
     | 
| 
      
 174 
     | 
    
         
            +
              end
         
     | 
| 
      
 175 
     | 
    
         
            +
              
         
     | 
| 
      
 176 
     | 
    
         
            +
              def test_find_servers_with_rolees_nil_or_empty
         
     | 
| 
      
 177 
     | 
    
         
            +
                assert_equal [], @config.find_servers(:roles => nil)
         
     | 
| 
      
 178 
     | 
    
         
            +
                assert_equal [], @config.find_servers(:roles => [])
         
     | 
| 
      
 179 
     | 
    
         
            +
                result = @config.find_servers(:roles => :report)
         
     | 
| 
      
 180 
     | 
    
         
            +
                assert_equal 1, result.size
         
     | 
| 
      
 181 
     | 
    
         
            +
              end
         
     | 
| 
      
 182 
     | 
    
         
            +
              
         
     | 
| 
       158 
183 
     | 
    
         
             
            end
         
     | 
    
        data/test/deploy/scm/git_test.rb
    CHANGED
    
    | 
         @@ -31,7 +31,7 @@ class DeploySCMGitTest < Test::Unit::TestCase 
     | 
|
| 
       31 
31 
     | 
    
         
             
                @config[:repository] = "git@somehost.com:project.git"
         
     | 
| 
       32 
32 
     | 
    
         
             
                dest = "/var/www"
         
     | 
| 
       33 
33 
     | 
    
         
             
                rev = 'c2d9e79'
         
     | 
| 
       34 
     | 
    
         
            -
                assert_equal "git clone -q 
     | 
| 
      
 34 
     | 
    
         
            +
                assert_equal "git clone -q git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev}", @source.checkout(rev, dest)
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                # With :scm_command
         
     | 
| 
       37 
37 
     | 
    
         
             
                git = "/opt/local/bin/git"
         
     | 
| 
         @@ -43,12 +43,12 @@ class DeploySCMGitTest < Test::Unit::TestCase 
     | 
|
| 
       43 
43 
     | 
    
         
             
                assert_equal "#{git} clone -q git@somehost.com:project.git /var/www && cd /var/www && #{git} checkout -q -b deploy #{rev} && #{git} submodule -q init && #{git} submodule -q sync && #{git} submodule -q update --init --recursive", @source.checkout(rev, dest).gsub(/\s+/, ' ')
         
     | 
| 
       44 
44 
     | 
    
         
             
              end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
              def  
     | 
| 
      
 46 
     | 
    
         
            +
              def test_checkout_with_verbose_should_use_q_switch
         
     | 
| 
       47 
47 
     | 
    
         
             
                @config[:repository] = "git@somehost.com:project.git"
         
     | 
| 
       48 
48 
     | 
    
         
             
                @config[:scm_verbose] = true
         
     | 
| 
       49 
49 
     | 
    
         
             
                dest = "/var/www"
         
     | 
| 
       50 
50 
     | 
    
         
             
                rev = 'c2d9e79'
         
     | 
| 
       51 
     | 
    
         
            -
                assert_equal "git clone 
     | 
| 
      
 51 
     | 
    
         
            +
                assert_equal "git clone -q git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev}", @source.checkout(rev, dest)
         
     | 
| 
       52 
52 
     | 
    
         
             
              end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
              def test_diff
         
     | 
| 
         @@ -68,7 +68,7 @@ class DeploySCMGitTest < Test::Unit::TestCase 
     | 
|
| 
       68 
68 
     | 
    
         
             
                end
         
     | 
| 
       69 
69 
     | 
    
         
             
                assert_equal "d11006102c07c94e5d54dd0ee63dca825c93ed61", revision
         
     | 
| 
       70 
70 
     | 
    
         
             
              end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
       72 
72 
     | 
    
         
             
              def test_query_revision_has_whitespace
         
     | 
| 
       73 
73 
     | 
    
         
             
                revision = @source.query_revision('HEAD') do |o|
         
     | 
| 
       74 
74 
     | 
    
         
             
                  assert_equal "git ls-remote . HEAD", o
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: capistrano
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 961915984
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 6
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 2
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 6
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
               
     | 
| 
      
 9 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 10 
     | 
    
         
            +
              - pre
         
     | 
| 
      
 11 
     | 
    
         
            +
              version: 2.6.1.pre
         
     | 
| 
       11 
12 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
13 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
14 
     | 
    
         
             
            - Jamis Buck
         
     | 
| 
         @@ -155,6 +156,7 @@ files: 
     | 
|
| 
       155 
156 
     | 
    
         
             
            - lib/capistrano/configuration/servers.rb
         
     | 
| 
       156 
157 
     | 
    
         
             
            - lib/capistrano/configuration/variables.rb
         
     | 
| 
       157 
158 
     | 
    
         
             
            - lib/capistrano/errors.rb
         
     | 
| 
      
 159 
     | 
    
         
            +
            - lib/capistrano/ext/string.rb
         
     | 
| 
       158 
160 
     | 
    
         
             
            - lib/capistrano/extensions.rb
         
     | 
| 
       159 
161 
     | 
    
         
             
            - lib/capistrano/logger.rb
         
     | 
| 
       160 
162 
     | 
    
         
             
            - lib/capistrano/processable.rb
         
     | 
| 
         @@ -254,12 +256,14 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       254 
256 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       255 
257 
     | 
    
         
             
              none: false
         
     | 
| 
       256 
258 
     | 
    
         
             
              requirements: 
         
     | 
| 
       257 
     | 
    
         
            -
              - - " 
     | 
| 
      
 259 
     | 
    
         
            +
              - - ">"
         
     | 
| 
       258 
260 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       259 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 261 
     | 
    
         
            +
                  hash: 25
         
     | 
| 
       260 
262 
     | 
    
         
             
                  segments: 
         
     | 
| 
       261 
     | 
    
         
            -
                  -  
     | 
| 
       262 
     | 
    
         
            -
                   
     | 
| 
      
 263 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 264 
     | 
    
         
            +
                  - 3
         
     | 
| 
      
 265 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 266 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
       263 
267 
     | 
    
         
             
            requirements: []
         
     | 
| 
       264 
268 
     | 
    
         | 
| 
       265 
269 
     | 
    
         
             
            rubyforge_project: 
         
     |