热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ruby2.0support

ThispatchmakessomechangestosupportRuby2.0andadds2.0.0to

This patch makes some changes to support Ruby 2.0 and adds 2.0.0 to

1
.travis.yml

.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
 patch

diff --git .travis.yml .travis.yml

index 661dd2b..a3297f0 100644

--- .travis.yml

+++ .travis.yml

@@ -1,4 +1,5 @@

 rvm:

+  - 2.0.0

   - 1.9.3

   - 1.9.2



diff --git cucumber.yml cucumber.yml

index b081270..52e3727 100644

--- cucumber.yml

+++ cucumber.yml

@@ -15,6 +15,7 @@ jruby:  --tags ~ --tags ~

 jruby_win:  --tags ~ --tags ~ CUCUMBER_FORWARD_SLASH_PATHS=true

 windows_mri:  --tags ~ --tags ~ --tags ~ --tags ~-many-fonts CUCUMBER_FORWARD_SLASH_PATHS=true

 ruby_1_9:  --tags ~ --tags ~

+ruby_2_0:  --tags ~ --tags ~

 wip: --tags :3 --wip features

 none: --format pretty

 rerun:  --format rerun --out rerun.txt --strict --tags ~

diff --git fixtures/self_test/features/support/env.rb fixtures/self_test/features/support/env.rb

index 1ce0d3a..2dc9ff5 100644

--- fixtures/self_test/features/support/env.rb

+++ fixtures/self_test/features/support/env.rb

@@ -1,6 +1,6 @@

 require 'base64'

 begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end

-$KCODE = 'u' unless Cucumber::RUBY_1_9

+$KCODE = 'u' if Cucumber::RUBY_2_0



 Before('') do

   raise "Should never run"

diff --git gem_tasks/cucumber.rake gem_tasks/cucumber.rake

index 2789906..8bcfc82 100644

--- gem_tasks/cucumber.rake

+++ gem_tasks/cucumber.rake

@@ -3,12 +3,14 @@ require 'cucumber/platform'



 class Cucumber::Rake::Task

   def set_profile_for_current_ruby

-    self.profile = if(Cucumber::JRUBY)

+    self.profile = if Cucumber::JRUBY

       Cucumber::WINDOWS ? 'jruby_win' : 'jruby'

-    elsif(Cucumber::WINDOWS_MRI)

+    elsif Cucumber::WINDOWS_MRI

       'windows_mri'

-    elsif(Cucumber::RUBY_1_9)

+    elsif Cucumber::RUBY_1_9

       'ruby_1_9'

+    elsif Cucumber::RUBY_2_0

+      'ruby_2_0'

     end

   end

 end

diff --git legacy_features/support/env.rb legacy_features/support/env.rb

index 8a3d848..a70afef 100644

--- legacy_features/support/env.rb

+++ legacy_features/support/env.rb

@@ -101,7 +101,7 @@ class CucumberWorld

     stderr_file = Tempfile.new('cucumber')

     stderr_file.close

     in_current_dir do

-      mode = Cucumber::RUBY_1_9 ? {:external_encoding=>"UTF-8"} : 'r'

+      mode = Cucumber::RUBY_1_8_7 ? 'r' : {:external_encoding=>"UTF-8"}

       IO.popen("#{command} 2> #{stderr_file.path}", mode) do |io|

          = io.read

       end

diff --git lib/cucumber/core_ext/instance_exec.rb lib/cucumber/core_ext/instance_exec.rb

index 0346a34..d76c21e 100644

--- lib/cucumber/core_ext/instance_exec.rb

+++ lib/cucumber/core_ext/instance_exec.rb

@@ -54,7 +54,7 @@ class Object #:nodoc:



   def cucumber_arity(block)

     a = block.arity

-    Cucumber::RUBY_1_9 ? a : (a == -1 ? 0 : a)

+    Cucumber::RUBY_1_8_7 ? (a == -1 ? 0 : a) : a

   end



   def cucumber_compatible_arity?(args, block)

@@ -74,7 +74,7 @@ class Object #:nodoc:

     end

   end



-  INSTANCE_EXEC_OFFSET = (Cucumber::RUBY_1_9 || Cucumber::RUBY_1_8_7 || Cucumber::JRUBY) ? -3 : -4

+  INSTANCE_EXEC_OFFSET = (Cucumber::RUBY_2_0 || Cucumber::RUBY_1_9 || Cucumber::RUBY_1_8_7 || Cucumber::JRUBY) ? -3 : -4



   def replace_instance_exec_invocation_line!(backtrace, instance_exec_invocation_line, pseudo_method)

     return if Cucumber.use_full_backtrace

diff --git lib/cucumber/formatter/unicode.rb lib/cucumber/formatter/unicode.rb

index 61fe#..0105d5e 100644

--- lib/cucumber/formatter/unicode.rb

+++ lib/cucumber/formatter/unicode.rb

