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 -~----------~----~----~----~------~----~------~--~---