Forum: Ruby ARGV and unit tests: different problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
160f35a4cf842233e9ad9e3f6346124e?d=identicon&s=25 yuricake (Guest)
on 2007-04-17 06:11
(Received via mailing list)
Hello,

  I am experiencing the following strange problem (this is present in
ruby versions 1.8.5 and 1.8.6): if I rely on the test suites to be run
automatically, the ARGV variable is no longer present inside the
testcases. If I run the test suites explicitly, the ARGV variable
remains the same. I do not understand if this is a bug or if I am
misunderstanding what the automatic test runner does.

The two code snippets below illustrate what I mean:

require "test/unit"
require "pp"
class TC_Mysql < Test::Unit::TestCase
  def setup()
    puts "inside"
    pp ARGV
  end
  def test_one()
    assert_equal(1, 1)
  end
end
puts "outside"
pp ARGV

if I run the above code with:

ruby test.rb Yo

I get the following output:

outside
["yo"]
Loaded suite args
Started
inside
[]

However, if I modify the code snippet to:

require "test/unit"
require "pp"
class TC_Mysql < Test::Unit::TestCase
  def setup()
    puts "inside"
    pp ARGV
  end
  def test_one()
    assert_equal(1, 1)
  end
end
puts "outside"
pp ARGV
require 'test/unit/ui/console/testrunner'
Test::Unit::UI::Console::TestRunner.run(TC_Mysql)

running it with

ruby test.rb Yo

I get the following output:

outside
["yo"]
Loaded suite TC_Mysql
Started
inside
["yo"]
97550977337c9f0a0e1a9553e55bfaa0?d=identicon&s=25 Jano Svitok (Guest)
on 2007-04-17 10:24
(Received via mailing list)
On 4/17/07, yuricake <yuricake@gmail.com> wrote:
>
> end
> ["yo"]
>   def setup()
> Test::Unit::UI::Console::TestRunner.run(TC_Mysql)
> Started
> inside
> ["yo"]

Hi,

your problem is caused by the fact that autorunner responds to some
command line arguments (run your suite with --help for the list). if
you want to pass arguments to your tests, use -- as a delimiter
between testrunner's and your arguments.

For very detailed info read lib/test/unit/autorunner.rb.

J.
This topic is locked and can not be replied to.