about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYamagishi Kazutoshi <ykzts@desire.sh>2018-05-06 17:55:50 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-05-06 10:55:50 +0200
commit8c35d163a5c50eeb30220141036dac0c5dad295c (patch)
treea0555622017e7cdc9cb981b6ca8b9e2a539f7eb9
parent39efc6d533bc3616ef3e199ab83d7753f07afb4c (diff)
Port travis_retry for CI (#7379)
* Port travis_retry for CI

* Add license
-rw-r--r--.circleci/config.yml4
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock3
-rwxr-xr-xbin/retry46
-rw-r--r--spec/spec_helper.rb8
5 files changed, 48 insertions, 14 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 70d03f6b9..fc9c7e22b 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -90,7 +90,7 @@ aliases:
             command: ./bin/rails parallel:create parallel:load_schema parallel:prepare
         - run:
             name: Run Tests
-            command: bundle exec parallel_test ./spec/ --group-by filesize --type rspec
+            command: ./bin/retry bundle exec parallel_test ./spec/ --group-by filesize --type rspec
 
 jobs:
   install:
@@ -150,7 +150,7 @@ jobs:
       - image: circleci/node:8.11.1-stretch
     steps:
       - *attach_workspace
-      - run: yarn test:jest
+      - run: ./bin/retry yarn test:jest
 
   check-i18n:
     <<: *defaults
diff --git a/Gemfile b/Gemfile
index 98718f87d..2beac94d2 100644
--- a/Gemfile
+++ b/Gemfile
@@ -112,7 +112,6 @@ group :test do
   gem 'microformats', '~> 4.0'
   gem 'rails-controller-testing', '~> 1.0'
   gem 'rspec-sidekiq', '~> 3.0'
-  gem 'rspec-retry', '~> 0.5', require: false
   gem 'simplecov', '~> 0.16', require: false
   gem 'webmock', '~> 3.3'
   gem 'parallel_tests', '~> 2.21'
diff --git a/Gemfile.lock b/Gemfile.lock
index f4be9bf9c..6a579d53b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -501,8 +501,6 @@ GEM
       rspec-expectations (~> 3.7.0)
       rspec-mocks (~> 3.7.0)
       rspec-support (~> 3.7.0)
-    rspec-retry (0.5.7)
-      rspec-core (> 3.3)
     rspec-sidekiq (3.0.3)
       rspec-core (~> 3.0, >= 3.0.0)
       sidekiq (>= 2.4.0)
@@ -726,7 +724,6 @@ DEPENDENCIES
   redis-rails (~> 5.0)
   rqrcode (~> 0.10)
   rspec-rails (~> 3.7)
-  rspec-retry (~> 0.5)
   rspec-sidekiq (~> 3.0)
   rubocop (~> 0.55)
   ruby-progressbar (~> 1.4)
diff --git a/bin/retry b/bin/retry
new file mode 100755
index 000000000..419ece62a
--- /dev/null
+++ b/bin/retry
@@ -0,0 +1,46 @@
+#!/bin/bash
+# https://github.com/travis-ci/travis-build/blob/cbe49ea239ab37b9b38b5b44d287b7ec7a108c16/lib/travis/build/templates/header.sh#L243-L260
+#
+# MIT LICENSE
+#
+# Copyright (c) 2016 Travis CI GmbH <contact@travis-ci.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+retry() {
+  local result=0
+  local count=1
+
+  while [ $count -le 3 ]; do
+    if [ $result -ne 0 ]; then
+      echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2
+    fi
+
+    "$@" && { result=0 && break; } || result=$?
+    count=$(($count + 1))
+    sleep 1
+  done
+
+  if [ $count -gt 3 ]; then
+    echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" >&2
+  fi
+
+  return $result
+}
+
+retry $@
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 903032937..a0466dd4b 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,4 +1,3 @@
-#require 'rspec/retry'
 require 'simplecov'
 
 GC.disable
@@ -12,9 +11,6 @@ end
 gc_counter = -1
 
 RSpec.configure do |config|
-  #config.verbose_retry = true
-  #config.display_try_failure_messages = true
-
   config.expect_with :rspec do |expectations|
     expectations.include_chain_clauses_in_custom_matcher_descriptions = true
   end
@@ -29,10 +25,6 @@ RSpec.configure do |config|
     end
   end
 
-  #config.around :each do |ex|
-  #  ex.run_with_retry retry: 3
-  #end
-
   config.before :suite do
     Chewy.strategy(:bypass)
   end