From 8c35d163a5c50eeb30220141036dac0c5dad295c Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 6 May 2018 17:55:50 +0900 Subject: [PATCH] Port travis_retry for CI (#7379) * Port travis_retry for CI * Add license --- .circleci/config.yml | 4 ++-- Gemfile | 1 - Gemfile.lock | 3 --- bin/retry | 46 ++++++++++++++++++++++++++++++++++++++++++++ spec/spec_helper.rb | 8 -------- 5 files changed, 48 insertions(+), 14 deletions(-) create mode 100755 bin/retry 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 +# +# 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