From 2b3a002a2a62ee5ef4767b4738456dedba88f780 Mon Sep 17 00:00:00 2001 From: Philippe Creux Date: Thu, 15 Jun 2023 11:07:31 +0200 Subject: [PATCH] Improve error messages of assert_changes and assert_no_changes --- activesupport/CHANGELOG.md | 8 ++++++++ activesupport/lib/active_support/testing/assertions.rb | 8 ++++---- activesupport/test/test_case_test.rb | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 149a19e40b..27a3943e9c 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,11 @@ +* Improve error messages of `assert_changes` and `assert_no_changes` + + `assert_changes` error messages now display objects with `.inspect` to make it easier + to differentiate nil from empty strings, strings from symbols, etc. + `assert_no_changes` error messages now surface the actual value. + + *pcreux* + * Fix `#to_fs(:human_size)` to correctly work with negative numbers. *Earlopain* diff --git a/activesupport/lib/active_support/testing/assertions.rb b/activesupport/lib/active_support/testing/assertions.rb index a6634999dc..94c2374316 100644 --- a/activesupport/lib/active_support/testing/assertions.rb +++ b/activesupport/lib/active_support/testing/assertions.rb @@ -195,7 +195,7 @@ def assert_changes(expression, message = nil, from: UNTRACKED, to: UNTRACKED, &b retval = _assert_nothing_raised_or_warn("assert_changes", &block) unless from == UNTRACKED - error = "Expected change from #{from.inspect}, got #{before}" + error = "Expected change from #{from.inspect}, got #{before.inspect}" error = "#{message}.\n#{error}" if message assert from === before, error end @@ -203,12 +203,12 @@ def assert_changes(expression, message = nil, from: UNTRACKED, to: UNTRACKED, &b after = exp.call error = "#{expression.inspect} didn't change" - error = "#{error}. It was already #{to}" if before == to + error = "#{error}. It was already #{to.inspect}" if before == to error = "#{message}.\n#{error}" if message refute_equal before, after, error unless to == UNTRACKED - error = "Expected change to #{to}, got #{after}\n" + error = "Expected change to #{to.inspect}, got #{after.inspect}\n" error = "#{message}.\n#{error}" if message assert to === after, error end @@ -242,7 +242,7 @@ def assert_no_changes(expression, message = nil, from: UNTRACKED, &block) retval = _assert_nothing_raised_or_warn("assert_no_changes", &block) unless from == UNTRACKED - error = "Expected initial value of #{from.inspect}" + error = "Expected initial value of #{from.inspect}, got #{before.inspect}" error = "#{message}.\n#{error}" if message assert from === before, error end diff --git a/activesupport/test/test_case_test.rb b/activesupport/test/test_case_test.rb index 5a30e9d887..dc2c277299 100644 --- a/activesupport/test/test_case_test.rb +++ b/activesupport/test/test_case_test.rb @@ -331,7 +331,7 @@ def test_assert_no_changes_with_from_option_with_nil @object.increment end end - assert_equal "Expected initial value of nil", error.message + assert_equal "Expected initial value of nil, got 0", error.message end def test_assert_no_changes_with_from_and_case_operator