upgrade to version 7.0.4
This commit is contained in:
parent
1efdf6fcef
commit
f8d3edd9da
Binary file not shown.
Binary file not shown.
BIN
activerecord-7.0.4.gem
Normal file
BIN
activerecord-7.0.4.gem
Normal file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,49 @@
|
||||
From d536ffd591d6a2363aaa1ad140f7b450e2e67ac6 Mon Sep 17 00:00:00 2001
|
||||
From: Jess Bees <jesse@toomanybees.com>
|
||||
Date: Fri, 29 Oct 2021 15:02:04 -0400
|
||||
Subject: [PATCH] Raise an exception when using unrecognized options in
|
||||
change_table block
|
||||
|
||||
In a database migration, the expressions `add_column`, `remove_index`,
|
||||
etc. accept as keyword options `if_exists: true`/`if_not_exists: true`
|
||||
which will skip that table alteration if the column or index does or
|
||||
does not already exist.
|
||||
|
||||
This might lead some to think that within a change_table block,
|
||||
```
|
||||
change_table(:table) do |t|
|
||||
t.column :new_column, if_not_exists: true
|
||||
t.remove_index :old_column, if_exists: true
|
||||
end
|
||||
```
|
||||
also works, but it doesn't. Or rather, it is silently ignored when
|
||||
change_table is called with `bulk: true`, and it works accidentally
|
||||
otherwise.
|
||||
|
||||
This commit raises an exception when these options are used in a
|
||||
change_table block, which suggests the similar syntax:
|
||||
`t.column :new_column unless t.column_exists?(:new_column)`. This
|
||||
suggestion is already made in the documentation to
|
||||
`ActiveRecord::ConnectionAdapters::Table`.
|
||||
https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Table.html#method-i-column_exists-3F
|
||||
|
||||
Do not raise these new exceptions on migrations before 7.0
|
||||
---
|
||||
.../abstract/schema_definitions.rb | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
|
||||
index eccb49adb91d8..e88d1637f68c7 100644
|
||||
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
|
||||
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
|
||||
@@ -657,8 +659,8 @@ def index(column_name, **options)
|
||||
# end
|
||||
#
|
||||
# See {connection.index_exists?}[rdoc-ref:SchemaStatements#index_exists?]
|
||||
- def index_exists?(column_name, options = {})
|
||||
- @base.index_exists?(name, column_name, options)
|
||||
+ def index_exists?(column_name, **options)
|
||||
+ @base.index_exists?(name, column_name, **options)
|
||||
end
|
||||
|
||||
# Renames the given index on the table.
|
||||
411
rubygem-activerecord-7.0.2.3-Fix-tests-for-minitest-5.16.patch
Normal file
411
rubygem-activerecord-7.0.2.3-Fix-tests-for-minitest-5.16.patch
Normal file
@ -0,0 +1,411 @@
|
||||
From 9766eb4a833c26c64012230b96dd1157ebb8e8a2 Mon Sep 17 00:00:00 2001
|
||||
From: eileencodes <eileencodes@gmail.com>
|
||||
Date: Wed, 15 Jun 2022 12:44:11 -0400
|
||||
Subject: [PATCH] Fix tests for minitest 5.16
|
||||
|
||||
In minitest/minitest@6e06ac9 minitest changed such that it now accepts
|
||||
`kwargs` instead of requiring kwargs to be shoved into the args array.
|
||||
This is a good change but required some updates to our test code to get
|
||||
the new version of minitest passing.
|
||||
|
||||
Changes are as follows:
|
||||
|
||||
1) Lock minitest to 5.15 for Ruby 2.7. We don't love this change but
|
||||
it's pretty difficult to get 2.7 and 3.0 to play nicely together with
|
||||
the new kwargs changes. Dropping 2.7 support isn't an option right
|
||||
now for Rails. This is safe because all of the code changes here are
|
||||
internal methods to Rails like assert_called_with. Applications
|
||||
shouldn't be consuming them as they are no-doc'd.
|
||||
2) Update the `assert_called_with` method to take any kwargs but also
|
||||
the returns kwarg.
|
||||
3) Update callers of `assert_called_with` to move the kwargs outside the
|
||||
args array.
|
||||
4) Update the message from marshaled exceptions. In 5.16 the exception
|
||||
message is "result not reported" instead of "Wrapped undumpable
|
||||
exception".
|
||||
|
||||
Co-authored-by: Matthew Draper <matthew@trebex.net>
|
||||
---
|
||||
activerecord/test/cases/fixtures_test.rb | 6 +-
|
||||
.../test/cases/migration/change_table_test.rb | 100 ++++++++++--------
|
||||
.../test/cases/tasks/sqlite_rake_test.rb | 5 +-
|
||||
3 files changed, 63 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb
|
||||
index 0267da5116bdd..772f421f2c852 100644
|
||||
--- a/activerecord/test/cases/fixtures_test.rb
|
||||
+++ b/activerecord/test/cases/fixtures_test.rb
|
||||
@@ -996,7 +996,7 @@ def rollback_transaction(*args); end
|
||||
def lock_thread=(lock_thread); end
|
||||
end.new
|
||||
|
||||
- assert_called_with(connection, :begin_transaction, [joinable: false, _lazy: false]) do
|
||||
+ assert_called_with(connection, :begin_transaction, [], joinable: false, _lazy: false) do
|
||||
fire_connection_notification(connection)
|
||||
end
|
||||
end
|
||||
@@ -1036,14 +1036,14 @@ def rollback_transaction(*args); end
|
||||
def lock_thread=(lock_thread); end
|
||||
end.new
|
||||
|
||||
- assert_called_with(connection, :begin_transaction, [joinable: false, _lazy: false]) do
|
||||
+ assert_called_with(connection, :begin_transaction, [], joinable: false, _lazy: false) do
|
||||
fire_connection_notification(connection, shard: :shard_two)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def fire_connection_notification(connection, shard: ActiveRecord::Base.default_shard)
|
||||
- assert_called_with(ActiveRecord::Base.connection_handler, :retrieve_connection, ["book", { shard: shard }], returns: connection) do
|
||||
+ assert_called_with(ActiveRecord::Base.connection_handler, :retrieve_connection, ["book"], returns: connection, shard: shard) do
|
||||
message_bus = ActiveSupport::Notifications.instrumenter
|
||||
payload = {
|
||||
spec_name: "book",
|
||||
diff --git a/activerecord/test/cases/migration/change_table_test.rb b/activerecord/test/cases/migration/change_table_test.rb
|
||||
index 5cf6493e52ba2..620319b38655c 100644
|
||||
--- a/activerecord/test/cases/migration/change_table_test.rb
|
||||
+++ b/activerecord/test/cases/migration/change_table_test.rb
|
||||
@@ -17,117 +17,131 @@ def with_change_table
|
||||
yield ActiveRecord::Base.connection.update_table_definition(:delete_me, @connection)
|
||||
end
|
||||
|
||||
+ if Minitest::Mock.instance_method(:expect).parameters.map(&:first).include?(:keyrest)
|
||||
+ def expect(method, returns, args, **kwargs)
|
||||
+ @connection.expect(method, returns, args, **kwargs)
|
||||
+ end
|
||||
+ else
|
||||
+ def expect(method, returns, args, **kwargs)
|
||||
+ if !kwargs.empty?
|
||||
+ @connection.expect(method, returns, [*args, kwargs])
|
||||
+ else
|
||||
+ @connection.expect(method, returns, args)
|
||||
+ end
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
def test_references_column_type_adds_id
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_reference, nil, [:delete_me, :customer]
|
||||
+ expect :add_reference, nil, [:delete_me, :customer]
|
||||
t.references :customer
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_references_column_type_removes_id
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_reference, nil, [:delete_me, :customer]
|
||||
+ expect :remove_reference, nil, [:delete_me, :customer]
|
||||
t.remove_references :customer
|
||||
end
|
||||
end
|
||||
|
||||
def test_add_belongs_to_works_like_add_references
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_reference, nil, [:delete_me, :customer]
|
||||
+ expect :add_reference, nil, [:delete_me, :customer]
|
||||
t.belongs_to :customer
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_belongs_to_works_like_remove_references
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_reference, nil, [:delete_me, :customer]
|
||||
+ expect :remove_reference, nil, [:delete_me, :customer]
|
||||
t.remove_belongs_to :customer
|
||||
end
|
||||
end
|
||||
|
||||
def test_references_column_type_with_polymorphic_adds_type
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true]
|
||||
+ expect :add_reference, nil, [:delete_me, :taggable], polymorphic: true
|
||||
t.references :taggable, polymorphic: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_references_column_type_with_polymorphic_removes_type
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true]
|
||||
+ expect :remove_reference, nil, [:delete_me, :taggable], polymorphic: true
|
||||
t.remove_references :taggable, polymorphic: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_references_column_type_with_polymorphic_and_options_null_is_false_adds_table_flag
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true, null: false]
|
||||
+ expect :add_reference, nil, [:delete_me, :taggable], polymorphic: true, null: false
|
||||
t.references :taggable, polymorphic: true, null: false
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_references_column_type_with_polymorphic_and_options_null_is_false_removes_table_flag
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true, null: false]
|
||||
+ expect :remove_reference, nil, [:delete_me, :taggable], polymorphic: true, null: false
|
||||
t.remove_references :taggable, polymorphic: true, null: false
|
||||
end
|
||||
end
|
||||
|
||||
def test_references_column_type_with_polymorphic_and_type
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true, type: :string]
|
||||
+ expect :add_reference, nil, [:delete_me, :taggable], polymorphic: true, type: :string
|
||||
t.references :taggable, polymorphic: true, type: :string
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_references_column_type_with_polymorphic_and_type
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true, type: :string]
|
||||
+ expect :remove_reference, nil, [:delete_me, :taggable], polymorphic: true, type: :string
|
||||
t.remove_references :taggable, polymorphic: true, type: :string
|
||||
end
|
||||
end
|
||||
|
||||
def test_timestamps_creates_updated_at_and_created_at
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_timestamps, nil, [:delete_me, null: true]
|
||||
+ expect :add_timestamps, nil, [:delete_me], null: true
|
||||
t.timestamps null: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_timestamps_creates_updated_at_and_created_at
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_timestamps, nil, [:delete_me, { null: true }]
|
||||
+ expect :remove_timestamps, nil, [:delete_me], null: true
|
||||
t.remove_timestamps(null: true)
|
||||
end
|
||||
end
|
||||
|
||||
def test_primary_key_creates_primary_key_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :id, :primary_key, primary_key: true, first: true]
|
||||
+ expect :add_column, nil, [:delete_me, :id, :primary_key], primary_key: true, first: true
|
||||
t.primary_key :id, first: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_integer_creates_integer_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :foo, :integer]
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
+ expect :add_column, nil, [:delete_me, :foo, :integer]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
t.integer :foo, :bar
|
||||
end
|
||||
end
|
||||
|
||||
def test_bigint_creates_bigint_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :foo, :bigint]
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :bigint]
|
||||
+ expect :add_column, nil, [:delete_me, :foo, :bigint]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :bigint]
|
||||
t.bigint :foo, :bar
|
||||
end
|
||||
end
|
||||
|
||||
def test_string_creates_string_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :foo, :string]
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :string]
|
||||
+ expect :add_column, nil, [:delete_me, :foo, :string]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :string]
|
||||
t.string :foo, :bar
|
||||
end
|
||||
end
|
||||
@@ -135,16 +149,16 @@ def test_string_creates_string_column
|
||||
if current_adapter?(:PostgreSQLAdapter)
|
||||
def test_json_creates_json_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :foo, :json]
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :json]
|
||||
+ expect :add_column, nil, [:delete_me, :foo, :json]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :json]
|
||||
t.json :foo, :bar
|
||||
end
|
||||
end
|
||||
|
||||
def test_xml_creates_xml_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :foo, :xml]
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :xml]
|
||||
+ expect :add_column, nil, [:delete_me, :foo, :xml]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :xml]
|
||||
t.xml :foo, :bar
|
||||
end
|
||||
end
|
||||
@@ -152,120 +166,120 @@ def test_remove_exclusion_constraint_removes_exclusion_constraint
|
||||
|
||||
def test_column_creates_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
t.column :bar, :integer
|
||||
end
|
||||
end
|
||||
|
||||
def test_column_creates_column_with_options
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :integer, { null: false }]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :integer], null: false
|
||||
t.column :bar, :integer, null: false
|
||||
end
|
||||
end
|
||||
|
||||
def test_column_creates_column_with_index
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
- @connection.expect :add_index, nil, [:delete_me, :bar]
|
||||
+ expect :add_column, nil, [:delete_me, :bar, :integer]
|
||||
+ expect :add_index, nil, [:delete_me, :bar]
|
||||
t.column :bar, :integer, index: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_creates_index
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_index, nil, [:delete_me, :bar]
|
||||
+ expect :add_index, nil, [:delete_me, :bar]
|
||||
t.index :bar
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_creates_index_with_options
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_index, nil, [:delete_me, :bar, { unique: true }]
|
||||
+ expect :add_index, nil, [:delete_me, :bar], unique: true
|
||||
t.index :bar, unique: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_exists
|
||||
with_change_table do |t|
|
||||
- @connection.expect :index_exists?, nil, [:delete_me, :bar, {}]
|
||||
+ expect :index_exists?, nil, [:delete_me, :bar]
|
||||
t.index_exists?(:bar)
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_exists_with_options
|
||||
with_change_table do |t|
|
||||
- @connection.expect :index_exists?, nil, [:delete_me, :bar, { unique: true }]
|
||||
+ expect :index_exists?, nil, [:delete_me, :bar], unique: true
|
||||
t.index_exists?(:bar, unique: true)
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_index_renames_index
|
||||
with_change_table do |t|
|
||||
- @connection.expect :rename_index, nil, [:delete_me, :bar, :baz]
|
||||
+ expect :rename_index, nil, [:delete_me, :bar, :baz]
|
||||
t.rename_index :bar, :baz
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_changes_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :change_column, nil, [:delete_me, :bar, :string]
|
||||
+ expect :change_column, nil, [:delete_me, :bar, :string]
|
||||
t.change :bar, :string
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_changes_column_with_options
|
||||
with_change_table do |t|
|
||||
- @connection.expect :change_column, nil, [:delete_me, :bar, :string, { null: true }]
|
||||
+ expect :change_column, nil, [:delete_me, :bar, :string], null: true
|
||||
t.change :bar, :string, null: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_default_changes_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :change_column_default, nil, [:delete_me, :bar, :string]
|
||||
+ expect :change_column_default, nil, [:delete_me, :bar, :string]
|
||||
t.change_default :bar, :string
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_null_changes_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :change_column_null, nil, [:delete_me, :bar, true, nil]
|
||||
+ expect :change_column_null, nil, [:delete_me, :bar, true, nil]
|
||||
t.change_null :bar, true
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_drops_single_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_columns, nil, [:delete_me, :bar]
|
||||
+ expect :remove_columns, nil, [:delete_me, :bar]
|
||||
t.remove :bar
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_drops_multiple_columns
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_columns, nil, [:delete_me, :bar, :baz]
|
||||
+ expect :remove_columns, nil, [:delete_me, :bar, :baz]
|
||||
t.remove :bar, :baz
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_drops_multiple_columns_when_column_options_are_given
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_columns, nil, [:delete_me, :bar, :baz, type: :string, null: false]
|
||||
+ expect :remove_columns, nil, [:delete_me, :bar, :baz], type: :string, null: false
|
||||
t.remove :bar, :baz, type: :string, null: false
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_index_removes_index_with_options
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_index, nil, [:delete_me, :bar, { unique: true }]
|
||||
+ expect :remove_index, nil, [:delete_me, :bar], unique: true
|
||||
t.remove_index :bar, unique: true
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_renames_column
|
||||
with_change_table do |t|
|
||||
- @connection.expect :rename_column, nil, [:delete_me, :bar, :baz]
|
||||
+ expect :rename_column, nil, [:delete_me, :bar, :baz]
|
||||
t.rename :bar, :baz
|
||||
end
|
||||
end
|
||||
@@ -278,14 +292,14 @@ def test_table_name_set
|
||||
|
||||
def test_check_constraint_creates_check_constraint
|
||||
with_change_table do |t|
|
||||
- @connection.expect :add_check_constraint, nil, [:delete_me, "price > discounted_price", name: "price_check"]
|
||||
+ expect :add_check_constraint, nil, [:delete_me, "price > discounted_price"], name: "price_check"
|
||||
t.check_constraint "price > discounted_price", name: "price_check"
|
||||
end
|
||||
end
|
||||
|
||||
def test_remove_check_constraint_removes_check_constraint
|
||||
with_change_table do |t|
|
||||
- @connection.expect :remove_check_constraint, nil, [:delete_me, name: "price_check"]
|
||||
+ expect :remove_check_constraint, nil, [:delete_me], name: "price_check"
|
||||
t.remove_check_constraint name: "price_check"
|
||||
end
|
||||
end
|
||||
diff --git a/activerecord/test/cases/tasks/sqlite_rake_test.rb b/activerecord/test/cases/tasks/sqlite_rake_test.rb
|
||||
index 19daf8f1c8f05..98257867aa773 100644
|
||||
--- a/activerecord/test/cases/tasks/sqlite_rake_test.rb
|
||||
+++ b/activerecord/test/cases/tasks/sqlite_rake_test.rb
|
||||
@@ -217,8 +217,9 @@ def test_structure_dump_execution_fails
|
||||
assert_called_with(
|
||||
Kernel,
|
||||
:system,
|
||||
- ["sqlite3", "--noop", "db_create.sqlite3", ".schema", out: "awesome-file.sql"],
|
||||
- returns: nil
|
||||
+ ["sqlite3", "--noop", "db_create.sqlite3", ".schema"],
|
||||
+ returns: nil,
|
||||
+ out: "awesome-file.sql"
|
||||
) do
|
||||
e = assert_raise(RuntimeError) do
|
||||
with_structure_dump_flags(["--noop"]) do
|
||||
@ -0,0 +1,413 @@
|
||||
From df0de681dc1873534ecd2fc8371e1f2562984b68 Mon Sep 17 00:00:00 2001
|
||||
From: John Crepezzi <john.crepezzi@gmail.com>
|
||||
Date: Thu, 16 Jun 2022 08:34:05 -0400
|
||||
Subject: [PATCH] Remove the multi-call form of assert_called_with
|
||||
|
||||
The `assert_called_with` helper allows passing a multi-dimensional array to
|
||||
mock multiple calls to the same method for a given block. This works
|
||||
fine now, but when adding support for real kwargs arguments to line up with
|
||||
recent upgrades in Minitest, this approach is no longer workable because
|
||||
we can't pass multiple sets of differing kwargs.
|
||||
|
||||
Rather than complicated this method further, this commit removes the
|
||||
multi-call form of `assert_called_with` and modifies the tests that
|
||||
currently make use of that functionality to just use the underlying
|
||||
`Minitest::Mock` calls.
|
||||
|
||||
Co-authored-by: Eileen M. Uchitelle <eileencodes@gmail.com>
|
||||
---
|
||||
.../test/cases/tasks/database_tasks_test.rb | 71 ++++++++---------
|
||||
.../test/cases/tasks/mysql_rake_test.rb | 15 ++--
|
||||
.../test/cases/tasks/postgresql_rake_test.rb | 76 +++++++------------
|
||||
3 files changed, 72 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/activerecord/test/cases/tasks/database_tasks_test.rb b/activerecord/test/cases/tasks/database_tasks_test.rb
|
||||
index 70c378c6680a9..9aa4da54d889a 100644
|
||||
--- a/activerecord/test/cases/tasks/database_tasks_test.rb
|
||||
+++ b/activerecord/test/cases/tasks/database_tasks_test.rb
|
||||
@@ -39,6 +39,16 @@ def with_stubbed_new(&block)
|
||||
end
|
||||
end
|
||||
|
||||
+ module DatabaseTasksHelper
|
||||
+ def assert_called_for_configs(method_name, configs, &block)
|
||||
+ mock = Minitest::Mock.new
|
||||
+ configs.each { |config| mock.expect(:call, nil, config) }
|
||||
+
|
||||
+ ActiveRecord::Tasks::DatabaseTasks.stub(method_name, mock, &block)
|
||||
+ assert_mock(mock)
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
ADAPTERS_TASKS = {
|
||||
mysql2: :mysql_tasks,
|
||||
postgresql: :postgresql_tasks,
|
||||
@@ -368,6 +378,8 @@ def with_stubbed_configurations_establish_connection(&block)
|
||||
end
|
||||
|
||||
class DatabaseTasksCreateCurrentTest < ActiveRecord::TestCase
|
||||
+ include DatabaseTasksHelper
|
||||
+
|
||||
def setup
|
||||
@configurations = {
|
||||
"development" => { "database" => "dev-db" },
|
||||
@@ -406,8 +418,7 @@ def test_creates_current_environment_database_with_url
|
||||
|
||||
def test_creates_test_and_development_databases_when_env_was_not_specified
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -426,8 +437,7 @@ def test_creates_test_and_development_databases_when_rails_env_is_development
|
||||
ENV["RAILS_ENV"] = "development"
|
||||
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -449,8 +459,7 @@ def test_creates_development_database_without_test_database_when_skip_test_datab
|
||||
ENV["SKIP_TEST_DATABASE"] = "true"
|
||||
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("development", "primary")]
|
||||
@@ -492,6 +501,8 @@ def with_stubbed_configurations_establish_connection(&block)
|
||||
end
|
||||
|
||||
class DatabaseTasksCreateCurrentThreeTierTest < ActiveRecord::TestCase
|
||||
+ include DatabaseTasksHelper
|
||||
+
|
||||
def setup
|
||||
@configurations = {
|
||||
"development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } },
|
||||
@@ -502,8 +513,7 @@ def setup
|
||||
|
||||
def test_creates_current_environment_database
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("test", "primary")],
|
||||
@@ -519,8 +529,7 @@ def test_creates_current_environment_database
|
||||
|
||||
def test_creates_current_environment_database_with_url
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("production", "primary")],
|
||||
@@ -536,8 +545,7 @@ def test_creates_current_environment_database_with_url
|
||||
|
||||
def test_creates_test_and_development_databases_when_env_was_not_specified
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -558,8 +566,7 @@ def test_creates_test_and_development_databases_when_rails_env_is_development
|
||||
ENV["RAILS_ENV"] = "development"
|
||||
|
||||
with_stubbed_configurations_establish_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:create,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -705,6 +712,8 @@ def with_stubbed_configurations
|
||||
end
|
||||
|
||||
class DatabaseTasksDropCurrentTest < ActiveRecord::TestCase
|
||||
+ include DatabaseTasksHelper
|
||||
+
|
||||
def setup
|
||||
@configurations = {
|
||||
"development" => { "database" => "dev-db" },
|
||||
@@ -743,8 +752,7 @@ def test_drops_current_environment_database_with_url
|
||||
|
||||
def test_drops_test_and_development_databases_when_env_was_not_specified
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -763,8 +771,7 @@ def test_drops_testand_development_databases_when_rails_env_is_development
|
||||
ENV["RAILS_ENV"] = "development"
|
||||
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -796,6 +803,8 @@ def with_stubbed_configurations
|
||||
end
|
||||
|
||||
class DatabaseTasksDropCurrentThreeTierTest < ActiveRecord::TestCase
|
||||
+ include DatabaseTasksHelper
|
||||
+
|
||||
def setup
|
||||
@configurations = {
|
||||
"development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } },
|
||||
@@ -806,8 +815,7 @@ def setup
|
||||
|
||||
def test_drops_current_environment_database
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("test", "primary")],
|
||||
@@ -823,8 +831,7 @@ def test_drops_current_environment_database
|
||||
|
||||
def test_drops_current_environment_database_with_url
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("production", "primary")],
|
||||
@@ -840,8 +847,7 @@ def test_drops_current_environment_database_with_url
|
||||
|
||||
def test_drops_test_and_development_databases_when_env_was_not_specified
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -862,8 +868,7 @@ def test_drops_testand_development_databases_when_rails_env_is_development
|
||||
ENV["RAILS_ENV"] = "development"
|
||||
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:drop,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -1232,6 +1237,8 @@ class DatabaseTasksTruncateAllWithSuffixTest < DatabaseTasksTruncateAllTest
|
||||
end
|
||||
|
||||
class DatabaseTasksTruncateAllWithMultipleDatabasesTest < ActiveRecord::TestCase
|
||||
+ include DatabaseTasksHelper
|
||||
+
|
||||
def setup
|
||||
@configurations = {
|
||||
"development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } },
|
||||
@@ -1242,8 +1249,7 @@ def setup
|
||||
|
||||
def test_truncate_all_databases_for_environment
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:truncate_tables,
|
||||
[
|
||||
[config_for("test", "primary")],
|
||||
@@ -1259,8 +1265,7 @@ def test_truncate_all_databases_for_environment
|
||||
|
||||
def test_truncate_all_databases_with_url_for_environment
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:truncate_tables,
|
||||
[
|
||||
[config_for("production", "primary")],
|
||||
@@ -1276,8 +1281,7 @@ def test_truncate_all_databases_with_url_for_environment
|
||||
|
||||
def test_truncate_all_development_databases_when_env_is_not_specified
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:truncate_tables,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
@@ -1296,8 +1300,7 @@ def test_truncate_all_development_databases_when_env_is_development
|
||||
ENV["RAILS_ENV"] = "development"
|
||||
|
||||
with_stubbed_configurations do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Tasks::DatabaseTasks,
|
||||
+ assert_called_for_configs(
|
||||
:truncate_tables,
|
||||
[
|
||||
[config_for("development", "primary")],
|
||||
diff --git a/activerecord/test/cases/tasks/mysql_rake_test.rb b/activerecord/test/cases/tasks/mysql_rake_test.rb
|
||||
index 75f557444c535..5fa3c500cfc36 100644
|
||||
--- a/activerecord/test/cases/tasks/mysql_rake_test.rb
|
||||
+++ b/activerecord/test/cases/tasks/mysql_rake_test.rb
|
||||
@@ -26,18 +26,17 @@ def teardown
|
||||
def test_establishes_connection_without_database
|
||||
db_config = ActiveRecord::DatabaseConfigurations::HashConfig.new("default_env", "primary", @configuration)
|
||||
|
||||
+ mock = Minitest::Mock.new
|
||||
+ mock.expect(:call, nil, [adapter: "mysql2", database: nil])
|
||||
+ mock.expect(:call, nil, [db_config])
|
||||
+
|
||||
ActiveRecord::Base.stub(:connection, @connection) do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Base,
|
||||
- :establish_connection,
|
||||
- [
|
||||
- [adapter: "mysql2", database: nil],
|
||||
- [db_config]
|
||||
- ]
|
||||
- ) do
|
||||
+ ActiveRecord::Base.stub(:establish_connection, mock) do
|
||||
ActiveRecord::Tasks::DatabaseTasks.create(db_config)
|
||||
end
|
||||
end
|
||||
+
|
||||
+ assert_mock(mock)
|
||||
end
|
||||
|
||||
def test_creates_database_with_no_default_options
|
||||
diff --git a/activerecord/test/cases/tasks/postgresql_rake_test.rb b/activerecord/test/cases/tasks/postgresql_rake_test.rb
|
||||
index 5c5df88e96afb..3b328cb5d5603 100644
|
||||
--- a/activerecord/test/cases/tasks/postgresql_rake_test.rb
|
||||
+++ b/activerecord/test/cases/tasks/postgresql_rake_test.rb
|
||||
@@ -23,22 +23,17 @@ def teardown
|
||||
def test_establishes_connection_to_postgresql_database
|
||||
db_config = ActiveRecord::DatabaseConfigurations::HashConfig.new("default_env", "primary", @configuration)
|
||||
|
||||
+ mock = Minitest::Mock.new
|
||||
+ mock.expect(:call, nil, [{ adapter: "postgresql", database: "postgres", schema_search_path: "public" }])
|
||||
+ mock.expect(:call, nil, [db_config])
|
||||
+
|
||||
ActiveRecord::Base.stub(:connection, @connection) do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Base,
|
||||
- :establish_connection,
|
||||
- [
|
||||
- [
|
||||
- adapter: "postgresql",
|
||||
- database: "postgres",
|
||||
- schema_search_path: "public"
|
||||
- ],
|
||||
- [db_config]
|
||||
- ]
|
||||
- ) do
|
||||
+ ActiveRecord::Base.stub(:establish_connection, mock) do
|
||||
ActiveRecord::Tasks::DatabaseTasks.create(db_config)
|
||||
end
|
||||
end
|
||||
+
|
||||
+ assert_mock(mock)
|
||||
end
|
||||
|
||||
def test_creates_database_with_default_encoding
|
||||
@@ -89,22 +84,17 @@ def test_creates_database_with_given_collation_and_ctype
|
||||
def test_establishes_connection_to_new_database
|
||||
db_config = ActiveRecord::DatabaseConfigurations::HashConfig.new("default_env", "primary", @configuration)
|
||||
|
||||
+ mock = Minitest::Mock.new
|
||||
+ mock.expect(:call, nil, [{ adapter: "postgresql", database: "postgres", schema_search_path: "public" }])
|
||||
+ mock.expect(:call, nil, [db_config])
|
||||
+
|
||||
ActiveRecord::Base.stub(:connection, @connection) do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Base,
|
||||
- :establish_connection,
|
||||
- [
|
||||
- [
|
||||
- adapter: "postgresql",
|
||||
- database: "postgres",
|
||||
- schema_search_path: "public"
|
||||
- ],
|
||||
- [db_config]
|
||||
- ]
|
||||
- ) do
|
||||
+ ActiveRecord::Base.stub(:establish_connection, mock) do
|
||||
ActiveRecord::Tasks::DatabaseTasks.create(db_config)
|
||||
end
|
||||
end
|
||||
+
|
||||
+ assert_mock(mock)
|
||||
end
|
||||
|
||||
def test_db_create_with_error_prints_message
|
||||
@@ -229,22 +219,17 @@ def test_clears_active_connections
|
||||
def test_establishes_connection_to_postgresql_database
|
||||
db_config = ActiveRecord::DatabaseConfigurations::HashConfig.new("default_env", "primary", @configuration)
|
||||
|
||||
+ mock = Minitest::Mock.new
|
||||
+ mock.expect(:call, nil, [{ adapter: "postgresql", database: "postgres", schema_search_path: "public" }])
|
||||
+ mock.expect(:call, nil, [db_config])
|
||||
+
|
||||
with_stubbed_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Base,
|
||||
- :establish_connection,
|
||||
- [
|
||||
- [
|
||||
- adapter: "postgresql",
|
||||
- database: "postgres",
|
||||
- schema_search_path: "public"
|
||||
- ],
|
||||
- [db_config]
|
||||
- ]
|
||||
- ) do
|
||||
+ ActiveRecord::Base.stub(:establish_connection, mock) do
|
||||
ActiveRecord::Tasks::DatabaseTasks.purge(db_config)
|
||||
end
|
||||
end
|
||||
+
|
||||
+ assert_mock(mock)
|
||||
end
|
||||
|
||||
def test_drops_database
|
||||
@@ -274,22 +259,17 @@ def test_creates_database
|
||||
def test_establishes_connection
|
||||
db_config = ActiveRecord::DatabaseConfigurations::HashConfig.new("default_env", "primary", @configuration)
|
||||
|
||||
+ mock = Minitest::Mock.new
|
||||
+ mock.expect(:call, nil, [{ adapter: "postgresql", database: "postgres", schema_search_path: "public" }])
|
||||
+ mock.expect(:call, nil, [db_config])
|
||||
+
|
||||
with_stubbed_connection do
|
||||
- assert_called_with(
|
||||
- ActiveRecord::Base,
|
||||
- :establish_connection,
|
||||
- [
|
||||
- [
|
||||
- adapter: "postgresql",
|
||||
- database: "postgres",
|
||||
- schema_search_path: "public"
|
||||
- ],
|
||||
- [db_config]
|
||||
- ]
|
||||
- ) do
|
||||
+ ActiveRecord::Base.stub(:establish_connection, mock) do
|
||||
ActiveRecord::Tasks::DatabaseTasks.purge(db_config)
|
||||
end
|
||||
end
|
||||
+
|
||||
+ assert_mock(mock)
|
||||
end
|
||||
|
||||
private
|
||||
@ -1,7 +1,7 @@
|
||||
%global gem_name activerecord
|
||||
Name: rubygem-%{gem_name}
|
||||
Epoch: 1
|
||||
Version: 6.1.4.1
|
||||
Version: 7.0.4
|
||||
Release: 1
|
||||
Summary: Object-relational mapper framework (part of Rails)
|
||||
License: MIT
|
||||
@ -10,18 +10,26 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
|
||||
# The gem doesn't ship with the test suite.
|
||||
# You may check it out like so
|
||||
# git clone http://github.com/rails/rails.git
|
||||
# cd rails/activerecord && git archive -v -o activerecord-6.1.4.1-tests.txz v6.1.4.1 test/
|
||||
# cd rails/activerecord && git archive -v -o activerecord-7.0.4-tests.txz v7.0.4 test/
|
||||
Source1: activerecord-%{version}-tests.txz
|
||||
# The tools are needed for the test suite, are however unpackaged in gem file.
|
||||
# You may check it out like so
|
||||
# git clone http://github.com/rails/rails.git --no-checkout
|
||||
# cd rails && git archive -v -o rails-6.1.4.1-tools.txz v6.1.4.1 tools/
|
||||
# cd rails && git archive -v -o rails-7.0.4-tools.txz v7.0.4 tools/
|
||||
Source2: rails-%{version}-tools.txz
|
||||
# Fixes for Minitest 5.16+
|
||||
# https://github.com/rails/rails/pull/43807
|
||||
Patch0: rubygem-activerecord-7.0.2.3-Fix-assert_called_with-with-empty-args-array.patch
|
||||
# https://github.com/rails/rails/pull/45380
|
||||
Patch1: rubygem-activerecord-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch
|
||||
# https://github.com/rails/rails/pull/45370
|
||||
Patch2: rubygem-activerecord-7.0.2.3-Fix-tests-for-minitest-5.16.patch
|
||||
|
||||
Suggests: %{_bindir}/sqlite3
|
||||
BuildRequires: rubygems-devel rubygem(bcrypt) rubygem(activesupport) = %{version}
|
||||
BuildRequires: rubygem(activemodel) = %{version} rubygem(builder) rubygem(sqlite3)
|
||||
BuildRequires: rubygem(actionpack) = %{version} rubygem(pg) rubygem(mocha) rubygem(rack)
|
||||
BuildRequires: rubygem(zeitwerk) rubygem(benchmark-ips) rubygem(did_you_mean)
|
||||
BuildArch: noarch
|
||||
%description
|
||||
Implements the ActiveRecord pattern (Fowler, PoEAA) for ORM. It ties database
|
||||
@ -39,6 +47,12 @@ Documentation for %{name}.
|
||||
%prep
|
||||
%setup -q -n %{gem_name}-%{version} -b1 -b2
|
||||
|
||||
%patch0 -p2
|
||||
|
||||
pushd %{_builddir}
|
||||
%patch1 -p2
|
||||
%patch2 -p2
|
||||
popd
|
||||
%build
|
||||
gem build ../%{gem_name}-%{version}.gemspec
|
||||
%gem_install
|
||||
@ -52,11 +66,28 @@ cp -a .%{gem_dir}/* \
|
||||
pushd .%{gem_instdir}
|
||||
ln -s %{_builddir}/tools ..
|
||||
mv %{_builddir}/test .
|
||||
sed -i '/^\s*def test_generates_absolute_path_with_given_root$/ a skip' \
|
||||
test/cases/tasks/sqlite_rake_test.rb
|
||||
sed -i '/require .byebug./ s/^/#/g' test/cases/base_prevent_writes_test.rb
|
||||
mv test/cases/adapters/sqlite3/explain_test.rb{,.disable}
|
||||
ruby -rpg -Itest:lib -e 'Dir.glob("./test/cases/**/*_test.rb").sort.each{ |f| require f }'
|
||||
sed -i '/assert_slower_by_at_most/ s/1\.4/2.5/' \
|
||||
test/cases/encryption/performance/envelope_encryption_performance_test.rb
|
||||
# Test adapters separately
|
||||
mv -v test/cases/adapters/ %{_builddir}/.
|
||||
|
||||
# Run without adapters
|
||||
ruby -Itest:lib -e '
|
||||
Dir.glob("./test/cases/**/*_test.rb")
|
||||
.sort
|
||||
.reject { |f| f =~ %r|/encryption/performance/| }
|
||||
.each { |f| require f }'
|
||||
|
||||
# Return the adapters to test them
|
||||
mv -v %{_builddir}/adapters/ test/cases/.
|
||||
|
||||
# Run tests for adapters only, but without postgresql
|
||||
ruby -Itest:lib -e '
|
||||
Dir.glob("./test/cases/adapters/**/*_test.rb")
|
||||
.sort
|
||||
.reject {|x| x =~ %r|/postgresql/| }
|
||||
.each { |f| require f }'
|
||||
popd
|
||||
|
||||
%files
|
||||
@ -73,6 +104,9 @@ popd
|
||||
%{gem_instdir}/examples
|
||||
|
||||
%changelog
|
||||
* Thu Jan 19 2023 yanxiaobing <yanxiaobing@huawei.com> - 1:7.0.4-1
|
||||
- Upgrade to version 7.0.4
|
||||
|
||||
* Tue Mar 29 2022 liyanan <liyanan32@huawei.com> - 6.1.4.1-1
|
||||
- update to 6.1.4.1
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user