From: ChrisKaelin Date: 2007-04-17T08:15:05+09:00 Subject: Re: unit-test ARGV problem (only 1 of 3 tests is using it) On 14 Apr., 00:44, Ryan Davis wrote: > On Apr 13, 2007, at 09:10 , ChrisKaelin wrote: > > > I have 3 tests using the following setup routine, that is faking > > command line arguments via ARGV. > > Only one of my 3 test routines seems to be actually using the ARGV > > defined here (but the @run1 seems to be initialized, so I know at > > least, the setup routine is called by each test). Am I missing > > anything? I thought the setup routine is called for every test? > > setup IS called for every test. > > > > > def setup > > # faking commandline arguments first > > # no space here or the space will be > > # part of the filenames ;-) > > if RUBY_PLATFORM =~ /mswin32/ > > #ARGV[1] = "-h" > > ARGV[1] = "-ltestlogfile" > > ARGV[2] = "-cdefault_config.yml" > > ARGV[3] = "-pC:\\TEMP" > > ARGV[4] = "-L4" > > ARGV[5] = "-v" > > else > > ARGV[1] = "-ltestlogfile" > > ARGV[2] = "-cdefault_config.yml" > > ARGV[3] = "-p\/tmp" > > end > > @run1 = TheScript.new > > @run1.set_vars > > end > > Try this instead: > > def setup > ARGV.clear > ARGV.push("-ltestlogfile", "-cdefault_config.yml") > if RUBY_PLATFORM =~ /mswin32 then > ARGV.push("-pC:\\TEMP", "-L4", "-v") > else > ARGV.push("-p\/tmp") > end > end > > I think the main problem is that ARGV is zero based and you're not > respecting that by manually placing the elements in. Yeah, probably that was why it only worked one round... I will try your solution, so I can go back to use the correct way of the options parse. Thanks a lot!