Ruby手工测试正确,rcov测试失败的解决
下述情况出现的几率非常小,但是碰到了又挺难理解
背景:
新安装的LEOPARD 上安装了新的ruby 1.8.7, 路径在/opt
gem 安装 rcov
现象:
ruby test.rb
正确
rcov
分析:
分析了半天,突然想起来没有安装过rubygem
查看 gem 路径在/usr,也就是说gem 安装的包自动配制了/usr下系统安装的ruby,版本为1.8.6
解决:
下载并安装了新的rubygem,配制到/opt路径下,一切解决
验证:
分析认为是源代码中使用了1.8.7的新特性,验证如下
1.8.6
>> require 'set'
=> true
>> a = [[1].to_set,[2].to_set].to_set
=> #<Set: {#<Set: {2}>, #<Set: {1}>}>
>> a.include?([1].to_set)
=> false
irb(main):001:0> require 'set'
=> true
irb(main):002:0> a = [[1].to_set,[2].to_set].to_set
=> #<Set: {#<Set: {1}>, #<Set: {2}>}>
irb(main):003:0> a.include?([1].to_set)
=> true
差别就出来了,集合的集合对于包含元素的判别在两个版本中是不一致的