Skip to content

Commit 4d6714f

Browse files
committed
Remove unnecessary nocolorize flag
Setting `TERM=dumb` is enough to disable colorization in those tests. Mocked app should also load console helpers Move console method extension to IRBConsole's constructor Test IRB autocompletion control without mutating ENV Control IRB autocompletion without mutating ENV Correct local variable name
1 parent 30cb7a6 commit 4d6714f

File tree

3 files changed

+40
-60
lines changed

3 files changed

+40
-60
lines changed

railties/lib/rails/commands/console/console_command.rb

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@ class IRBConsole
1616
def initialize
1717
require "irb"
1818
require "irb/completion"
19-
IRB::WorkSpace.prepend(BacktraceCleaner)
2019

21-
if !Rails.env.local?
22-
# Use env var here so users can override them with env var too
23-
ENV["IRB_USE_AUTOCOMPLETE"] ||= "false"
24-
end
20+
IRB::WorkSpace.prepend(BacktraceCleaner)
21+
IRB::ExtendCommandBundle.include(Rails::ConsoleMethods)
2522
end
2623

2724
def name
@@ -31,6 +28,10 @@ def name
3128
def start
3229
IRB.setup(nil)
3330

31+
if !Rails.env.local? && !ENV.key?("IRB_USE_AUTOCOMPLETE")
32+
IRB.conf[:USE_AUTOCOMPLETE] = false
33+
end
34+
3435
env = colorized_env
3536

