[#15359] Timeout::Error — Jeremy Thurgood <jerith@...>

Good day,

41 messages 2008/02/05
[#15366] Re: Timeout::Error — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 5, 2008, at 06:20 AM, Jeremy Thurgood wrote:

[#15370] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Eric Hodel wrote:

[#15373] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15374] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Nobuyoshi Nakada wrote:

[#15412] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15413] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/07

Nobuyoshi Nakada wrote:

[#15414] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15360] reopen: can't change access mode from "w+" to "w"? — Sam Ruby <rubys@...>

I ran 'rake test' on test/spec [1], using

16 messages 2008/02/05
[#15369] Re: reopen: can't change access mode from "w+" to "w"? — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15389] STDIN encoding differs from default source file encoding — Dave Thomas <dave@...>

This seems strange:

21 messages 2008/02/06
[#15392] Re: STDIN encoding differs from default source file encoding — Yukihiro Matsumoto <matz@...> 2008/02/06

Hi,

[#15481] very bad character performance on ruby1.9 — "Eric Mahurin" <eric.mahurin@...>

I'd like to bring up the issue of how characters are represented in

16 messages 2008/02/10

[#15528] Test::Unit maintainer — Kouhei Sutou <kou@...>

Hi Nathaniel, Ryan,

22 messages 2008/02/13

[#15551] Proc#curry — ts <decoux@...>

21 messages 2008/02/14
[#15557] Re: [1.9] Proc#curry — David Flanagan <david@...> 2008/02/15

ts wrote:

[#15558] Re: [1.9] Proc#curry — Yukihiro Matsumoto <matz@...> 2008/02/15

Hi,

[#15560] Re: Proc#curry — Trans <transfire@...> 2008/02/15

[#15585] Ruby M17N meeting summary — Martin Duerst <duerst@...>

This is a rough translation of the Japanese meeting summary

19 messages 2008/02/18

[#15596] possible bug in regexp lexing — Ryan Davis <ryand-ruby@...>

current:

17 messages 2008/02/19

[#15678] Re: [ANN] MacRuby — "Rick DeNatale" <rick.denatale@...>

On 2/27/08, Laurent Sansonetti <laurent.sansonetti@gmail.com> wrote:

18 messages 2008/02/28
[#15679] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 6:33 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#15680] Re: [ANN] MacRuby — Yukihiro Matsumoto <matz@...> 2008/02/28

Hi,

[#15683] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 1:51 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

Re: Test::Unit maintainer

From: Phlip <phlip2005@...>
Date: 2008-02-16 17:19:50 UTC
List: ruby-core #15576
Berger, Daniel wrote:

> I have a few feature requests:
> 
> First, a skip method that I can use within the test cases, along the
> ability to specify the reason why, and are reported in the final output
> as "skipped".

Hmm. The test zealots around here (such as me) will tell you if a test fails you 
should revert your code and try again. However, those with real-world experience 
(such as me), will also tell you that skipping tests is a fact of life - 
especially as your test KLOC exceeds the 5s...

> Second, a startup and shutdown method that only run once per test case
> (as opposed to once per test). Handy for database connections and the
> like.

And those same test zealots will demand better "test isolation". Expensive setup 
is a "design smell", and an opportunity to use mock systems like Mocha.

That said, here's a brute-force attempt at your patches, from 1.9, with 
apologies and excuses below it!

   def suite_setup
     p "doin' somethin' heavy!"
   end

   def suite_teardown
     p "hide it before they catch us"
   end

   def test_skipme
     skip 'my foot\'s asleep'
     assert false, 'yet we pass'
   end
...

module Test
   module Unit
     class TestCase
       class Skipped < Exception
         def initialize(why); @why = why; end
         attr_reader :why
       end
       def skip(why)
         raise Skipped.new(why)
       end
       def run(result)
         yield(STARTED, name)
         @_result = result
         begin
           setup
           __send__(@method_name)
         rescue Skipped => e
           print '-skipped:'
           print e.why
         rescue AssertionFailedError => e
           add_failure(e.message, e.backtrace)
         rescue Exception
           raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
           add_error($!)
         ensure
           begin
             teardown
           rescue AssertionFailedError => e
             add_failure(e.message, e.backtrace)
           rescue Exception
             raise if PASSTHROUGH_EXCEPTIONS.include? $!.class
             add_error($!)
           end
         end
         result.add_run
         yield(FINISHED, name)
       end
     end
   end
end

module Test
   module Unit
     class TestSuite
       def run(result, &progress_block)
         yield(STARTED, name)
         a_case = @tests.first
         a_case.suite_setup if a_case and a_case.respond_to?(:suite_setup)
         @tests.each do |test|
           test.run(result, &progress_block)
         end
       ensure
         a_case.suite_teardown if a_case and a_case.respond_to?(:suite_teardown)
         yield(FINISHED, name)
       end
     end
   end
end

Those monkey-patches went a bit long. (If you simply must use them, paste them 
into the equivalent of your test_helper.rb!) The first one is long because def 
run(result) has to be long. Short monkey-patches, like any kind of incremental 
changes, are naturally much safer than long ones at upgrade time.

It appears that def run(result) must be long because (correct me whether or not 
I'm wrong) Ruby will not allow us to refactor a long chain of typed 'rescue' 
lines into some cute pattern. ( Maybe we can .curry them! ;-)

So there's your first two requests. And note that they might indeed be hard to 
gemify, if they must cohere so strongly with the exact center of RubyUnit!

-- 
   Phlip
   http://flea.sourceforge.net/PiglegToo_1.html

In This Thread