Bug #10430
closed
Proc instead of String as error message doesn't work.
Added by duerst (Martin Dürst) about 10 years ago.
Updated about 10 years ago.
Description
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'
#<Proc:0x000006033229f0@test/test_unicode_normalize.rb:32>
<"Q"> expected but was
<"QQ">
diff:
? QQ
===============================================================================
The failure is expected (artificially generated). The problem is the line
#<Proc:0x000006033229f0@test/test_unicode_normalize.rb:32>
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.
- Description updated (diff)
It worked for me.
[29/47] TestNormalize#test_normalize_to_NFKC_from_NFC_with_nfkc = 0.01 s
1) Failure:
TestNormalize#test_normalize_to_NFKC_from_NFC_with_nfkc [/Users/nobu/src/ruby/trunk/src/test/test_unicode_normalize.rb:38]:
["0051"] expected but was ["0051", "0051"] on line 1232 (nfkc).
<"Q"> expected but was
<"QQ">.
Seems a different library is used?
Nobuyoshi Nakada wrote:
It worked for me.
Seems a different library is used?
This is one possibility. But I'm using the standard installation with the bundled gems (as written above: minitest-5.4.1.gem, power_assert-0.1.4.gem, and test-unit-3.0.1.gem; see also #10380). Is there a problem with that?
- Status changed from Open to Feedback
test-all
should use libraries under test/lib
, not the gems.
Do you set RUBYOPT?
- Status changed from Feedback to Assigned
Nobuyoshi Nakada wrote:
test-all
should use libraries under test/lib
, not the gems.
First, I haven't used test-all because for me it completely stops at test 401. I have raised a separate bug about this (#10433).
Second, why do we distribute one kind of test library but use another for our tests? Why don't the tests use the right library by default?
Third, test-all is very good to have, but it's too slow when I know which tests I need to run.
Do you set RUBYOPT?
No. Would that help? What setting should I use?
- Status changed from Assigned to Closed
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
?
You need to run it via test/runner.rb
, i.e., ruby test/runner.rb test_unicode_normalize.rb
.
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.
Nobuyoshi Nakada wrote:
Because the discussion about standard test libraries has not landed yet.
Sutou-san said he will fix so that user_message can be a Proc.
http://twitter.com/ktou/status/526751637990150144
Ah, thanks a lot for following up on this. This is great.
Sutou-san, 是非よろしくお願いします。
- Status changed from Closed to Open
- Assignee changed from nobu (Nobuyoshi Nakada) to kou (Kouhei Sutou)
I've released new test-unit gem. It support Proc as user_message.
Should I update version in gems/bundled_gems?
Kouhei Sutou wrote:
I've released new test-unit gem. It support Proc as user_message.
Great, thanks!
Should I update version in gems/bundled_gems?
I would say yes. But please confirm with Nobu or Yui or Hiroshi.
Kouhei Sutou wrote:
I've released new test-unit gem. It support Proc as user_message.
Should I update version in gems/bundled_gems?
It seem that Hiroshi has done this at r48180, and I have updated my checkout, but I still get the same error. I'm not sure why, but could it be because now both gems get installed? This is what gets shown at the end of 'make install-nodoc'
installing bundle gems: /usr/local/lib/ruby/gems/2.2.0 (build_info, cache, doc, extensions, gems, specifications)
DL is deprecated, please use Fiddle
minitest-5.4.1.gem
minitest-5.4.2.gem
power_assert-0.1.4.gem
test-unit-3.0.1.gem
test-unit-3.0.3.gem
- Status changed from Open to Closed
I close this issue because installing gem is another topic.
- Related to Bug #10457: Proc instead of String as error message still doesn't work (gem problem?) added
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0