@@ -2,10 +2,10 @@

 # Tips for improvement - esp. ruby 1.9: http://www.ruby-forum.com/topic/184730

 require 'cucumber/platform'

 require 'cucumber/formatter/ansicolor'

-$KCODE='u' unless Cucumber::RUBY_1_9

+$KCODE='u' if Cucumber::RUBY_2_0



 if Cucumber::WINDOWS

-  require 'iconv' unless Cucumber::RUBY_1_9

+  require 'iconv' if Cucumber::RUBY_2_0



   if ENV['CUCUMBER_OUTPUT_ENCODING']

     Cucumber::CODEPAGE = ENV['CUCUMBER_OUTPUT_ENCODING']

@@ -27,14 +27,7 @@ if Cucumber::WINDOWS

         o.instance_eval do

           alias cucumber_print print

           def print(*a)

-            if Cucumber::RUBY_1_9

-              begin

-                cucumber_print(*a.map{|arg| arg.to_s.encode(Encoding.default_external)})

-              rescue Encoding::UndefinedConversionError => e

-                STDERR.cucumber_puts("WARNING: #{e.message}")

-                cucumber_print(*a)

-              end

-            else

+            if Cucumber::RUBY_1_8_7

               begin

                 cucumber_print(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a.map{|a|a.to_s}))

               rescue Iconv::InvalidEncoding => e

@@ -44,19 +37,19 @@ if Cucumber::WINDOWS

                 STDERR.cucumber_puts("WARNING: #{e.message}")

                 cucumber_print(*a)

               end

+            else

+              begin

+                cucumber_print(*a.map{|arg| arg.to_s.encode(Encoding.default_external)})

+              rescue Encoding::UndefinedConversionError => e

+                STDERR.cucumber_puts("WARNING: #{e.message}")

+                cucumber_print(*a)

+              end

             end

           end



           alias cucumber_puts puts

           def puts(*a)

-            if Cucumber::RUBY_1_9

-              begin

-                cucumber_puts(*a.map{|arg| arg.to_s.encode(Encoding.default_external)})

-              rescue Encoding::UndefinedConversionError => e

-                STDERR.cucumber_puts("WARNING: #{e.message}")

-                cucumber_puts(*a)

-              end

-            else

+            if Cucumber::RUBY_1_8_7

               begin

                 cucumber_puts(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a.map{|a|a.to_s}))

               rescue Iconv::InvalidEncoding => e

@@ -66,6 +59,13 @@ if Cucumber::WINDOWS

                 STDERR.cucumber_puts("WARNING: #{e.message}")

                 cucumber_puts(*a)

               end

+            else

+              begin

+                cucumber_puts(*a.map{|arg| arg.to_s.encode(Encoding.default_external)})

+              rescue Encoding::UndefinedConversionError => e

+                STDERR.cucumber_puts("WARNING: #{e.message}")

+                cucumber_puts(*a)

+              end

             end

           end

         end

diff --git lib/cucumber/platform.rb lib/cucumber/platform.rb

index a71eea4..9b99f62 100644

--- lib/cucumber/platform.rb

+++ lib/cucumber/platform.rb

@@ -14,6 +14,7 @@ unless defined?(Cucumber::VERSION)

   WINDOWS_MRI   = WINDOWS && !JRUBY && !IRONRUBY

   RAILS         = defined?(Rails)

   RUBY_BINARY   = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])

+  RUBY_2_0      = RUBY_VERSION =~ /^2\.0/

   RUBY_1_9      = RUBY_VERSION =~ /^1\.9/

   RUBY_1_8_7    = RUBY_VERSION =~ /^1\.8\.7/



@@ -21,7 +22,7 @@ unless defined?(Cucumber::VERSION)

     attr_accessor :use_full_backtrace



     def file_mode(m, encoding="UTF-8") #:nodoc:

-      RUBY_1_9 ? "#{m}:#{encoding}" : m

+      RUBY_1_8_7 ? m : "#{m}:#{encoding}"

     end

   end

   self.use_full_backtrace = false

diff --git lib/cucumber/rake/task.rb lib/cucumber/rake/task.rb

index 6596c7f..c5583ec 100644

--- lib/cucumber/rake/task.rb

+++ lib/cucumber/rake/task.rb

@@ -143,7 +143,7 @@ module Cucumber

       # true, +fork+ is implicit.

       attr_accessor :rcov

       def rcov=(flag)

-        if(flag && Cucumber::RUBY_1_9)

+        if flag && !Cucumber::RUBY_1_8_7

           raise failed + "RCov only works on Ruby 1.8.x. You may want to use SimpleCov: https://github.com/colszowka/simplecov" + reset

         end

          = flag

diff --git spec/cucumber/cli/configuration_spec.rb spec/cucumber/cli/configuration_spec.rb

index 88894ed..60293ae 100644

--- spec/cucumber/cli/configuration_spec.rb

+++ spec/cucumber/cli/configuration_spec.rb

@@ -8,9 +8,13 @@ module Cli

       attr_reader :options

     end



