From: duerst@... Date: 2014-10-28T02:07:52+00:00 Subject: [ruby-core:65929] [ruby-trunk - Bug #10430] Proc instead of String as error message doesn't work. Issue #10430 has been updated by Martin D��rst. Nobuyoshi Nakada wrote: > Martin D��rst wrote: > > Third, test-all is very good to have, but it's too slow when I know which tests I need to run. > > I see. > You run the test just as `ruby test/test_unicode_normalize.rb`? Yes. > You need to run it via `test/runner.rb`, i.e., `ruby test/runner.rb test_unicode_normalize.rb`. Thanks for the advice, it worked. But why do we need a special runner.rb script just to run individual tests? Now that Unicode normalization functionality is part of Ruby itself, I want to create a gem for people who want to use it on older versions, but the need for such a test runner script or the change from tool/unicode_norm_gen.rb to template/unicode_norm_gen.tmpl create unnecessary divergence. ---------------------------------------- Bug #10430: Proc instead of String as error message doesn't work. https://bugs.ruby-lang.org/issues/10430#change-49666 * Author: Martin D��rst * Status: Closed * Priority: Normal * Assignee: Nobuyoshi Nakada * Category: test * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0dev (2014-10-26 trunk 48146) [x86_64-cygwin] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Revision r48113 introduced Procs to delay time-consuming generation of error messages. This is a good idea, but it doesn't work for me. How to reproduce: Make a small change in lib/unicode_normalize/tables.rb. Any change should do; I changed "Q" to "QQ" in one instance. Run make install(-nodoc). Run ruby test/test_unicode_normalize.rb. The result I get is as follows: ~~~ =============================================================================== Failure: test_normalize_to_NFKD_from_source_with_nfkd(TestNormalize) test/test_unicode_normalize.rb:38:in `block (2 levels) in generate_test_normalize' test/test_unicode_normalize.rb:33:in `each' test/test_unicode_normalize.rb:33:in `block in generate_test_normalize' # <"Q"> expected but was <"QQ"> diff: ? QQ =============================================================================== ~~~ The failure is expected (artificially generated). The problem is the line `#` The Proc that is supposed to be evaluated to generate a more detailed error message (showing codepoints of the characters involved) is just converted to a String. For reference, I'm using the standard bundled gems minitest-5.4.1.gem, power_assert-0.1.4.gem, and test-unit-3.0.1.gem. -- https://bugs.ruby-lang.org/