3637
IRB.conf[:PROMPT][:RAILS_PROMPT] = {
@@ -108,9 +109,6 @@ def start
108109
puts "Loading #{Rails.env} environment (Rails #{Rails.version})"
109110
end
110111

111-
if defined?(console::ExtendCommandBundle)
112-
console::ExtendCommandBundle.include(Rails::ConsoleMethods)
113-
end
114112
console.start
115113
end
116114
end

railties/test/application/console_test.rb

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def spawn_console(options, wait_for_prompt: true, env: {})
140140
end
141141

142142
def test_sandbox
143-
options = "--sandbox -- --nocolorize"
143+
options = "--sandbox"
144144
spawn_console(options)
145145

146146
write_prompt "Post.count", "=> 0"
@@ -172,7 +172,7 @@ def test_sandbox_by_default
172172
config.sandbox_by_default = true
173173
RUBY
174174

175-
options = "-e production -- --verbose --nocolorize"
175+
options = "-e production -- --verbose"
176176
spawn_console(options)
177177

178178
write_prompt "puts Rails.application.sandbox", "puts Rails.application.sandbox\r\ntrue"
@@ -184,7 +184,7 @@ def test_sandbox_by_default_with_no_sandbox
184184
config.sandbox_by_default = true
185185
RUBY
186186

187-
options = "-e production --no-sandbox -- --verbose --nocolorize"
187+
options = "-e production --no-sandbox -- --verbose"
188188
spawn_console(options)
189189

190190
write_prompt "puts Rails.application.sandbox", "puts Rails.application.sandbox\r\nfalse"
@@ -196,15 +196,15 @@ def test_sandbox_by_default_with_development_environment
196196
config.sandbox_by_default = true
197197
RUBY
198198

199-
options = "-- --verbose --nocolorize"
199+
options = "-- --verbose"
200200
spawn_console(options)
201201

202202
write_prompt "puts Rails.application.sandbox", "puts Rails.application.sandbox\r\nfalse"
203203
@primary.puts "quit"
204204
end
205205

206206
def test_environment_option_and_irb_option
207-
options = "-e test -- --verbose --nocolorize"
207+
options = "-e test -- --verbose"
208208
spawn_console(options)
209209

210210
write_prompt "a = 1", "a = 1"
@@ -213,21 +213,21 @@ def test_environment_option_and_irb_option
213213
end
214214

215215
def test_production_console_prompt
216-
options = "-e production -- --nocolorize"
216+
options = "-e production"
217217
spawn_console(options)
218218

219219
write_prompt "123", "prod:001> 123"
220220
end
221221

222222
def test_development_console_prompt
223-
options = "-e development -- --nocolorize"
223+
options = "-e development"
224224
spawn_console(options)
225225

226226
write_prompt "123", "dev:001> 123"
227227
end
228228

229229
def test_test_console_prompt
230-
options = "-e test -- --nocolorize"
230+
options = "-e test"
231231
spawn_console(options)
232232

233233
write_prompt "123", "test:001> 123"
@@ -240,11 +240,32 @@ def test_console_respects_user_defined_prompt_mode
240240
RUBY
241241
irbrc.close
242242

243-
options = "-e test -- --nocolorize"
243+
options = "-e test"
244244
spawn_console(options, env: { "IRBRC" => irbrc.path })
245245

246246
write_prompt "123", ">> 123"
247247
ensure
248248
File.unlink(irbrc)
249249
end
250+
251+
def test_console_disables_IRB_auto_completion_in_non_local
252+
options = "-e production -- --verbose"
253+
spawn_console(options)
254+
255+
write_prompt "IRB.conf[:USE_AUTOCOMPLETE]", "IRB.conf[:USE_AUTOCOMPLETE]\r\n=> false"
256+
end
257+
258+
def test_console_accepts_override_on_IRB_auto_completion_flag
259+
options = "-e production -- --verbose"
260+
spawn_console(options, env: { "IRB_USE_AUTOCOMPLETE" => "true" })
261+
262+
write_prompt "IRB.conf[:USE_AUTOCOMPLETE]", "IRB.conf[:USE_AUTOCOMPLETE]\r\n=> true"
263+
end
264+
265+
def test_console_doesnt_disable_IRB_auto_completion_in_local
266+
options = "-e development -- --verbose"
267+
spawn_console(options)
268+
269+
write_prompt "IRB.conf[:USE_AUTOCOMPLETE]", "IRB.conf[:USE_AUTOCOMPLETE]\r\n=> true"
270+
end
250271
end

railties/test/commands/console_test.rb

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -58,47 +58,6 @@ def test_console_defaults_to_IRB
5858
assert_equal "IRB", Rails::Console.new(app).console.name
5959
end
6060

61-
def test_console_disables_IRB_auto_completion_in_non_local
62-
original_use_autocomplete = ENV["IRB_USE_AUTOCOMPLETE"]
63-
ENV["IRB_USE_AUTOCOMPLETE"] = nil
64-
65-
with_rack_env "production" do
66-
app = build_app(nil)
67-
assert_not_predicate Rails.env, :local?
68-
assert_equal "IRB", Rails::Console.new(app).console.name
69-
assert_equal "false", ENV["IRB_USE_AUTOCOMPLETE"]
70-
end
71-
ensure
72-
ENV["IRB_USE_AUTOCOMPLETE"] = original_use_autocomplete
73-
end
74-
75-
def test_console_accepts_override_on_IRB_auto_completion_flag
76-
original_use_autocomplete = ENV["IRB_USE_AUTOCOMPLETE"]
77-
ENV["IRB_USE_AUTOCOMPLETE"] = "true"
78-
79-
with_rack_env "production" do
80-
app = build_app(nil)
81-
assert_equal "IRB", Rails::Console.new(app).console.name
82-
assert_equal "true", ENV["IRB_USE_AUTOCOMPLETE"]
83-
end
84-
ensure
85-
ENV["IRB_USE_AUTOCOMPLETE"] = original_use_autocomplete
86-
end
87-
88-
def test_console_doesnt_disable_IRB_auto_completion_in_local
89-
original_use_autocomplete = ENV["IRB_USE_AUTOCOMPLETE"]
90-
ENV["IRB_USE_AUTOCOMPLETE"] = nil
91-
92-
with_rails_env nil do
93-
app = build_app(nil)
94-
assert_predicate Rails.env, :local?
95-
assert_equal "IRB", Rails::Console.new(app).console.name
96-
assert_nil ENV["IRB_USE_AUTOCOMPLETE"]
97-
end
98-
ensure
99-
ENV["IRB_USE_AUTOCOMPLETE"] = original_use_autocomplete
100-
end
101-
10261
def test_prompt_env_colorization
10362
irb_console = Rails::Console::IRBConsole.new
10463
red = "\e[31m"
@@ -186,7 +145,7 @@ def app
186145
end
187146

188147
def build_app(console)
189-
mocked_console = Class.new do
148+
mocked_app = Class.new do
190149
attr_accessor :sandbox
191150
attr_reader :console, :disable_sandbox, :sandbox_by_default
192151

@@ -199,9 +158,11 @@ def config
199158
end
200159

201160
def load_console
161+
require "rails/console/app"
162+
require "rails/console/helpers"
202163
end
203164
end
204-
mocked_console.new(console)
165+
mocked_app.new(console)
205166
end
206167

207168
def parse_arguments(args)

0 commit comments

Comments
 (0)