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

An Error Occured while VariableForce Cop was inspecting #8139

Closed
StephenGrable1 opened this issue Jun 11, 2020 · 1 comment
Closed

An Error Occured while VariableForce Cop was inspecting #8139

StephenGrable1 opened this issue Jun 11, 2020 · 1 comment

Comments

@StephenGrable1
Copy link

Expected behavior

Rubocop should parse my file with no errors.

Actual behavior

I get an error pointing to a possible rubocop bug while VariableForce cop was inspecting my file.

Here is the very verbose stack trace for my particular file that errors out after running rubocop -d:

An error occurred while VariableForce cop was inspecting /Users/me/Desktop/repo/spec/path/to/file/file.rb.
uninitialized constant DidYouMean::SpellChecker
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/name_similarity.rb:18:in `find_similar_names'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/name_similarity.rb:9:in `find_similar_name'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:97:in `similar_name_message'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:77:in `message_specification'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:68:in `message_for_useless_assignment'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:52:in `block in check_for_unused_assignments'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:49:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:49:in `check_for_unused_assignments'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:42:in `block in after_leaving_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:41:in `each_value'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/lint/useless_assignment.rb:41:in `after_leaving_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/force.rb:33:in `block in run_hook'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/force.rb:30:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/force.rb:30:in `run_hook'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:394:in `block (2 levels) in <class:VariableForce>'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force/variable_table.rb:17:in `invoke_hook'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force/variable_table.rb:36:in `pop_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:96:in `inspect_variables_in_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:292:in `process_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:86:in `process_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:103:in `block in process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:187:in `block in each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:100:in `process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:87:in `process_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:103:in `block in process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:187:in `block in each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:100:in `process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:95:in `inspect_variables_in_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:292:in `process_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:86:in `process_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:103:in `block in process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:187:in `block in each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:100:in `process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:95:in `inspect_variables_in_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:292:in `process_scope'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:86:in `process_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:103:in `block in process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:187:in `block in each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-ast-0.0.3/lib/rubocop/ast/node.rb:184:in `each_child_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:100:in `process_children'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:87:in `process_node'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/variable_force.rb:80:in `investigate'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:87:in `block (2 levels) in invoke_custom_processing'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:115:in `with_cop_error_handling'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:86:in `block in invoke_custom_processing'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:83:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:83:in `invoke_custom_processing'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/commissioner.rb:42:in `investigate'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/team.rb:141:in `investigate'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/team.rb:129:in `offenses'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cop/team.rb:67:in `inspect_file'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:299:in `inspect_file'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:247:in `block in do_inspection_loop'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:279:in `block in iterate_until_no_changes'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:272:in `loop'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:272:in `iterate_until_no_changes'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:243:in `do_inspection_loop'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:122:in `block in file_offenses'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:146:in `file_offense_cache'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:120:in `file_offenses'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:111:in `process_file'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:90:in `block in each_inspected_file'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:89:in `each'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:89:in `reduce'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:89:in `each_inspected_file'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:78:in `inspect_files'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/runner.rb:39:in `run'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli/command/execute_runner.rb:21:in `execute_runner'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli/command/execute_runner.rb:13:in `run'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli/command.rb:10:in `run'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli/environment.rb:17:in `run'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli.rb:65:in `run_command'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli.rb:72:in `execute_runners'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/lib/rubocop/cli.rb:41:in `run'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/exe/rubocop:13:in `block in <top (required)>'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
/Users/me/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rubocop-0.85.0/exe/rubocop:12:in `<top (required)>'

This prints at the bottom of the rubocop -d output

1 error occurred:
An error occurred while VariableForce cop was inspecting /Users/me/Desktop/repo/path/to/file/file.rb.
Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/rubocop-hq/rubocop/issues

Mention the following information in the issue report:
0.85.0 (using Parser 2.7.1.3, rubocop-ast 0.0.3, running on ruby 2.6.6 x86_64-darwin19)

Here is the spec file that is causing the parsing error:

