Weird test/unit behavior

Consider a simple test -

my_test.rb:

require ‘test/unit’

class MyTest < Test::Unit::TestCase

def test1
assert(true)
end

end

Now consider a simple script to run this.

run2.rb:

if ARGV.length == 0
puts “usage run testfile”
else
type = ARGV.shift
if type == “-t”
f = ARGV.shift
load f
end
end

So if you run it then you get the expected result.

run2 -t my_test.rb
Loaded suite ~sparkle:/nasir/misc/test/run2
Started
.
Finished in 0.0 seconds.

1 tests, 1 assertions, 0 failures, 0 errors

But now consider another script to run the same test.

run1.rb:

D:\nasir\misc\test>cat run1.rb
if ARGV.length == 0
puts “usage: run testfile”
else
ARGV.each_with_index do |arg, i|
if arg == “-t”
load ARGV[i+1]
end
end
end

When you run it the testcase is loaded alright but it doesnt run!

run1.rb -t my_test.rb
Loaded suite ~sparkle:/nasir/misc/test/run1
Started

Finished in 0.0 seconds.

0 tests, 0 assertions, 0 failures, 0 errors


Apparently the testsuite is not run/loaded in this case.

Any help in finding out what is going on is appreciated.

  • nasir

Ah Gotcha!

It is a side effect of having commandline arguments. ARGV is also used
by
autorunner.rb.
using shift in run2.rb clears the ARGV array.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs