Project

General

Profile

Bug #10430

Proc instead of String as error message doesn't work.

Added by duerst (Martin Dürst) over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 2.2.0dev (2014-10-26 trunk 48146) [x86_64-cygwin]
[ruby-core:65913]

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.


Related issues

Related to Ruby master - Bug #10457: Proc instead of String as error message still doesn't work (gem problem?)Closedhsbt (Hiroshi SHIBATA)Actions

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • 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?

Updated by duerst (Martin Dürst) over 5 years ago

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?

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Feedback

test-all should use libraries under test/lib, not the gems.
Do you set RUBYOPT?

Updated by duerst (Martin Dürst) over 5 years ago

  • 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?

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • 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.

Updated by duerst (Martin Dürst) over 5 years ago

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.

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

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

Updated by duerst (Martin Dürst) over 5 years ago

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, 是非よろしくお願いします。

Updated by duerst (Martin Dürst) over 5 years ago

  • Status changed from Closed to Open
  • Assignee changed from nobu (Nobuyoshi Nakada) to kou (Kouhei Sutou)

Updated by kou (Kouhei Sutou) over 5 years ago

I've released new test-unit gem. It support Proc as user_message.

Should I update version in gems/bundled_gems?

Updated by duerst (Martin Dürst) over 5 years ago

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.

Updated by duerst (Martin Dürst) over 5 years ago

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

Updated by kou (Kouhei Sutou) over 5 years ago

  • Status changed from Open to Closed

I close this issue because installing gem is another topic.

Updated by duerst (Martin Dürst) over 5 years ago

  • Related to Bug #10457: Proc instead of String as error message still doesn't work (gem problem?) added

Also available in: Atom PDF