# typed: false
# frozen_string_literal: true

require 'features_helper'

RSpec.feature 'Retailer' do
  feature 'Filtering leads', :db, type: :feature do
    include_context :rodauth

    let!(:store) do
      create :store, :fiddlesticks, retailer_id: retailer.id
    end

    before do
      retailer_account
    end

    scenario '3 filters are present by default and all leads show', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      page.find('.multi-select__multi-value', text: 'Phone Call')
      page.find('.multi-select__multi-value', text: 'Chat')
      page.find('.multi-select__multi-value', text: 'Form')
      expect(page).to have_selector('.leads__card', count: 3)
    end

    scenario 'filter show and hide', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      expect(page).to have_selector('.lead-filter__container', count: 1)
      page.find('.lead-filter__menu-close').click
      expect(page).to have_selector('.lead-filter__container', count: 0)
    end

    scenario 'filters only phone calls leads (removing chat and form filters)', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      expect(page).to have_selector('.leads__card', count: 3)

      chat_filter = page.find('.multi-select__multi-value', text: 'Chat')
      form_filter = page.find('.multi-select__multi-value', text: 'Form')

      chat_filter.find('.multi-select__multi-value__remove').click
      form_filter.find('.multi-select__multi-value__remove').click

      page.find('.lead-filter__apply').click

      expect(page).to have_selector('.leads__card', count: 1)
    end

    scenario 'filter the leads by form only (removing the chat and phone call filters)', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      chat_one_filter = page.find('.multi-select__multi-value', text: 'Chat')
      phones_filter = page.find('.multi-select__multi-value', text: 'Phone Call')

      chat_one_filter.find('.multi-select__multi-value__remove').click
      phones_filter.find('.multi-select__multi-value__remove').click

      page.find('.lead-filter__apply').click

      expect(page).to have_selector('.leads__card', count: 1)
    end

    scenario 'filters the leads by chat and form only (removing phone call)', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      expect(page).to have_selector('.leads__card', count: 3)

      phones_filter = page.find('.multi-select__multi-value', text: 'Phone Call')

      phones_filter.find('.multi-select__multi-value__remove').click

      page.find('.lead-filter__apply').click

      expect(page).to have_selector('.leads__card', count: 2)
    end

    scenario 'clears filters after selected and show all leads', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path
      page.find('.leads-filter__toggle').click

      expect(page).to have_selector('.leads__card', count: 3)

      phone_filter = page.find('.multi-select__multi-value', text: 'Phone Call')
      phone_filter.find('.multi-select__multi-value__remove').click

      page.find('.lead-filter__apply').click

      expect(page).to have_selector('.leads__card', count: 2)
      page.find('.lead-filter__clear').click
      expect(page).to have_selector('.leads__card', count: 3)
      expect(page).to have_selector('.multi-select__multi-value', count: 0)
    end

    scenario 'refresh page with filters params filters for only chat', :js do
      create_three_leads

      login
      visit ::Container['retailer.routes'].leads_path

      stringify_filters = '%7B"leadCategories"%3A%5B%7B"value"%3A"CHAT"%2C"label"%3A"Chat"%7D%5D%7D'
      visit ::Container['retailer.routes'].leads_path(filters: stringify_filters)

      wait(10).for do
        page.find('.leads-filter__toggle').click
        page.find('.multi-select__multi-value', text: 'Chat')
        expect(page).to have_selector('.leads__card', count: 1)
      end
    end

    def create_three_leads
      attrs = Hash[store_id: store.id, retailer_id: store.retailer_id]

      create :lead, :variant_inquiry, **attrs
      store_inquiry = create :store_inquiry, contact_method: 'floorforce_drift'
      lead_created = create :lead, store_inquiry_id: store_inquiry.id, **attrs
      create :lead, :phone_call_with_recording, **attrs
    end
  end
end
@bbatsov
Copy link
Collaborator

bbatsov commented Jun 11, 2020

That's a duplicate of #7979.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants