Skip to content

Commit 53df420

Browse files
committed
Pick up changes from .rubocop-todo.yml
1 parent 0318a74 commit 53df420

File tree

3 files changed

+51
-17
lines changed

3 files changed

+51
-17
lines changed

lib/ruby_lsp/requests/support/rubocop_runner.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ class ConfigurationError < StandardError; end
6161
"RuboCop::Formatter::BaseFormatter", # Suppress any output by using the base formatter
6262
] #: Array[String]
6363

64+
CONFIG_FILES = [
65+
".rubocop.yml",
66+
".rubocop",
67+
".rubocop_todo.yml",
68+
] #: Array[String]
69+
6470
#: Array[::RuboCop::Cop::Offense]
6571
attr_reader :offenses
6672

lib/ruby_lsp/server.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ def run_initialize(message)
310310
@current_request_id,
311311
Interface::RelativePattern.new(
312312
base_uri: @global_state.workspace_uri.to_s,
313-
pattern: "{.rubocop.yml,.rubocop}",
313+
pattern: "{#{Requests::Support::RuboCopRunner::CONFIG_FILES.join(",")}}",
314314
),
315315
registration_id: "rubocop-watcher",
316316
))
@@ -1058,7 +1058,7 @@ def workspace_did_change_watched_files(message)
10581058

10591059
file_name = File.basename(file_path)
10601060

1061-
if file_name == ".rubocop.yml" || file_name == ".rubocop"
1061+
if defined?(Requests::Support::RuboCopRunner) && Requests::Support::RuboCopRunner::CONFIG_FILES.include?(file_name)
10621062
handle_rubocop_config_change(uri)
10631063
end
10641064
end

test/server_test.rb

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,8 +1123,6 @@ def test_edits_outside_of_declarations_do_not_trigger_indexing
11231123
end
11241124

11251125
def test_rubocop_config_changes_trigger_workspace_diagnostic_refresh
1126-
uri = URI::Generic.from_path(path: File.join(Dir.pwd, ".rubocop.yml"))
1127-
11281126
@server.process_message({
11291127
id: 1,
11301128
method: "initialize",
@@ -1140,20 +1138,10 @@ def test_rubocop_config_changes_trigger_workspace_diagnostic_refresh
11401138
})
11411139

11421140
@server.global_state.index.index_all(uris: [])
1143-
@server.process_message({
1144-
method: "workspace/didChangeWatchedFiles",
1145-
params: {
1146-
changes: [
1147-
{
1148-
uri: uri,
1149-
type: RubyLsp::Constant::FileChangeType::CHANGED,
1150-
},
1151-
],
1152-
},
1153-
})
11541141

1155-
request = find_message(RubyLsp::Request)
1156-
assert_equal("workspace/diagnostic/refresh", request.method)
1142+
RubyLsp::Requests::Support::RuboCopRunner::CONFIG_FILES.each do |config_file|
1143+
assert_rubocop_config_triggers_diagnostic_refresh_without_setup(config_file)
1144+
end
11571145
end
11581146

11591147
def test_compose_bundle_creates_file_to_skip_next_compose
@@ -1712,6 +1700,46 @@ def deactivate; end
17121700
end
17131701
end
17141702

1703+
def assert_rubocop_config_triggers_diagnostic_refresh(config_file)
1704+
uri = URI::Generic.from_path(path: File.join(Dir.pwd, config_file))
1705+
1706+
@server.process_message({
1707+
id: 1,
1708+
method: "initialize",
1709+
params: {
1710+
initializationOptions: {},
1711+
capabilities: {
1712+
general: {
1713+
positionEncodings: ["utf-8"],
1714+
},
1715+
workspace: { diagnostics: { refreshSupport: true } },
1716+
},
1717+
},
1718+
})
1719+
1720+
@server.global_state.index.index_all(uris: [])
1721+
assert_rubocop_config_triggers_diagnostic_refresh_without_setup(config_file)
1722+
end
1723+
1724+
def assert_rubocop_config_triggers_diagnostic_refresh_without_setup(config_file)
1725+
uri = URI::Generic.from_path(path: File.join(Dir.pwd, config_file))
1726+
1727+
@server.process_message({
1728+
method: "workspace/didChangeWatchedFiles",
1729+
params: {
1730+
changes: [
1731+
{
1732+
uri: uri,
1733+
type: RubyLsp::Constant::FileChangeType::CHANGED,
1734+
},
1735+
],
1736+
},
1737+
})
1738+
1739+
request = find_message(RubyLsp::Request)
1740+
assert_equal("workspace/diagnostic/refresh", request.method)
1741+
end
1742+
17151743
#: (Class desired_class, ?String? desired_method, ?id: Integer?) -> untyped
17161744
def find_message(desired_class, desired_method = nil, id: nil)
17171745
message = @server.pop_response

0 commit comments

Comments
 (0)