+    def convert_hash_to_yaml_erb(hash)

+      ["---", *hash.map { |k,v| "#{k}: #{v}" }].join "\n"

+    end

+

     def given_cucumber_yml_defined_as(hash_or_string)

       File.stub!(:exist?).and_return(true)

-      cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string

+      cucumber_yml = hash_or_string.is_a?(Hash) ? convert_hash_to_yaml_erb(hash_or_string) : hash_or_string

       IO.stub!(:read).with('cucumber.yml').and_return(cucumber_yml)

     end



diff --git spec/cucumber/core_ext/proc_spec.rb spec/cucumber/core_ext/proc_spec.rb

index f5fcb48..fc9fc44 100644

--- spec/cucumber/core_ext/proc_spec.rb

+++ spec/cucumber/core_ext/proc_spec.rb

@@ -35,20 +35,20 @@ describe Proc do

     }.should raise_error(Cucumber::ArityMismatchError, "Your block takes 2 arguments, but the Regexp matched 1 argument.")

   end



-  if Cucumber::RUBY_1_9

-    it "should allow varargs (expecting 0+)" do

+  if Cucumber::RUBY_1_8_7

+    # Ruby 1.8

+    it "should not allow varargs 0+ because Ruby 1.8 reports same arity as with no args, so we can't really tell the difference." do

       lambda {

         Object.new.cucumber_instance_exec(true, 'foo', 1) do |*args|

         end

-      }.should_not raise_error(Cucumber::ArityMismatchError)

+      }.should raise_error(Cucumber::ArityMismatchError, "Your block takes 0 arguments, but the Regexp matched 1 argument.")

     end

   else

-    # Ruby 1.8

-    it "should not allow varargs 0+ because Ruby 1.8 reports same arity as with no args, so we can't really tell the difference." do

+    it "should allow varargs (expecting 0+)" do

       lambda {

         Object.new.cucumber_instance_exec(true, 'foo', 1) do |*args|

         end

-      }.should raise_error(Cucumber::ArityMismatchError, "Your block takes 0 arguments, but the Regexp matched 1 argument.")

+      }.should_not raise_error(Cucumber::ArityMismatchError)

     end

   end



diff --git spec/cucumber/step_match_spec.rb spec/cucumber/step_match_spec.rb

index fb42702..35ce644 100644

--- spec/cucumber/step_match_spec.rb

+++ spec/cucumber/step_match_spec.rb

@@ -7,7 +7,7 @@ module Cucumber

   describe StepMatch do

     include RSpec::WorkInProgress



-    WORD = Cucumber::RUBY_1_9 ? '[[:word:]]' : '\w'

+    WORD = Cucumber::RUBY_1_8_7 ? '\w' : '[[:word:]]'



     before do

        = RbSupport::RbLanguage.new(nil)

diff --git spec/spec_helper.rb spec/spec_helper.rb

index fe145ae..f7e773d 100644

--- spec/spec_helper.rb

+++ spec/spec_helper.rb

@@ -13,7 +13,7 @@ require 'bundler'

 Bundler.setup



 require 'cucumber'

-$KCODE='u' unless Cucumber::RUBY_1_9

+$KCODE='u' if Cucumber::RUBY_1_8_7



 RSpec.configure do |c|

   c.before do

该提问来源于开源项目:cucumber/cucumber-ruby

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


推荐阅读
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 当使用 `new` 表达式(即通过 `new` 动态创建对象)时,会发生两件事:首先,内存被分配用于存储新对象;其次,该对象的构造函数被调用以初始化对象。为了确保资源管理的一致性和避免内存泄漏,建议在使用 `new` 和 `delete` 时保持形式一致。例如,如果使用 `new[]` 分配数组,则应使用 `delete[]` 来释放内存;同样,如果使用 `new` 分配单个对象,则应使用 `delete` 来释放内存。这种一致性有助于防止常见的编程错误,提高代码的健壮性和可维护性。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 本文详细探讨了Struts框架中几种常用的数据标签,包括`s:property`、`s:a`、`s:debug`、`s:include`和`s:param`。这些标签在实际开发中的应用广泛,不仅用于数据展示和链接生成,还提供了调试和模块化功能。文章分析了每个标签的基本用法及其属性配置,并结合具体示例介绍了如何进行性能优化和最佳实践。通过这些内容,开发者可以更好地理解和利用这些标签,提高开发效率和代码质量。 ... [详细]
  • Joomla!软件介绍【Joomla!概括介绍】国外相当知名的内容管理系统。【Joomla!基本介绍】Joomla!是一套在国外相当知名的内容管理系统(ContentManagem ... [详细]
  • python发送邮件(带附件)、发送给多人、抄送给多人的示例#!usrbinenvpython #-*-encoding:utf-8-*-imports ... [详细]
  • 加密要用到Crypto安装包pipinstallCrypto新建两个模块rsautils.py,rsatest.py直接上代码,rsautils.py#!usrbinenv ... [详细]
author-avatar
黄承念63772
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有