[#18436] [ANN] Ruby 1.9.1 feature freeze — "Yugui (Yuki Sonoda)" <yugui@...>

Hi all,

81 messages 2008/09/02
[#18667] Re: [ANN] Ruby 1.9.1 feature freeze — "Yusuke ENDOH" <mame@...> 2008/09/17

Hi,

[#18847] Re: [ANN] Ruby 1.9.1 feature freeze — "Yugui (Yuki Sonoda)" <yugui@...> 2008/09/24

Hi, Yusuke

[#18848] Re: [ANN] Ruby 1.9.1 feature freeze — "Yusuke ENDOH" <mame@...> 2008/09/24

Hi,

[#18886] Re: [ANN] Ruby 1.9.1 feature freeze — Ryan Davis <ryand-ruby@...> 2008/09/25

[#18889] Re: [ANN] Ruby 1.9.1 feature freeze — SASADA Koichi <ko1@...> 2008/09/25

Ryan Davis wrote:

[#18906] Re: [ANN] Ruby 1.9.1 feature freeze — Dave Thomas <dave@...> 2008/09/25

[#18908] Re: [ANN] Ruby 1.9.1 feature freeze — SASADA Koichi <ko1@...> 2008/09/25

Dave Thomas wrote:

[#19032] Re: [ANN] Ruby 1.9.1 feature freeze — Ryan Davis <ryand-ruby@...> 2008/09/30

[#19036] Re: [ANN] Ruby 1.9.1 feature freeze — Jim Weirich <jim.weirich@...> 2008/09/30

[#19039] Re: [ANN] Ruby 1.9.1 feature freeze — Ryan Davis <ryand-ruby@...> 2008/09/30

[#19042] Re: [ANN] Ruby 1.9.1 feature freeze — Dave Thomas <dave@...> 2008/09/30

[#19195] Re: [ANN] Ruby 1.9.1 feature freeze — Ryan Davis <ryand-ruby@...> 2008/10/08

[#19202] Re: [ANN] Ruby 1.9.1 feature freeze — "Austin Ziegler" <halostatue@...> 2008/10/08

On Wed, Oct 8, 2008 at 3:05 AM, Ryan Davis <ryand-ruby@zenspider.com> wrote=

[#19203] Re: [ANN] Ruby 1.9.1 feature freeze — Paul Brannan <pbrannan@...> 2008/10/08

On Wed, Oct 08, 2008 at 09:28:22PM +0900, Austin Ziegler wrote:

[#18452] [ANN] Ruby 1.9.1 feature freeze — "Roger Pack" <rogerpack2005@...>

Would it be possible to have a few patches applied before freeze [if

27 messages 2008/09/04
[#18471] Re: [ANN] Ruby 1.9.1 feature freeze — Yukihiro Matsumoto <matz@...> 2008/09/06

Hi,

[#18490] Re: [ANN] Ruby 1.9.1 feature freeze — Nobuyoshi Nakada <nobu@...> 2008/09/08

Hi,

[#18486] Ruby 1.9 strings & character encoding — "Michael Selig" <michael.selig@...>

Firstly, I apologise if I am going over old ground here - I haven't been

39 messages 2008/09/08
[#18492] Re: Ruby 1.9 strings & character encoding — Yukihiro Matsumoto <matz@...> 2008/09/08

Hi,

[#18494] Re: Ruby 1.9 strings & character encoding — "Michael Selig" <michael.selig@...> 2008/09/08

On Mon, 08 Sep 2008 19:45:36 +1000, Yukihiro Matsumoto

[#18499] Re: Ruby 1.9 strings & character encoding — "NARUSE, Yui" <naruse@...> 2008/09/08

Hi,

[#18500] Re: Ruby 1.9 strings & character encoding — Tim Bray <Tim.Bray@...> 2008/09/08

On Sep 8, 2008, at 10:43 AM, NARUSE, Yui wrote:

[#18515] Re: Ruby 1.9 strings & character encoding — Urabe Shyouhei <shyouhei@...> 2008/09/09

# First off, I'm neutral to this issue

[#18530] Re: Ruby 1.9 strings & character encoding — Tim Bray <Tim.Bray@...> 2008/09/10

On Sep 8, 2008, at 9:06 PM, Urabe Shyouhei wrote:

[#18533] Re: Ruby 1.9 strings & character encoding — Tanaka Akira <akr@...> 2008/09/10

In article <3119E5AB-AEC8-4FEE-B2FA-8C75482E0E9D@sun.com>,

[#18504] Re: Ruby 1.9 strings & character encoding — "Michael Selig" <michael.selig@...> 2008/09/09

On Tue, 09 Sep 2008 03:43:54 +1000, NARUSE, Yui <naruse@airemix.jp> wrote:

[#18572] Working on CSV's Encoding Support — James Gray <james@...>

I'm trying to get the standard CSV library ready for m17n in Ruby

23 messages 2008/09/13
[#18575] Re: Working on CSV's Encoding Support — James Gray <james@...> 2008/09/14

On Sep 13, 2008, at 5:39 PM, James Gray wrote:

[#18576] Re: Working on CSV's Encoding Support — "Michael Selig" <michael.selig@...> 2008/09/14

On Sun, 14 Sep 2008 14:48:47 +1000, James Gray <james@grayproductions.net>

[#18640] Character encodings - a radical suggestion — "Michael Selig" <michael.selig@...>

Hi,

89 messages 2008/09/17
[#18643] Re: Character encodings - a radical suggestion — James Gray <james@...> 2008/09/17

On Sep 16, 2008, at 8:20 PM, Michael Selig wrote:

[#18647] Re: Character encodings - a radical suggestion — "Michael Selig" <michael.selig@...> 2008/09/17

On Wed, 17 Sep 2008 12:51:14 +1000, James Gray <james@grayproductions.net>

[#18658] Re: Character encodings - a radical suggestion — James Gray <james@...> 2008/09/17

On Sep 16, 2008, at 11:21 PM, Michael Selig wrote:

[#18660] Re: Character encodings - a radical suggestion — "NARUSE, Yui" <naruse@...> 2008/09/17

Hi,

[#18663] Re: Character encodings - a radical suggestion — Matthias Wächter <matthias@...> 2008/09/17

On 9/17/2008 3:39 PM, NARUSE, Yui wrote:

[#18666] Re: Character encodings - a radical suggestion — Yukihiro Matsumoto <matz@...> 2008/09/17

Hi,

[#18728] Re: Character encodings - a radical suggestion — Martin Duerst <duerst@...> 2008/09/19

At 00:01 08/09/18, Yukihiro Matsumoto wrote:

[#18729] Re: Character encodings - a radical suggestion — Yukihiro Matsumoto <matz@...> 2008/09/19

Hi,

[#18732] Re: Character encodings - a radical suggestion — "Michael Selig" <michael.selig@...> 2008/09/19

On Fri, 19 Sep 2008 18:24:41 +1000, Yukihiro Matsumoto

[#18734] Re: Character encodings - a radical suggestion — Yukihiro Matsumoto <matz@...> 2008/09/19

Oops, I misfired my mail reader; the following is the right one:

[#18751] Re: Character encodings - a radical suggestion — "Michael Selig" <michael.selig@...> 2008/09/20

On Fri, 19 Sep 2008 19:52:30 +1000, Yukihiro Matsumoto

[#18761] Re: Character encodings - a radical suggestion — Yukihiro Matsumoto <matz@...> 2008/09/20

Hi,

[#18774] Re: Character encodings - a radical suggestion — "Michael Selig" <michael.selig@...> 2008/09/21

On Sun, 21 Sep 2008 02:05:30 +1000, Yukihiro Matsumoto

[#18776] Re: Character encodings - a less radical suggestion — Martin Duerst <duerst@...> 2008/09/22

Hello Michael,

[#18664] Re: Character encodings - a radical suggestion — Yukihiro Matsumoto <matz@...> 2008/09/17

Hi,

[#18762] [Feature #578] add method to disassemble Proc objects — Roger Pack <redmine@...>

Feature #578: add method to disassemble Proc objects

17 messages 2008/09/20

[#18872] [RIP] Guy Decoux. — "Jean-Fran輟is Tr穗" <jftran@...>

Hello,

14 messages 2008/09/24

[#18899] refute_{equal, match, nil, same} is not useful — Fujioka <fuj@...>

Hi,

27 messages 2008/09/25

[#18937] A stupid question... — Dave Thomas <dave@...>

Just what was wrong with Test::Unit? Sure, it was slightly bloated.

25 messages 2008/09/25
[#18941] Re: A stupid question... — "Berger, Daniel" <Daniel.Berger@...> 2008/09/25

> -----Original Message-----

[#19004] Let Ruby be Ruby — Trans <transfire@...> 2008/09/28

[#18986] miniunit problems and release of Ruby 1.9.0-5 — "Yugui (Yuki Sonoda)" <yugui@...>

Hi,

14 messages 2008/09/27

[#19043] Ruby is "stealing" names from operating system API:s — "Johan Holmberg" <johan556@...>

Hi!

13 messages 2008/09/30

[ruby-core:18905] output format of miniunit

From: "Yusuke ENDOH" <mame@...>
Date: 2008-09-25 12:49:37 UTC
List: ruby-core #18905
Hi,

The output format of miniunit changed dramatically from one of Test::Unit.
I think that compatibility must be more respected because Test::Unit is not
deprecated but removed and because we don't have the time to discuss change
of the behavior/specification.
In addition, I believe that the old format is easy to see in many aspects.


So I insist:

(1) miniunit should use pretty_inspect.  Currently, long message that
    spreads to multiple lines is never human-readable.  If you mind speed,
    I think it's a good solution to provide a command-line option that
    disables use of pretty_print.  At least, it should provide a option
    that enables pretty_inspect.

(2) An expected and actual values should be put in angle brackets, like
    <"foo">.  This is very helpful to distinguish values and template
    messages by a glance.

(3) An expected and actual values should be put at head of line.  This also
    improves visibility much.


Thank you for consideration,


Here is an instant patch (I didn't test enough):

Index: lib/mini/test.rb
===================================================================
--- lib/mini/test.rb	(revision 19552)
+++ lib/mini/test.rb	(working copy)
@@ -43,11 +43,28 @@

   module Assertions
     def mu_pp(obj)
-      s = obj.inspect
+      if Assertions.use_pp
+        begin
+          require 'pp'
+        rescue LoadError
+          Assertions.use_pp = false
+        end
+        s = obj.pretty_inspect.chomp
+      else
+        s = obj.inspect
+      end
       s = s.force_encoding(Encoding.default_external) if defined? Encoding
       s
     end

+    def Assertions.use_pp=(f)
+      @use_pp = f
+    end
+
+    def Assertions.use_pp
+      @use_pp
+    end
+
     def _assertions= n
       @_assertions = n
     end
@@ -57,7 +74,7 @@
     end

     def assert test, msg = nil
-      msg ||= "Failed assertion, no message given."
+      msg ||= "failed assertion, no message given."
       self._assertions += 1
       unless test then
         msg = msg.call if Proc === msg
@@ -67,24 +84,24 @@
     end

     def assert_block msg = nil
-      msg = message(msg) { "Expected block to return true value" }
+      msg = message(msg) { "block expected to return true value" }
       assert yield, msg
     end

     def assert_empty obj, msg = nil
-      msg = message(msg) { "Expected #{obj.inspect} to be empty" }
+      msg = message(msg) { "empty expected but was\n<#{mu_pp(obj)}>" }
       assert_respond_to obj, :empty?
       assert obj.empty?, msg
     end

     def assert_equal exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(exp)}, not #{mu_pp(act)}" }
+      msg = message(msg) { "<#{mu_pp(exp)}> expected but
was\n<#{mu_pp(act)}>" }
       assert(exp == act, msg)
     end

     def assert_in_delta exp, act, delta = 0.001, msg = nil
       n = (exp - act).abs
-      msg = message(msg) { "Expected #{exp} - #{act} (#{n}) to be < #{delta}" }
+      msg = message(msg) { "<#{exp}> and\n<#{act}> expected to be
within\n<#{delta}> of each other" }
       assert delta > n, msg
     end

@@ -93,39 +110,39 @@
     end

     def assert_includes collection, obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(collection)} to include
#{mu_pp(obj)}" }
+      msg = message(msg) { "<#{mu_pp(collection)}> expected to
include\n<#{mu_pp(obj)}>" }
       assert_respond_to collection, :include?
       assert collection.include?(obj), msg
     end

     def assert_instance_of cls, obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to be an instance
of #{cls}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> expected to be an
instance of\n<#{cls}> but was\n<#{obj.class}>" }
       flip = (Module === obj) && ! (Module === cls) # HACK for specs
       obj, cls = cls, obj if flip
       assert cls === obj, msg
     end

     def assert_kind_of cls, obj, msg = nil # TODO: merge with instance_of
-      msg = message(msg) { "Expected #{mu_pp(obj)} to be a kind of #{cls}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> expected to be
kind_of?\n<#{cls}> but was\n<#{obj.class}>" }
       flip = (Module === obj) && ! (Module === cls) # HACK for specs
       obj, cls = cls, obj if flip
       assert obj.kind_of?(cls), msg
     end

     def assert_match exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(act)} to match #{mu_pp(exp)}" }
+      msg = message(msg) { "<#{mu_pp(act)}> expected to be
=~\n<#{mu_pp(exp)}>" }
       assert_respond_to act, :=~
       exp = /#{exp}/ if String === exp && String === act
       assert act =~ exp, msg
     end

     def assert_nil obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to be nil" }
+      msg = message(msg) {"<#{mu_pp(obj)}> expected to be nil" }
       assert obj.nil?, msg
     end

     def assert_operator o1, op, o2, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(o1)} to be #{op} #{mu_pp(o2)}" }
+      msg = message(msg) { "<#{mu_pp(o1)}> expected to
be\n#{op}\n<#{mu_pp(o2)}>" }
       assert o1.__send__(op, o2), msg
     end

@@ -136,43 +153,42 @@
         yield
         should_raise = true
       rescue Exception => e
-        assert_includes exp, e.class
-        exception_details(e, "<#{mu_pp(exp)}> exception expected, not")
+        assert_includes exp, e.class, exception_details(e,
"<#{mu_pp(exp)}> exception expected but was\n")
         return e
       end

       exp = exp.first if exp.size == 1
-      fail "#{mu_pp(exp)} expected but nothing was raised." if should_raise
+      fail "<#{mu_pp(exp)}> exception expected but nothing was
raised." if should_raise
     end

     def assert_respond_to obj, meth, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to respond to #{meth}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> of type <#{obj.class}>
expected to respond_to?<#{meth}>" }
       flip = (Symbol === obj) && ! (Symbol === meth) # HACK for specs
       obj, meth = meth, obj if flip
       assert obj.respond_to?(meth), msg
     end

     def assert_same exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(act)} to be the same as
#{mu_pp(exp)}" }
+      msg = message(msg) { "<#{mu_pp(exp)}> with id
<#{exp.object_id}> expected to be equal? to\n<#{mu_pp(act)}> with id
<#{act.object_id}>" }
       assert exp.equal?(act), msg
     end

     def assert_send send_ary, msg = nil
-      recv, msg, *args = send_ary
-      msg = message(msg) { "Expected ##{msg} on #{mu_pp(recv)} to
return true" }
-      assert recv.__send__(msg, *args), msg
+      recv, meth, *args = send_ary
+      msg = message(msg) { "#{mu_pp(recv)} expected to respond
to\n<#{meth}(#{mu_pp(args)})> with a true value" }
+      assert recv.__send__(meth, *args), msg
     end

     def assert_throws sym, msg = nil
-      default = "Expected #{mu_pp(sym)} to have been thrown"
+      default = "<#{mu_pp(sym)}> should have been thrown"
       caught = true
       catch(sym) do
         begin
           yield
         rescue ArgumentError => e     # 1.9 exception
-          default += ", not #{e.message.split(/ /).last}"
+          default += " but\n<#{e.message.split(/ /).last}> was thrown"
         rescue NameError => e         # 1.8 exception
-          default += ", not #{e.name.inspect}"
+          default += " but\n<#{e.name.inspect}> was thrown"
         end
         caught = false
       end
@@ -225,24 +241,25 @@
     end

     def refute test, msg = nil
-      msg ||= "Failed refutation, no message given"
+      msg ||= "failed refutation, no message given"
       not assert(! test, msg)
     end

     def refute_empty obj, msg = nil
-      msg = message(msg) { "Expected #{obj.inspect} to not be empty" }
+      msg = message(msg) { "empty not expected but was\n#{obj.inspect}" }
       assert_respond_to obj, :empty?
       refute obj.empty?, msg
     end

     def refute_equal exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(act)} to not be equal to
#{mu_pp(exp)}" }
+      msg = message(msg) { "<#{mu_pp(exp)}> not expected but
was\n<#{mu_pp(act)}>"  }
       refute exp == act, msg
     end

     def refute_in_delta exp, act, delta = 0.001, msg = nil
       n = (exp - act).abs
-      msg = message(msg) { "Expected #{exp} - #{act} (#{n}) to not be
< #{delta}" }
+      msg = message(msg) { "<#{exp}> and\n<#{act}> not expected to be
within\n<#{del
+      ta}> of each other" }
       refute delta > n, msg
     end

@@ -251,49 +268,49 @@
     end

     def refute_includes collection, obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(collection)} to not
include #{mu_pp(obj)}" }
+      msg = message(msg) { "<#{mu_pp(collection)}> not expected to
include\n<#{mu_pp(obj)}>" }
       assert_respond_to collection, :include?
       refute collection.include?(obj), msg
     end

     def refute_instance_of cls, obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to not be an
instance of #{cls}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> not expected to be an
instance of\n<#{cls}> but was\n<#{obj.class}>" }
       flip = (Module === obj) && ! (Module === cls) # HACK for specs
       obj, cls = cls, obj if flip
       refute cls === obj, msg
     end

     def refute_kind_of cls, obj, msg = nil # TODO: merge with instance_of
-      msg = message(msg) { "Expected #{mu_pp(obj)} to not be a kind
of #{cls}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> not expected to be
kind_of?\n<#{cls}> but was\n<#{obj.class}>" }
       flip = (Module === obj) && ! (Module === cls) # HACK for specs
       obj, cls = cls, obj if flip
       refute obj.kind_of?(cls), msg
     end

     def refute_match exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(act)} to not match
#{mu_pp(exp)}" }
+      msg = message(msg) { "<#{mu_pp(act)}> not expected to be
=~\n<#{mu_pp(exp)}>" }
       refute act =~ exp, msg
     end

     def refute_nil obj, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to not be nil" }
+      msg = message(msg) {"<#{mu_pp(obj)}> not expected to be nil" }
       refute obj.nil?, msg
     end

     def refute_operator o1, op, o2, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(o1)} to not be #{op}
#{mu_pp(o2)}" }
+      msg = message(msg) { "<#{mu_pp(o1)}> not expected to
be\n#{op}\n<#{mu_pp(o2)}>" }
       refute o1.__send__(op, o2), msg
     end

     def refute_respond_to obj, meth, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(obj)} to not respond to #{meth}" }
+      msg = message(msg) { "<#{mu_pp(obj)}> of type <#{obj.class}>
not expected to respond_to?<#{meth}>" }
       flip = (Symbol === obj) && ! (Symbol === meth) # HACK for specs
       obj, meth = meth, obj if flip
       refute obj.respond_to?(meth), msg
     end

     def refute_same exp, act, msg = nil
-      msg = message(msg) { "Expected #{mu_pp(act)} to not be the same
as #{mu_pp(exp)}" }
+      msg = message(msg) { "<#{mu_pp(exp)}> with id
<#{exp.object_id}> not expected to be equal? to\n<#{mu_pp(act)}> with
id <#{act.object_id}>" }
       refute exp.equal?(act), msg
     end
   end
@@ -347,6 +364,7 @@

     def run args
       @verbose = args.delete('-v')
+      Assertions.use_pp = true if args.delete('-pp')

       filter = if args.first =~ /^(-n|--name)$/ then
                  args.shift

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

In This Thread

Prev Next