diff options
author | Fabio Pitino <fpitino@gitlab.com> | 2019-05-07 07:52:53 +0100 |
---|---|---|
committer | Fabio Pitino <fpitino@gitlab.com> | 2019-05-07 08:07:16 +0100 |
commit | c75b8ad4dadfa8f9676e0339e06408af3281f512 (patch) | |
tree | 34b287af35682e19db655af9b98eab1b56f18b2c | |
parent | 673ea5d2ac50e17a1839d0db83641e6851422f88 (diff) | |
download | gitlab-ce-c75b8ad4dadfa8f9676e0339e06408af3281f512.tar.gz |
Remove workaround by upgrading Fugit gem
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/58241
* Upgrade Fugit gem to 1.2.1 which recognizes cron expressions
for invalid days
* Reverted previously implemented workaround
* Leave test case which previously exposed the bug
-rw-r--r-- | Gemfile | 2 | ||||
-rw-r--r-- | Gemfile.lock | 8 | ||||
-rw-r--r-- | lib/gitlab/ci/cron_parser.rb | 10 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/cron_parser_spec.rb | 7 |
4 files changed, 6 insertions, 21 deletions
@@ -166,7 +166,7 @@ gem 'redis-namespace', '~> 1.6.0' gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch' # Cron Parser -gem 'fugit', '~> 1.1' +gem 'fugit', '~> 1.2.1' # HTTP requests gem 'httparty', '~> 0.16.4' diff --git a/Gemfile.lock b/Gemfile.lock index 9b1a036030a..9522f8fa9e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -190,7 +190,7 @@ GEM equalizer (0.0.11) erubi (1.8.0) escape_utils (1.2.1) - et-orbi (1.1.7) + et-orbi (1.2.1) tzinfo eventmachine (1.2.7) excon (0.62.0) @@ -264,8 +264,8 @@ GEM foreman (0.84.0) thor (~> 0.19.1) formatador (0.2.5) - fugit (1.1.9) - et-orbi (~> 1.1, >= 1.1.7) + fugit (1.2.1) + et-orbi (~> 1.1, >= 1.1.8) raabro (~> 1.1) fuubar (2.2.0) rspec-core (~> 3.0) @@ -1056,7 +1056,7 @@ DEPENDENCIES fog-rackspace (~> 0.1.1) font-awesome-rails (~> 4.7) foreman (~> 0.84.0) - fugit (~> 1.1) + fugit (~> 1.2.1) fuubar (~> 2.2.0) gemojione (~> 3.3) gettext (~> 3.2.2) diff --git a/lib/gitlab/ci/cron_parser.rb b/lib/gitlab/ci/cron_parser.rb index ae524654b7d..94f4a4e36c9 100644 --- a/lib/gitlab/ci/cron_parser.rb +++ b/lib/gitlab/ci/cron_parser.rb @@ -13,7 +13,7 @@ module Gitlab def next_time_from(time) @cron_line ||= try_parse_cron(@cron, @cron_timezone) - find_next_time(time) if @cron_line.present? + @cron_line.next_time(time).utc.in_time_zone(Time.zone) if @cron_line.present? end def cron_valid? @@ -49,14 +49,6 @@ module Gitlab def try_parse_cron(cron, cron_timezone) Fugit::Cron.parse("#{cron} #{cron_timezone}") end - - def find_next_time(time) - @cron_line.next_time(time).utc.in_time_zone(Time.zone) - rescue RuntimeError => error - raise error unless error.message =~ /too many loops/ - # Fugit::Cron raises a RuntimeError if :next_time does not find the next schedule - # given an invalid pattern - E.g. try_parse_cron('0 12 31 2 *') - end end end end diff --git a/spec/lib/gitlab/ci/cron_parser_spec.rb b/spec/lib/gitlab/ci/cron_parser_spec.rb index a228334d53e..491e3fba9d9 100644 --- a/spec/lib/gitlab/ci/cron_parser_spec.rb +++ b/spec/lib/gitlab/ci/cron_parser_spec.rb @@ -181,13 +181,6 @@ describe Gitlab::Ci::CronParser do it { expect(subject).to be_nil } end - - context 'when cron is scheduled to a non existent day' do - let(:cron) { '0 12 31 2 *' } - let(:cron_timezone) { 'UTC' } - - it { expect(subject).to be_nil } - end end describe '#cron_valid?' do |