fc375d63c4
https://buildkite.com/rails/rails-nightly/builds/191#018dc3d1-902c-4b01-a82c-b662ebdbe567/1182-1188 Increasing timeout value from 10 to 100 for assert_output method addresses these failures. - Ruby built with debug options that takes more than 20 seconds and gets failed Here, the Ruby is built with these options: ``` cppflags="-DENABLE_PATH_CHECK=0 -DRUBY_DEBUG=1" optflags="-O3 -fno-inline" ``` ```ruby $ ruby -v ruby 3.4.0dev (2024-02-20T11:52:09Z master c22cb960cf) [x86_64-linux] $ time bin/test test/application/dbconsole_test.rb Run options: --seed 5685 F Failure: ApplicationTests::DBConsoleTest#test_use_value_defined_in_environment_file_in_database_yml [test/console_helpers.rb:19]: "sqlite>" expected, but got: . Expected "" to include "sqlite>". bin/test test/application/dbconsole_test.rb:21 F Failure: ApplicationTests::DBConsoleTest#test_respect_environment_option [test/console_helpers.rb:19]: "sqlite>" expected, but got: . Expected "" to include "sqlite>". bin/test test/application/dbconsole_test.rb:43 Finished in 10.105668s, 0.1979 runs/s, 0.3958 assertions/s. 2 runs, 4 assertions, 2 failures, 0 errors, 0 skips real 0m21.031s user 0m8.665s sys 0m2.286s $ ``` - Ruby built without debug options that finishes within second. ```ruby $ ruby -v ruby 3.4.0dev (2024-02-20T11:52:09Z master c22cb960cf) [x86_64-linux] $ time bin/test test/application/dbconsole_test.rb Run options: --seed 1479 .. Finished in 5.463076s, 0.3661 runs/s, 1.0983 assertions/s. 2 runs, 6 assertions, 0 failures, 0 errors, 0 skips real 0m9.942s user 0m2.288s sys 0m2.173s $ ```
75 lines
1.8 KiB
Ruby
75 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "isolation/abstract_unit"
|
|
require "console_helpers"
|
|
|
|
module ApplicationTests
|
|
class DBConsoleTest < ActiveSupport::TestCase
|
|
include ActiveSupport::Testing::Isolation
|
|
include ConsoleHelpers
|
|
|
|
def setup
|
|
skip "PTY unavailable" unless available_pty?
|
|
|
|
build_app
|
|
end
|
|
|
|
def teardown
|
|
teardown_app
|
|
end
|
|
|
|
def test_use_value_defined_in_environment_file_in_database_yml
|
|
app_file "config/database.yml", <<-YAML
|
|
development:
|
|
database: <%= Rails.application.config.database %>
|
|
adapter: sqlite3
|
|
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
|
timeout: 5000
|
|
YAML
|
|
|
|
app_file "config/environments/development.rb", <<-RUBY
|
|
Rails.application.configure do
|
|
config.database = "storage/development.sqlite3"
|
|
end
|
|
RUBY
|
|
|
|
primary, replica = PTY.open
|
|
spawn_dbconsole(replica)
|
|
assert_output("sqlite>", primary, 100)
|
|
ensure
|
|
primary.puts ".exit"
|
|
end
|
|
|
|
def test_respect_environment_option
|
|
app_file "config/database.yml", <<-YAML
|
|
default: &default
|
|
adapter: sqlite3
|
|
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
|
timeout: 5000
|
|
|
|
development:
|
|
<<: *default
|
|
database: storage/development.sqlite3
|
|
|
|
production:
|
|
<<: *default
|
|
database: storage/production.sqlite3
|
|
YAML
|
|
|
|
primary, replica = PTY.open
|
|
spawn_dbconsole(replica, "-e production")
|
|
assert_output("sqlite>", primary, 100)
|
|
|
|
primary.puts "pragma database_list;"
|
|
assert_output("production.sqlite3", primary)
|
|
ensure
|
|
primary.puts ".exit"
|
|
end
|
|
|
|
private
|
|
def spawn_dbconsole(fd, options = nil)
|
|
Process.spawn("#{app_path}/bin/rails dbconsole #{options}", in: fd, out: fd, err: fd)
|
|
end
|
|
end
|
|
end
|