# Bug in Test Unit?

**URL:** <https://www.ruby-forum.com/t/bug-in-test-unit/131739>\
**Category:** Ruby\
**Created:** [March 12, 2008, 10:04pm UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739 "2008-03-12T22:04:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [March 12, 2008, 10:04pm UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739/1 "2008-03-12T22:04:18Z")

</div>

In unit.rb with “ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]”

at\_exit do  
unless $! || Test::Unit.run?  
exit Test::Unit::AutoRunner.run  
end  
end

if Test::Unit.run is set as false the autorunner will run, if it is set  
as  
true the autorunner will not run.  
I don’t think this was the intention.

It should read as  
unless $! && ! Test::Unit.run?

or (more readable).  
if Test::Unit.run? && $!.nil?

Unless I am missing somethig…

Thanks  
Nasir

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [March 13, 2008, 2:07am UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739/2 "2008-03-13T02:07:29Z")

</div>

On Mar 12, 2008, at 14:03 , Nasir K. wrote:

> In unit.rb with “ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]”
> 
> at\_exit do  
> unless $! || Test::Unit.run?  
> exit Test::Unit::AutoRunner.run  
> end  
> end

not a bug… just bad English. It should be #ran?, not #run?.

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [March 13, 2008, 4:34am UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739/3 "2008-03-13T04:34:44Z")

</div>

Well, if you see a few lines above that in unit.rb

module Unit  
# If set to false Test::Unit will not automatically run at exit.  
def self.run=(flag)  
@run = flag  
end

Now to me this reads as if you set the flag to true the tests will run  
on  
exit and if set to false the tests will not run on exit.

This is obviously not what will happen when  
at\_exit do  
unless $! || Test::Unit.run?  
exit Test::Unit::AutoRunner.run  
end  
end

is executed, but the exact opposite.

Nasir

On Wed, Mar 12, 2008 at 9:06 PM, Ryan D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [March 13, 2008, 7:55am UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739/4 "2008-03-13T07:55:49Z")

</div>

On Thu, Mar 13, 2008 at 4:33 AM, Nasir K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Nasir  
> This was reported by Slavomir Hudak as rubyforge bug #18041 – Unit  
> tests auto-run bug  
> My solution was to change the comment from “set to false” to “set to  
> true” 😉

[http://rubyforge.org/tracker/index.php?func=detail&aid=18041&group\_id=426&atid=1698](http://rubyforge.org/tracker/index.php?func=detail&aid=18041&group_id=426&atid=1698)

J.

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [March 13, 2008, 6:57pm UTC](https://www.ruby-forum.com/t/bug-in-test-unit/131739/5 "2008-03-13T18:57:50Z")

</div>

Agree. This is how I am using it now.

Thanks  
Nasir
