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
1.8.7


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

差别就出来了,集合的集合对于包含元素的判别在两个版本中是不一致的

 

posted @ 2008-10-16 21:06  Tachikoma  阅读(462)  评论(0编辑  收藏  举报