I hope that someone here can identify what is going on as I am
completely frustrated at the moment.
I am writing a custom rake task for rcov.  The intent is top produce
three variants of a test, each using slightly different options.  This
is the basic code:
  R_RCOV_AGGREG_FILE    = ''coverage.data''
  # Use single quotes here so that regexp argument is not munged.
  R_RCOV_EXCLUDE_DIR    = ''lib\/ruby,lib64\/ruby''
  R_RCOV_OUTPUT_DIR     = ''test_coverage''
  R_RCOV_AGGREG_OPTS    = "--aggregate #{R_RCOV_AGGREG_FILE} " +
                        "--text-summary --no-html "
  R_RCOV_BASIC_OPTS     = [ " --rails ", " --exclude
#{R_RCOV_EXCLUDE_DIR} " ]
  R_RCOV_FINAL_OPTS     = " --aggregate #{R_RCOV_AGGREG_FILE} "
  R_RCOV_BROWSER        = ''firefox''
  # make the output directory an array.
  r_rcov_dir  = R_RCOV_OUTPUT_DIR.scan(/\w+/)
  [ ''single'', ''aggregate'',
''final'' ].each do |reptype|
    # Set the rcov options variables according to report type
    r_rcov_opta = nil                 if reptype == ''single''
    r_rcov_opta = R_RCOV_AGGREG_OPTS  if reptype ==
''aggregate''
    r_rcov_opta = R_RCOV_FINAL_OPTS   if reptype == ''final''
    # builds task int_testunit_X
    Rcov::RcovTask.new("int_testunit_#{reptype}") do |t|
      t.test_files    =  FileList[''test/**/test*.rb'']
      t.libs          << "test"
      t.output_dir    =  r_rcov_dir
      t.rcov_opts     =  R_RCOV_BASIC_OPTS
      t.rcov_opts     << r_rcov_opta
      puts "testunit #{reptype}    opts: #{R_RCOV_BASIC_OPTS} size " +
            "#{R_RCOV_BASIC_OPTS.size}"
      puts " "
      puts "testunit #{reptype}    opta: #{r_rcov_opta}"
      puts " "
      puts "testunit #{reptype} options: #{t.rcov_opts}"
      puts " "
      t.verbose       =  true
    end
  end
The problem is this. Somewhere the constant value R_RCOV_BASIC_OPTS is
being changed.  A rake run using puts and displaying
R_RCOV_BASIC_OPTS.size gives this output:
testunit single    opts:  --rails  --exclude lib\/ruby,lib64\/ruby  size
5
testunit single    opta:
testunit single options:  --rails  --exclude lib\/ruby,lib64\/ruby
testunit aggregate    opts:  --rails  --exclude lib\/ruby,lib64\/ruby
--aggregate coverage.data --text-summary --no-html --aggregate
coverage.data --text-summary --no-html --aggregate coverage.data
--text-summary --no-html  size 8
testunit aggregate    opta: --aggregate coverage.data --text-summary
--no-html
testunit aggregate options:  --rails  --exclude lib\/ruby,lib64\/ruby
--aggregate coverage.data --text-summary --no-html --aggregate
coverage.data --text-summary --no-html --aggregate coverage.data
--text-summary --no-html
testunit final    opts:  --rails  --exclude lib\/ruby,lib64\/ruby
--aggregate coverage.data --text-summary --no-html --aggregate
coverage.data --text-summary --no-html --aggregate coverage.data
--text-summary --no-html  --aggregate coverage.data  --aggregate
coverage.data  --aggregate coverage.data  size 11
testunit final    opta:  --aggregate coverage.data
testunit final options:  --rails  --exclude lib\/ruby,lib64\/ruby
--aggregate coverage.data --text-summary --no-html --aggregate
coverage.data --text-summary --no-html --aggregate coverage.data
--text-summary --no-html  --aggregate coverage.data  --aggregate
coverage.data  --aggregate coverage.data
Checking my rake task lists only these places where R-RCOV_BASIC_OPTS is
referenced:
  22   R_RCOV_BASIC_OPTS     = [ " --rails ", " --exclude
#{R_RCOV_EXCLUDE_DIR} " ]
  57       t.rcov_opts     =  R_RCOV_BASIC_OPTS
  68       t.rcov_opts     =  R_RCOV_BASIC_OPTS
  77       t.rcov_opts     =  R_RCOV_BASIC_OPTS
  79       puts "testunit #{reptype}    opts: #{R_RCOV_BASIC_OPTS} size
" +
  80             "#{R_RCOV_BASIC_OPTS.size}"
How is constant getting its value changed?
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---