Hello,

I have been trying to get cucumber working with MacRuby, and I have run into a bug. I have tracked the source of it down to a block of code in cucumber's code base[BLOCK 1]. I have condensed this down to a much smaller example[BLOCK 2]. In ruby 1.9.1 the second block results in 'yellow,bold', but in macruby the second block results in nil.

My guess is that there is a bug in the merge implementation or the constructor implementation. I am not familiar enough with ruby to know which, so I will take a look at both. I feel this should be added as a test case, but I am not sure where to put that, since I am new to the project. Any tips?

-Scott

----- BLOCK 1 ----------
      ALIASES = Hash.new do |h,k|
        if k.to_s =~ /(.*)_param/
          h[$1] + ',bold'
        end
      end.merge({
        'missing' => 'yellow',
        'pending' => 'yellow',
        'failed'  => 'red',
        'passed'  => 'green',
        'outline' => 'cyan',
        'skipped' => 'cyan',
        'comment' => 'grey',
        'tag'     => 'blue'
      })

if ENV['CUCUMBER_COLORS'] # Example: export CUCUMBER_COLORS="passed=red:failed=yellow"
        ENV['CUCUMBER_COLORS'].split(':').each do |pair|
          a = pair.split('=')
          ALIASES[a[0]] = a[1]
        end
      end

      ALIASES.each do |method, color|
        unless method =~ /.*_param/
          code = <<-EOF
          def #{method}(string=nil, &proc)
#{ALIASES[method].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method].split(",").length}
          end
          # This resets the colour to the non-param colour
          def #{method}_param(string=nil, &proc)
#{ALIASES[method+'_param'].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method+'_param'].split(",").length} + #{ALIASES[method].split(",").join(' + ')}
          end
          EOF
          eval(code)
        end
      end
-------------- END BLOCK 1 --------------

------- BLOCK 2 ------------------

ALIASES = Hash.new do |h,k|
  if k.to_s =~ /(.*)_param/
    h[$1] + ',bold'
  end
end.merge({
  'missing' => 'yellow'
})

puts ALIASES['missing_param']

--------- END BLOCK 2 ---------
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to