• blackst0ne's avatar
    [Rails5] Fix TZInfo::InvalidTimezoneIdentifier exception · b26a3f91
    blackst0ne authored
    In Rails 4.2.10 the `ActiveSupport::TimeZone.find_tzinfo(timezone_name)`
    method calls `TZInfo::TimezoneProxy.new(timezone_name)` which returns
    `timezone_name` if it is invalid.
    
    But in Rails 5.0 the `ActiveSupport::TimeZone.find_tzinfo(timezone_name)`
    method now calls the `TZInfo::Timezone.new(timezone_name)` method which
    throws the `TZInfo::InvalidTimezoneIdentifier: Invalid identifier`
    exception if `timezone_name` is invalid.
    
    This commit adds the rescue block to return timezone name if the
    exception is raised.
    
    Also this change fixes the error:
    
    ```
      1) Ci::PipelineSchedule validations does not allow invalid cron patters
         Failure/Error: ActiveSupport::TimeZone.find_tzinfo(timezone).name
    
         TZInfo::InvalidTimezoneIdentifier:
           Invalid identifier
         # ./lib/gitlab/ci/cron_parser.rb:28:in `timezone_name'
         # ./lib/gitlab/ci/cron_parser.rb:9:in `initialize'
         # ./app/validators/cron_validator.rb:6:in `new'
         # ./app/validators/cron_validator.rb:6:in `validate_each'
         # ./spec/models/ci/pipeline_schedule_spec.rb:26:in `block (3 levels) in <top (required)>'
    ```
    b26a3f91
cron_parser.rb 1.88 KB