Hello community,

here is the log from the commit of package rubygem-capistrano for 
openSUSE:Factory checked in at 2017-09-12 19:57:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-capistrano (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-capistrano.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-capistrano"

Tue Sep 12 19:57:22 2017 rev:29 rq:523575 version:3.9.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-capistrano/rubygem-capistrano.changes    
2017-07-10 11:07:09.466215150 +0200
+++ 
/work/SRC/openSUSE:Factory/.rubygem-capistrano.new/rubygem-capistrano.changes   
    2017-09-12 19:57:25.225988838 +0200
@@ -1,0 +2,12 @@
+Mon Sep 11 12:36:19 UTC 2017 - [email protected]
+
+- updated to version 3.9.1
+ see installed CHANGELOG.md
+
+-------------------------------------------------------------------
+Thu Aug  3 19:06:52 UTC 2017 - [email protected]
+
+- updated to version 3.9.0
+ see installed CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  capistrano-3.8.2.gem

New:
----
  capistrano-3.9.1.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-capistrano.spec ++++++
--- /var/tmp/diff_new_pack.PlwuS6/_old  2017-09-12 19:57:25.881896612 +0200
+++ /var/tmp/diff_new_pack.PlwuS6/_new  2017-09-12 19:57:25.889895487 +0200
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-capistrano
-Version:        3.8.2
+Version:        3.9.1
 Release:        0
 %define mod_name capistrano
 %define mod_full_name %{mod_name}-%{version}
@@ -34,7 +34,7 @@
 BuildRequires:  ruby-macros >= 5
 BuildRequires:  update-alternatives
 Url:            http://capistranorb.com/
-Source:         http://rubygems.org/gems/%{mod_full_name}.gem
+Source:         https://rubygems.org/gems/%{mod_full_name}.gem
 Source1:        gem2rpm.yml
 Summary:        Capistrano - Welcome to easy deployment with Ruby over SSH
 License:        MIT

++++++ capistrano-3.8.2.gem -> capistrano-3.9.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2017-06-16 17:17:46.000000000 +0200
+++ new/.travis.yml     2017-09-08 18:36:50.000000000 +0200
@@ -1,5 +1,6 @@
 language: ruby
 rvm:
+  - 2.4.1
   - 2.3.1
   - 2.2
   - 2.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2017-06-16 17:17:46.000000000 +0200
+++ new/CHANGELOG.md    2017-09-08 18:36:50.000000000 +0200
@@ -16,10 +16,38 @@
 
 ## master
 
-https://github.com/capistrano/capistrano/compare/v3.8.1...HEAD
+https://github.com/capistrano/capistrano/compare/v3.9.1...HEAD
 
 * Your contribution here!
 
+## `3.9.1` (2017-09-08)
+
+https://github.com/capistrano/capistrano/compare/v3.9.0...v3.9.1
+
+### Breaking changes:
+
+* None
+
+### Fixes:
+
+* [#1912](https://github.com/capistrano/capistrano/pull/1912): Fixed an issue 
where questions posed by `ask` were not printed on certain platforms - 
[@kminiatures](https://github.com/kminiatures)
+
+## `3.9.0` (2017-07-28)
+
+https://github.com/capistrano/capistrano/compare/v3.8.2...v3.9.0
+
+### Breaking changes:
+
+* None
+
+### New features:
+
+* [#1911](https://github.com/capistrano/capistrano/pull/1911): Add 
Capistrano::DSL#invoke! for repetitive tasks
+
+### Fixes:
+
+* [#1899](https://github.com/capistrano/capistrano/pull/1899): Updated 
`deploy:cleanup` to continue rotating the releases and skip the invalid 
directory names instead of skipping the whole rotation of releases. The warning 
message has changed slightly due to the change of behavior.
+
 ## `3.8.2` (2017-06-16)
 
 https://github.com/capistrano/capistrano/compare/v3.8.1...v3.8.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CONTRIBUTING.md new/CONTRIBUTING.md
--- old/CONTRIBUTING.md 2017-06-16 17:17:46.000000000 +0200
+++ new/CONTRIBUTING.md 2017-09-08 18:36:50.000000000 +0200
@@ -41,6 +41,8 @@
 
 If you are an experienced Ruby programmer, take a few minutes to get the 
Capistrano test suite running (see [DEVELOPMENT.md][]), and do what you can to 
get a test case written that fails. *This will be a huge help!*
 
+If you think you may have discovered a security vulnerability in Capistrano, 
do not open a GitHub issue. Instead, please send a report to 
<[email protected]>.
+
 ## Requesting new features or improvements
 
 Capistrano continues to improve thanks to people like you! Feel free to open a 
GitHub issue for any or all of these ideas:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DEVELOPMENT.md new/DEVELOPMENT.md
--- old/DEVELOPMENT.md  2017-06-16 17:17:46.000000000 +0200
+++ new/DEVELOPMENT.md  2017-09-08 18:36:50.000000000 +0200
@@ -28,11 +28,10 @@
 
 Make sure to install:
 
-* [Bundler](https://bundler.io/) 1.10.5 (see note)
+* [Bundler](https://bundler.io/)
 * [Vagrant](https://www.vagrantup.com/)
 * [VirtualBox](https://www.virtualbox.org/wiki/Downloads) (or another 
[Vagrant-supported](https://docs.vagrantup.com/v2/getting-started/providers.html)
 VM host)
 
-*Note: As of this writing (December 2015), Vagrant does not work with Bundler 
> 1.10.5. If you have multiple versions of Bundler installed, use the special 
underscore command-line argument to force a compatible version, like this: 
`bundle _1.10.5_ exec rake features`.*
 
 ### Running tests
 
@@ -45,7 +44,7 @@
 # Run the RSpec suite
 $ bundle exec rake spec
 
-# Run the Cucumber suite (requires Bundler 1.10.5)
+# Run the Cucumber suite
 $ bundle exec rake features
 
 # Run the Cucumber suite and leave the VM running (faster for subsequent runs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2017-06-16 17:17:46.000000000 +0200
+++ new/README.md       2017-09-08 18:36:50.000000000 +0200
@@ -103,7 +103,7 @@
 
 ``` ruby
 group :development do
-  gem "capistrano", "~> 3.8"
+  gem "capistrano", "~> 3.9"
 end
 ```
 
@@ -186,6 +186,8 @@
 
 GitHub issues are for bug reports and feature requests. Please refer to the 
[CONTRIBUTING](CONTRIBUTING.md) document for guidelines on submitting GitHub 
issues.
 
+If you think you may have discovered a security vulnerability in Capistrano, 
do not open a GitHub issue. Instead, please send a report to 
<[email protected]>.
+
 ## How to contribute
 
 Contributions to Capistrano, in the form of code, documentation or idea, are 
gladly accepted. Read the [DEVELOPMENT](DEVELOPMENT.md) document to learn how 
to hack on Capistrano's code, run the tests, and contribute your first pull 
request.
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/deploy.feature new/features/deploy.feature
--- old/features/deploy.feature 2017-06-16 17:17:46.000000000 +0200
+++ new/features/deploy.feature 2017-09-08 18:36:50.000000000 +0200
@@ -52,3 +52,21 @@
     When I run cap "deploy:symlink:release"
     Then the current directory will be a symlink to the release
 
+  Scenario: Cleanup
+    Given config stage file has line "set :keep_releases, 3"
+    And 5 valid existing releases
+    And an invalid release named "new"
+    When I run cap "deploy:cleanup"
+    Then 3 valid releases are kept
+    And the invalid "new" release is ignored
+
+  Scenario: Rolling Back
+    Given I make 2 deployments
+    When I run cap "deploy:rollback"
+    Then the current symlink points to the previous release
+
+  Scenario: Rolling Back to a specific release
+    Given I make 3 deployments
+    When I rollback to a specific release
+    Then the current symlink points to that specific release
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/step_definitions/assertions.rb 
new/features/step_definitions/assertions.rb
--- old/features/step_definitions/assertions.rb 2017-06-16 17:17:46.000000000 
+0200
+++ new/features/step_definitions/assertions.rb 2017-09-08 18:36:50.000000000 
+0200
@@ -6,7 +6,9 @@
 
 Then(/^git wrapper permissions are 0700$/) do
   permissions_test = %Q([ $(stat -c "%a" 
#{TestApp.git_wrapper_path.shellescape}) == "700" ])
-  expect(vagrant_cli_command("ssh -c #{permissions_test.shellescape}")).to 
be_success
+  _stdout, _stderr, status = vagrant_cli_command("ssh -c 
#{permissions_test.shellescape}")
+
+  expect(status).to be_success
 end
 
 Then(/^the shared path is created$/) do
@@ -17,6 +19,18 @@
   run_vagrant_command(test_dir_exists(TestApp.releases_path))
 end
 
+Then(/^(\d+) valid releases are kept/) do |num|
+  test = %Q([ $(ls -g #{TestApp.releases_path} | grep -E '[0-9]{14}' | wc -l) 
== "#{num}" ])
+  _, _, status = vagrant_cli_command("ssh -c #{test.shellescape}")
+  expect(status).to be_success
+end
+
+Then(/^the invalid (.+) release is ignored$/) do |filename|
+  test = "ls -g #{TestApp.releases_path} | grep #{filename}"
+  _, _, status = vagrant_cli_command("ssh -c #{test.shellescape}")
+  expect(status).to be_success
+end
+
 Then(/^directories in :linked_dirs are created in shared$/) do
   TestApp.linked_dirs.each do |dir|
     run_vagrant_command(test_dir_exists(TestApp.shared_path.join(dir)))
@@ -124,3 +138,15 @@
 Then(/doesn't contain "([^"]*)" in the output/) do |expected|
   expect(@output).not_to include(expected)
 end
+
+Then(/the current symlink points to the previous release/) do
+  previous_release_path = @release_paths[-2]
+
+  run_vagrant_command(symlinked?(TestApp.current_path, previous_release_path))
+end
+
+Then(/^the current symlink points to that specific release$/) do
+  specific_release_path = TestApp.releases_path.join(@rollback_release)
+
+  run_vagrant_command(symlinked?(TestApp.current_path, specific_release_path))
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/step_definitions/cap_commands.rb 
new/features/step_definitions/cap_commands.rb
--- old/features/step_definitions/cap_commands.rb       2017-06-16 
17:17:46.000000000 +0200
+++ new/features/step_definitions/cap_commands.rb       2017-09-08 
18:36:50.000000000 +0200
@@ -13,3 +13,9 @@
 When(/^I run "(.*?)"$/) do |command|
   @success, @output = TestApp.run(command)
 end
+
+When(/^I rollback to a specific release$/) do
+  @rollback_release = @release_paths.first.split("/").last
+
+  step %Q{I run cap "deploy:rollback ROLLBACK_RELEASE=#{@rollback_release}"}
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/step_definitions/setup.rb 
new/features/step_definitions/setup.rb
--- old/features/step_definitions/setup.rb      2017-06-16 17:17:46.000000000 
+0200
+++ new/features/step_definitions/setup.rb      2017-09-08 18:36:50.000000000 
+0200
@@ -21,10 +21,16 @@
 
 Given(/^file "(.*?)" exists in shared path$/) do |file|
   file_shared_path = TestApp.shared_path.join(file)
-  run_vagrant_command("mkdir -p #{TestApp.shared_path}")
+  run_vagrant_command("mkdir -p #{file_shared_path.dirname}")
   run_vagrant_command("touch #{file_shared_path}")
 end
 
+Given(/^all linked files exists in shared path$/) do
+  TestApp.linked_files.each do |linked_file|
+    step %Q{file "#{linked_file}" exists in shared path}
+  end
+end
+
 Given(/^file "(.*?)" does not exist in shared path$/) do |file|
   file_shared_path = TestApp.shared_path.join(file)
   run_vagrant_command("mkdir -p #{TestApp.shared_path}")
@@ -60,3 +66,27 @@
 Given(/^a stage file named (.+)$/) do |filename|
   TestApp.write_local_stage_file(filename)
 end
+
+Given(/^I make (\d+) deployments$/) do |count|
+  step "all linked files exists in shared path"
+
+  @release_paths = (1..count.to_i).map do
+    TestApp.cap("deploy")
+    stdout, _stderr = run_vagrant_command("readlink #{TestApp.current_path}")
+
+    stdout.strip
+  end
+end
+
+Given(/^(\d+) valid existing releases$/) do |num|
+  a_day = 86_400 # in seconds
+  offset = -(a_day * num.to_i)
+  num.to_i.times do
+    run_vagrant_command("mkdir -p 
#{TestApp.release_path(TestApp.timestamp(offset))}")
+    offset += a_day
+  end
+end
+
+Given(/^an invalid release named "(.+)"$/) do |filename|
+  run_vagrant_command("mkdir -p #{TestApp.release_path(filename)}")
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/support/remote_command_helpers.rb 
new/features/support/remote_command_helpers.rb
--- old/features/support/remote_command_helpers.rb      2017-06-16 
17:17:46.000000000 +0200
+++ new/features/support/remote_command_helpers.rb      2017-09-08 
18:36:50.000000000 +0200
@@ -15,6 +15,10 @@
     %Q{[ -#{type} "#{path}" ]}
   end
 
+  def symlinked?(symlink_path, target_path)
+    "[ #{symlink_path} -ef #{target_path} ]"
+  end
+
   def safely_remove_file(_path)
     run_vagrant_command("rm #{test_file}")
   rescue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/features/support/vagrant_helpers.rb 
new/features/support/vagrant_helpers.rb
--- old/features/support/vagrant_helpers.rb     2017-06-16 17:17:46.000000000 
+0200
+++ new/features/support/vagrant_helpers.rb     2017-09-08 18:36:50.000000000 
+0200
@@ -1,4 +1,4 @@
-require "English"
+require "open3"
 
 module VagrantHelpers
   extend self
@@ -16,17 +16,18 @@
 
   def vagrant_cli_command(command)
     puts "[vagrant] #{command}"
-    Dir.chdir(VAGRANT_ROOT) do
-      `#{VAGRANT_BIN} #{command} 2>&1`.split("\n").each do |line|
-        puts "[vagrant] #{line}"
-      end
+    stdout, stderr, status = Dir.chdir(VAGRANT_ROOT) do
+      Open3.capture3("#{VAGRANT_BIN} #{command}")
     end
-    $CHILD_STATUS
+
+    (stdout + stderr).each_line { |line| puts "[vagrant] #{line}" }
+
+    [stdout, stderr, status]
   end
 
   def run_vagrant_command(command)
-    status = vagrant_cli_command("ssh -c #{command.inspect}")
-    return true if status.success?
+    stdout, stderr, status = vagrant_cli_command("ssh -c #{command.inspect}")
+    return [stdout, stderr] if status.success?
     raise VagrantSSHCommandError, status
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/capistrano/configuration/question.rb 
new/lib/capistrano/configuration/question.rb
--- old/lib/capistrano/configuration/question.rb        2017-06-16 
17:17:46.000000000 +0200
+++ new/lib/capistrano/configuration/question.rb        2017-09-08 
18:36:50.000000000 +0200
@@ -18,6 +18,7 @@
 
       def ask_question
         $stdout.print question
+        $stdout.flush
       end
 
       def value_or_default
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/capistrano/dsl.rb new/lib/capistrano/dsl.rb
--- old/lib/capistrano/dsl.rb   2017-06-16 17:17:46.000000000 +0200
+++ new/lib/capistrano/dsl.rb   2017-09-08 18:36:50.000000000 +0200
@@ -19,13 +19,19 @@
         colors = SSHKit::Color.new($stderr)
         $stderr.puts colors.colorize("Skipping task `#{task_name}'.", :yellow)
         $stderr.puts "Capistrano tasks may only be invoked once. Since task 
`#{task}' was previously invoked, invoke(\"#{task_name}\") at #{file}:#{line} 
will be skipped."
-        $stderr.puts "If you really meant to run this task again, first call 
Rake::Task[\"#{task_name}\"].reenable"
+        $stderr.puts "If you really meant to run this task again, use 
invoke!(\"#{task_name}\")"
         $stderr.puts colors.colorize("THIS BEHAVIOR MAY CHANGE IN A FUTURE 
VERSION OF CAPISTRANO. Please join the conversation here if this affects you.", 
:red)
         $stderr.puts 
colors.colorize("https://github.com/capistrano/capistrano/issues/1686";, :red)
       end
       task.invoke(*args)
     end
 
+    def invoke!(task_name, *args)
+      task = Rake::Task[task_name]
+      task.reenable
+      task.invoke(*args)
+    end
+
     def t(key, options={})
       I18n.t(key, options.merge(scope: :capistrano))
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/capistrano/i18n.rb new/lib/capistrano/i18n.rb
--- old/lib/capistrano/i18n.rb  2017-06-16 17:17:46.000000000 +0200
+++ new/lib/capistrano/i18n.rb  2017-09-08 18:36:50.000000000 +0200
@@ -13,7 +13,7 @@
   question: "Please enter %{key}: ",
   question_default: "Please enter %{key} (%{default_value}): ",
   keeping_releases: "Keeping %{keep_releases} of %{releases} deployed releases 
on %{host}",
-  skip_cleanup: "Skipping cleanup of old releases on %{host}; unexpected 
foldername found (should be timestamp)",
+  skip_cleanup: "Skipping cleanup of invalid releases on %{host}; unexpected 
foldername found (should be timestamp)",
   no_old_releases: "No old releases (keeping newest %{keep_releases}) on 
%{host}",
   linked_file_does_not_exist: "linked file %{file} does not exist on %{host}",
   cannot_rollback: "There are no older releases to rollback to",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/capistrano/tasks/deploy.rake 
new/lib/capistrano/tasks/deploy.rake
--- old/lib/capistrano/tasks/deploy.rake        2017-06-16 17:17:46.000000000 
+0200
+++ new/lib/capistrano/tasks/deploy.rake        2017-09-08 18:36:50.000000000 
+0200
@@ -149,11 +149,13 @@
   task :cleanup do
     on release_roles :all do |host|
       releases = capture(:ls, "-x", releases_path).split
-      if !(releases.all? { |e| /^\d{14}$/ =~ e })
-        warn t(:skip_cleanup, host: host.to_s)
-      elsif releases.count >= fetch(:keep_releases)
-        info t(:keeping_releases, host: host.to_s, keep_releases: 
fetch(:keep_releases), releases: releases.count)
-        directories = (releases - releases.last(fetch(:keep_releases)))
+      valid, invalid = releases.partition { |e| /^\d{14}$/ =~ e }
+
+      warn t(:skip_cleanup, host: host.to_s) if invalid.any?
+
+      if valid.count >= fetch(:keep_releases)
+        info t(:keeping_releases, host: host.to_s, keep_releases: 
fetch(:keep_releases), releases: valid.count)
+        directories = (valid - valid.last(fetch(:keep_releases)))
         if directories.any?
           directories_str = directories.map do |release|
             releases_path.join(release)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/capistrano/version.rb 
new/lib/capistrano/version.rb
--- old/lib/capistrano/version.rb       2017-06-16 17:17:46.000000000 +0200
+++ new/lib/capistrano/version.rb       2017-09-08 18:36:50.000000000 +0200
@@ -1,3 +1,3 @@
 module Capistrano
-  VERSION = "3.8.2".freeze
+  VERSION = "3.9.1".freeze
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2017-06-16 17:17:46.000000000 +0200
+++ new/metadata        2017-09-08 18:36:50.000000000 +0200
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: capistrano
 version: !ruby/object:Gem::Version
-  version: 3.8.2
+  version: 3.9.1
 platform: ruby
 authors:
 - Tom Clements
@@ -9,7 +9,7 @@
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2017-06-16 00:00:00.000000000 Z
+date: 2017-09-08 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: airbrussh
@@ -285,7 +285,7 @@
       version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.6.11
+rubygems_version: 2.6.13
 signing_key: 
 specification_version: 4
 summary: Capistrano - Welcome to easy deployment with Ruby over SSH
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/lib/capistrano/dsl_spec.rb 
new/spec/lib/capistrano/dsl_spec.rb
--- old/spec/lib/capistrano/dsl_spec.rb 2017-06-16 17:17:46.000000000 +0200
+++ new/spec/lib/capistrano/dsl_spec.rb 2017-09-08 18:36:50.000000000 +0200
@@ -71,13 +71,54 @@
     end
 
     describe "#invoke" do
-      it "will print a message on stderr, when reinvoking task" do
-        Rake::Task.define_task("some_task")
+      context "reinvoking" do
+        it "will not reenable invoking task" do
+          counter = 0
 
-        dsl.invoke("some_task")
-        expect do
-          dsl.invoke("some_task")
-        end.to output(/.*Capistrano tasks may only be invoked 
once.*/).to_stderr
+          Rake::Task.define_task("A") do
+            counter += 1
+          end
+
+          expect do
+            dsl.invoke("A")
+            dsl.invoke("A")
+          end.to change { counter }.by(1)
+        end
+
+        it "will print a message on stderr" do
+          Rake::Task.define_task("B")
+
+          expect do
+            dsl.invoke("B")
+            dsl.invoke("B")
+          end.to output(/If you really meant to run this task again, use 
invoke!/).to_stderr
+        end
+      end
+    end
+
+    describe "#invoke!" do
+      context "reinvoking" do
+        it "will reenable invoking task" do
+          counter = 0
+
+          Rake::Task.define_task("C") do
+            counter += 1
+          end
+
+          expect do
+            dsl.invoke!("C")
+            dsl.invoke!("C")
+          end.to change { counter }.by(2)
+        end
+
+        it "will not print a message on stderr" do
+          Rake::Task.define_task("D")
+
+          expect do
+            dsl.invoke!("D")
+            dsl.invoke!("D")
+          end.to_not output(/If you really meant to run this task again, use 
invoke!/).to_stderr
+        end
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/support/test_app.rb new/spec/support/test_app.rb
--- old/spec/support/test_app.rb        2017-06-16 17:17:46.000000000 +0200
+++ new/spec/support/test_app.rb        2017-09-08 18:36:50.000000000 +0200
@@ -132,12 +132,12 @@
     deploy_to.join("releases")
   end
 
-  def release_path
-    releases_path.join(timestamp)
+  def release_path(t=timestamp)
+    releases_path.join(t)
   end
 
-  def timestamp
-    Time.now.utc.strftime("%Y%m%d%H%M%S")
+  def timestamp(offset=0)
+    (Time.now.utc + offset).strftime("%Y%m%d%H%M%S")
   end
 
   def repo_path


Reply via email to