Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rails/FreezeCop errors when time cannot be determined #775

Closed
DerekYu177 opened this issue Sep 14, 2022 · 1 comment
Closed

Rails/FreezeCop errors when time cannot be determined #775

DerekYu177 opened this issue Sep 14, 2022 · 1 comment
Labels
duplicate This issue or pull request already exists

Comments

@DerekYu177
Copy link

A spec of the following format:

let(:now) { Time.now.utc } 
it do
    travel_to(now - 6.seconds) do
       ...
    end

   travel_to(now) do # << line causing rubocop Rails/FreezeCop to crash
     ...
   end
 end

Resulted in an error. Since this was a new feature released in 2.16.0, I felt it was appropriate to raise this here, rather than rubocop/rubocop.

Expected behavior

This test should pass without a problem. Despite being defined within #714 as a fail-case since it includes a travel_to(now), it should be skipped as now might not be known as it is defined elsewhere.

Actual behavior

An error, logs below.

Steps to reproduce the problem

I've been able to reduce the problem down to the above code.
Replacing now with Time.now.utc suffices to solve the problem.

RuboCop version

As defined by rubocop: 1.36.0 (using Parser 3.1.2.1, rubocop-ast 1.21.0, running on ruby 3.1.0) [arm64-darwin21]
Version: rubocop-rails 2.16.0

Rubocop debug logs:

An error occurred while Rails/FreezeTime cop was inspecting /Users/derekyu/spec.rb:24:6.
undefined method `send_type?' for nil:NilClass

          node.send_type? ? zoned_time_now?(node) : time_now?(node)
              ^^^^^^^^^^^
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-rails-2.16.0/lib/rubocop/cop/rails/freeze_time.rb:57:in `current_time?'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-rails-2.16.0/lib/rubocop/cop/rails/freeze_time.rb:47:in `on_send'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:136:in `public_send'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:136:in `block (2 levels) in trigger_restricted_cops'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:160:in `with_cop_error_handling'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:135:in `block in trigger_restricted_cops'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:134:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:134:in `trigger_restricted_cops'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:70:in `on_send'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:153:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `block in on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:157:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `block in on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:157:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `block in on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:157:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_block'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `block in on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:136:in `on_dstr'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:71:in `on_begin'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-ast-1.21.0/lib/rubocop/ast/traversal.rb:20:in `walk'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/commissioner.rb:86:in `investigate'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/team.rb:155:in `investigate_partial'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cop/team.rb:83:in `investigate'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:315:in `inspect_file'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:259:in `block in do_inspection_loop'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:293:in `block in iterate_until_no_changes'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:286:in `loop'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:286:in `iterate_until_no_changes'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:255:in `do_inspection_loop'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:138:in `block in file_offenses'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:163:in `file_offense_cache'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:137:in `file_offenses'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:128:in `process_file'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:109:in `block in each_inspected_file'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:108:in `each'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:108:in `reduce'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:108:in `each_inspected_file'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:94:in `inspect_files'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/runner.rb:47:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/command/execute_runner.rb:26:in `block in execute_runner'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/command/execute_runner.rb:52:in `with_redirect'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/command/execute_runner.rb:25:in `execute_runner'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/command/execute_runner.rb:17:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/command.rb:11:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli/environment.rb:18:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli.rb:72:in `run_command'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli.rb:79:in `execute_runners'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/lib/rubocop/cli.rb:48:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/exe/rubocop:19:in `block in <top (required)>'
/opt/rubies/3.1.0/lib/ruby/3.1.0/benchmark.rb:311:in `realtime'
/Users/derekyu/.gem/ruby/3.1.0/gems/rubocop-1.36.0/exe/rubocop:19:in `<top (required)>'
/Users/derekyu/.gem/ruby/3.1.0/bin/rubocop:25:in `load'
/Users/derekyu/.gem/ruby/3.1.0/bin/rubocop:25:in `<top (required)>'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `load'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `kernel_load'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:23:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli.rb:484:in `exec'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli.rb:31:in `dispatch'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/cli.rb:25:in `start'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/exe/bundle:48:in `block in <top (required)>'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
/Users/derekyu/.gem/ruby/3.1.0/gems/bundler-2.3.4/exe/bundle:36:in `<top (required)>'
/Users/derekyu/.gem/ruby/3.1.0/bin/bundle:25:in `load'
/Users/derekyu/.gem/ruby/3.1.0/bin/bundle:25:in `<main>'
@koic koic added the duplicate This issue or pull request already exists label Sep 14, 2022
@koic
Copy link
Member

koic commented Sep 14, 2022

This issue is a dup with #762. I will bug fix release it in a few days. please wait a little bit.

@koic koic closed this as completed Sep 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

2 participants