在写cookbook的时候,发现strainer test 一直有问题
undefined method `<<' for {}:Hash
比如network的cookbook在havana中spec_helper.rb是
-
# README(galstrom21): This will remove any coverage warnings from dependent cookbooks
-
ChefSpec::Coverage.filters << '*/openstack-network'
出错的地方,是filters这个地方
调查发现,原来社区的cookbook在icehouse将chefspec的version升级到3.4了
而havana是使用的3.1.4
查看chefspec的ruby class 说明:
chefspec 3.1.4 资料[1]
-
# File 'lib/chefspec/coverage.rb', line 16
-
-
def initialize
-
@collection = {}
-
@filters = []
-
end
这个是array
chefspec 3.4 资料[2]
-
# File 'lib/chefspec/coverage.rb', line 28
-
-
def initialize
-
@collection = {}
-
@filters = {}
-
end
已经变为hash了,所以显然
如果仅仅更新GemFile,还是基于havana的spec_helper直接运行,那么就会报上面的错误,所以社区已经修改使用了如下的调用
-
ChefSpec::Coverage.start! { add_filter 'openstack-network' }
更多参考可以看社区的blueprint
[1]
[2]
[3]
[4]
阅读(1098) | 评论(0) | 转发(0) |