cucumber 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,20 @@
1
+ == 0.6.2 2010-01-18
2
+
3
+ === Bugfixes
4
+ * Update --help for --tags which was out of date. (Aslak Hellesøy)
5
+ * Explicitly use Prawn 0.6.3 for pdf formatter since 0.7.1 is broken (Aslak Hellesøy)
6
+ * PDF formatter renders tables incorrectly (#553 Andy Waite)
7
+ * Better colouring in HTML report (Rob Aldred)
8
+ * Detect output encoding properly on JRuby+Windows (Aslak Hellesøy)
9
+ * Added option to override output encoding on Windows with an CUCUMBER_OUTPUT_ENCODING env var (Aslak Hellesøy)
10
+ * PDF generation requires 'prawn-format' (#558 Aslak Hellesøy)
11
+
12
+ === New features
13
+ * Show profiles in error scenario summary. (#550 Joseph Wilk)
14
+
15
+ === Removed features
16
+ * element_at and table_at have been removed. Use tableish in cucumber-rails instead. (Aslak Hellesœy)
17
+
1
18
  == 0.6.1 2010-01-03
2
19
 
3
20
  === Bugfixes
data/Rakefile CHANGED
@@ -25,8 +25,10 @@ begin
25
25
  gem.add_dependency 'json_pure', '>= 1.2.0'
26
26
 
27
27
  gem.add_development_dependency 'nokogiri', '>= 1.4.1'
28
- gem.add_development_dependency 'prawn', '>= 0.6.3'
29
- gem.add_development_dependency 'rspec', '>= 1.2.9'
28
+ gem.add_development_dependency 'prawn', '= 0.6.3'
29
+ gem.add_development_dependency 'prawn-format', '= 0.2.3'
30
+ gem.add_development_dependency 'rspec', '>= 1.3.0'
31
+ gem.add_development_dependency 'syntax', '>= 1.0.0'
30
32
  gem.add_development_dependency 'spork', '>= 0.7.5' unless Cucumber::JRUBY || Cucumber::WINDOWS
31
33
 
32
34
  extend Cucumber::Formatter::ANSIColor
@@ -1,5 +1,5 @@
1
1
  ---
2
- :patch: 1
2
+ :patch: 2
3
3
  :build:
4
4
  :major: 0
5
5
  :minor: 6
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cucumber}
8
- s.version = "0.6.1"
8
+ s.version = "0.6.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Aslak Helles\303\270y"]
12
- s.date = %q{2010-01-03}
12
+ s.date = %q{2010-01-18}
13
13
  s.default_executable = %q{cucumber}
14
14
  s.description = %q{A BDD tool written in Ruby}
15
15
  s.email = %q{cukes@googlegroups.com}
@@ -474,8 +474,6 @@ Gem::Specification.new do |s|
474
474
  "lib/cucumber/step_match.rb",
475
475
  "lib/cucumber/step_mother.rb",
476
476
  "lib/cucumber/tag_expression.rb",
477
- "lib/cucumber/webrat/element_locator.rb",
478
- "lib/cucumber/webrat/table_locator.rb",
479
477
  "lib/cucumber/wire_support/configuration.rb",
480
478
  "lib/cucumber/wire_support/connection.rb",
481
479
  "lib/cucumber/wire_support/request_handler.rb",
@@ -533,6 +531,7 @@ Gem::Specification.new do |s|
533
531
  "spec/cucumber/treetop_parser/with_comments.feature",
534
532
  "spec/cucumber/treetop_parser/with_tags.feature",
535
533
  "spec/cucumber/wire_support/configuration_spec.rb",
534
+ "spec/cucumber/wire_support/connection_spec.rb",
536
535
  "spec/cucumber/wire_support/wire_exception_spec.rb",
537
536
  "spec/cucumber/wire_support/wire_language_spec.rb",
538
537
  "spec/cucumber/wire_support/wire_packet_spec.rb",
@@ -547,7 +546,7 @@ Gem::Specification.new do |s|
547
546
 
548
547
  (::) U P G R A D I N G (::)
549
548
 
550
- Thank you for installing cucumber-0.6.1.
549
+ Thank you for installing cucumber-0.6.2.
551
550
  Please be sure to read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
552
551
  for important information about this release. Happy cuking!
553
552
 
@@ -594,6 +593,7 @@ for important information about this release. Happy cuking!
594
593
  "spec/cucumber/step_mother_spec.rb",
595
594
  "spec/cucumber/tag_expression_spec.rb",
596
595
  "spec/cucumber/wire_support/configuration_spec.rb",
596
+ "spec/cucumber/wire_support/connection_spec.rb",
597
597
  "spec/cucumber/wire_support/wire_exception_spec.rb",
598
598
  "spec/cucumber/wire_support/wire_language_spec.rb",
599
599
  "spec/cucumber/wire_support/wire_packet_spec.rb",
@@ -729,8 +729,10 @@ for important information about this release. Happy cuking!
729
729
  s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
730
730
  s.add_runtime_dependency(%q<json_pure>, [">= 1.2.0"])
731
731
  s.add_development_dependency(%q<nokogiri>, [">= 1.4.1"])
732
- s.add_development_dependency(%q<prawn>, [">= 0.6.3"])
733
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
732
+ s.add_development_dependency(%q<prawn>, ["= 0.6.3"])
733
+ s.add_development_dependency(%q<prawn-format>, ["= 0.2.3"])
734
+ s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
735
+ s.add_development_dependency(%q<syntax>, [">= 1.0.0"])
734
736
  s.add_development_dependency(%q<spork>, [">= 0.7.5"])
735
737
  else
736
738
  s.add_dependency(%q<term-ansicolor>, [">= 1.0.4"])
@@ -740,8 +742,10 @@ for important information about this release. Happy cuking!
740
742
  s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
741
743
  s.add_dependency(%q<json_pure>, [">= 1.2.0"])
742
744
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
743
- s.add_dependency(%q<prawn>, [">= 0.6.3"])
744
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
745
+ s.add_dependency(%q<prawn>, ["= 0.6.3"])
746
+ s.add_dependency(%q<prawn-format>, ["= 0.2.3"])
747
+ s.add_dependency(%q<rspec>, [">= 1.3.0"])
748
+ s.add_dependency(%q<syntax>, [">= 1.0.0"])
745
749
  s.add_dependency(%q<spork>, [">= 0.7.5"])
746
750
  end
747
751
  else
@@ -752,8 +756,10 @@ for important information about this release. Happy cuking!
752
756
  s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
753
757
  s.add_dependency(%q<json_pure>, [">= 1.2.0"])
754
758
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
755
- s.add_dependency(%q<prawn>, [">= 0.6.3"])
756
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
759
+ s.add_dependency(%q<prawn>, ["= 0.6.3"])
760
+ s.add_dependency(%q<prawn-format>, ["= 0.2.3"])
761
+ s.add_dependency(%q<rspec>, [">= 1.3.0"])
762
+ s.add_dependency(%q<syntax>, [">= 1.0.0"])
757
763
  s.add_dependency(%q<spork>, [">= 0.7.5"])
758
764
  end
759
765
  end
@@ -5,6 +5,7 @@ std_opts = "#{rerun_opts} --format rerun --out rerun.txt --strict --tags ~@wip"
5
5
  %>
6
6
  default: <%= std_opts %>
7
7
  jruby: <%= std_opts %> --tags ~@spork --tags ~@wire
8
+ jruby_win: <%= std_opts %> --tags ~@spork --tags ~@wire CUCUMBER_FORWARD_SLASH_PATHS=true
8
9
  run_code_run: <%= std_opts %> --tags ~@spork
9
10
  windows_mri: <%= std_opts %> --tags ~@spork --tags ~@wire --tags ~@needs-many-fonts CUCUMBER_FORWARD_SLASH_PATHS=true
10
11
  ruby_1_9: <%= std_opts %> --tags ~@fails_on_1_9
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'spec/expectations'
3
3
  require 'cucumber/formatter/unicode'
4
+
4
5
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
6
  require 'kalkulator'
@@ -303,7 +303,7 @@ features/background/scenario_outline_failing_background.feature:4:in `Given fail
303
303
  <span class="offending"><span class="linenum">2</span><span class="keyword">end</span></span></code></pre></li> <script type="text/javascript">moveProgressBar('29.5');</script></ol></div><div class='scenario outline'><h3 id="scenario_13"><span class="keyword">Scenario Outline:</span> <span class="val">failing background</span></h3><ol><li id='features_background_scenario_outline_failing_background_feature_7' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('30.1');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_9'><th class="step skipped_param" id="row_9_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('30.7');</script><tr class='step' id='row_10'><td class="step skipped" id="row_10_0"><div><span class="step param">10</span></div></td></tr><tr><td class="failed" colspan="1"><pre>FAIL
304
304
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
305
305
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
306
- features/background/scenario_outline_failing_background.feature:4:in `Given failing without a table'</pre></td></tr> <script type="text/javascript">moveProgressBar('31.3');</script></table></div></div><div class='scenario outline'><h3 id="scenario_14"><span class="keyword">Scenario Outline:</span> <span class="val">another failing background</span></h3><ol><li id='features_background_scenario_outline_failing_background_feature_13' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('31.9');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_15'><th class="step skipped_param" id="row_15_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('32.5');</script><tr class='step' id='row_16'><td class="step skipped" id="row_16_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('33.1');</script></table></div></div></div><div class="feature"><h2><span class="val">Feature: Passing background with scenario outlines sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_4' class='step passed'><div><span class="keyword">Given</span> <span class="step val">'<span class="param">10</span>' cukes</span></div></li> <script type="text/javascript">moveProgressBar('33.7');</script></ol></div><div class='scenario outline'><h3 id="scenario_15"><span class="keyword">Scenario Outline:</span> <span class="val">passing background</span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_7' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('34.3');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_9'><th class="step skipped_param" id="row_9_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('34.9');</script><tr class='step' id='row_10'><td class="step passed" id="row_10_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('35.5');</script></table></div></div><div class='scenario outline'><h3 id="scenario_16"><span class="keyword">Scenario Outline:</span> <span class="val">another passing background</span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_13' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('36.0');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_15'><th class="step skipped_param" id="row_15_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('36.6');</script><tr class='step' id='row_16'><td class="step passed" id="row_16_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('37.2');</script></table></div></div></div><div class="feature"><h2><span class="val">Feature: Calling undefined step</span></h2><p class="narrative"></p><div class='scenario'><h3 id="scenario_17"><span class="keyword">Scenario:</span> <span class="val">Call directly</span></h3><ol><script>makeYellow('scenario_17');</script><li id='features_call_undefined_step_from_step_def_feature_4' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">a step definition that calls an undefined step</span></div><div class="message"><pre>Undefined step: "this does not exist"</pre></div><div class="backtrace"><pre>./features/step_definitions/sample_steps.rb:20:in `/^a step definition that calls an undefined step$/'
306
+ features/background/scenario_outline_failing_background.feature:4:in `Given failing without a table'</pre></td></tr><script>makeRed('scenario_13');</script> <script type="text/javascript">moveProgressBar('31.3');</script></table></div></div><div class='scenario outline'><h3 id="scenario_14"><span class="keyword">Scenario Outline:</span> <span class="val">another failing background</span></h3><ol><li id='features_background_scenario_outline_failing_background_feature_13' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('31.9');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_15'><th class="step skipped_param" id="row_15_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('32.5');</script><tr class='step' id='row_16'><td class="step skipped" id="row_16_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('33.1');</script></table></div></div></div><div class="feature"><h2><span class="val">Feature: Passing background with scenario outlines sample</span></h2><p class="narrative"></p><div class="background"><h3><span class="keyword">Background:</span> <span class="val"></span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_4' class='step passed'><div><span class="keyword">Given</span> <span class="step val">'<span class="param">10</span>' cukes</span></div></li> <script type="text/javascript">moveProgressBar('33.7');</script></ol></div><div class='scenario outline'><h3 id="scenario_15"><span class="keyword">Scenario Outline:</span> <span class="val">passing background</span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_7' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('34.3');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_9'><th class="step skipped_param" id="row_9_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('34.9');</script><tr class='step' id='row_10'><td class="step passed" id="row_10_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('35.5');</script></table></div></div><div class='scenario outline'><h3 id="scenario_16"><span class="keyword">Scenario Outline:</span> <span class="val">another passing background</span></h3><ol><li id='features_background_scenario_outline_passing_background_feature_13' class='step skipped'><div><span class="keyword">Then</span> <span class="step val">I should have '&lt;count&gt;' cukes</span></div></li> <script type="text/javascript">moveProgressBar('36.0');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_15'><th class="step skipped_param" id="row_15_0"><div><span class="step param">count</span></div></th></tr> <script type="text/javascript">moveProgressBar('36.6');</script><tr class='step' id='row_16'><td class="step passed" id="row_16_0"><div><span class="step param">10</span></div></td></tr> <script type="text/javascript">moveProgressBar('37.2');</script></table></div></div></div><div class="feature"><h2><span class="val">Feature: Calling undefined step</span></h2><p class="narrative"></p><div class='scenario'><h3 id="scenario_17"><span class="keyword">Scenario:</span> <span class="val">Call directly</span></h3><ol><script>makeYellow('scenario_17');</script><li id='features_call_undefined_step_from_step_def_feature_4' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">a step definition that calls an undefined step</span></div><div class="message"><pre>Undefined step: "this does not exist"</pre></div><div class="backtrace"><pre>./features/step_definitions/sample_steps.rb:20:in `/^a step definition that calls an undefined step$/'
307
307
  features/call_undefined_step_from_step_def.feature:4:in `Given a step definition that calls an undefined step':in `/^a step definition that calls an undefined step$/'
308
308
  ./features/step_definitions/sample_steps.rb:20:in `/^a step definition that calls an undefined step$/'
309
309
  features/call_undefined_step_from_step_def.feature:4:in `Given a step definition that calls an undefined step':in `Given a step definition that calls an undefined step'</pre></div><pre class="ruby"><code><span class="linenum">18</span>
@@ -353,7 +353,7 @@ which goes on and on and on for three lines
353
353
  yawn</span></h4><table><tr class='step' id='row_26'><th class="step skipped_param" id="row_26_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('46.7');</script><tr class='step' id='row_27'><td class="step passed" id="row_27_0"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('47.3');</script></table></div></div></div><div class="feature"><h2><span class="val">Feature: Outline Sample</span></h2><p class="narrative"></p><div class='scenario'><h3 id="scenario_24"><span class="keyword">Scenario:</span> <span class="val">I have no steps</span></h3><ol></ol></div><div class='scenario outline'><h3 id="scenario_25"><span class="keyword">Scenario Outline:</span> <span class="val">Test state</span></h3><ol><li id='features_outline_sample_feature_6' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('47.9');</script><li id='features_outline_sample_feature_7' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;other_state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('48.5');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Rainbow colours</span></h4><table><tr class='step' id='row_9'><th class="step skipped_param" id="row_9_0"><div><span class="step param">state</span></div></th><th class="step skipped_param" id="row_9_1"><div><span class="step param">other_state</span></div></th></tr> <script type="text/javascript">moveProgressBar('49.1');</script><tr class='step' id='row_10'><td class="step undefined" id="row_10_0"><div><span class="step param">missing</span></div></td><script>makeYellow('scenario_25');</script><td class="step skipped" id="row_10_1"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('49.7');</script><tr class='step' id='row_11'><td class="step passed" id="row_11_0"><div><span class="step param">passing</span></div></td><td class="step passed" id="row_11_1"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('50.2');</script><tr class='step' id='row_12'><td class="step failed" id="row_12_0"><div><span class="step param">failing</span></div></td><script>makeRed('scenario_25');</script><td class="step skipped" id="row_12_1"><div><span class="step param">passing</span></div></td></tr><tr><td class="failed" colspan="2"><pre>FAIL
354
354
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
355
355
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
356
- features/outline_sample.feature:6:in `Given <state> without a table'</pre></td></tr> <script type="text/javascript">moveProgressBar('50.8');</script></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Only passing</span></h4><table><tr class='step' id='row_14'><th class="step skipped_param" id="row_14_0"><div><span class="step param">state</span></div></th><th class="step skipped_param" id="row_14_1"><div><span class="step param">other_state</span></div></th></tr> <script type="text/javascript">moveProgressBar('51.4');</script><tr class='step' id='row_15'><td class="step passed" id="row_15_0"><div><span class="step param">passing</span></div></td><td class="step passed" id="row_15_1"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('52.0');</script></table></div></div></div><div class="feature"><pre class="comment"># Feature comment<br/></pre><span class="tag">@one</span><h2><span class="val">Feature: Sample</span></h2><p class="narrative"></p><div class='scenario'><span class="tag">@two</span> <span class="tag">@three</span><h3 id="scenario_26"><span class="keyword">Scenario:</span> <span class="val">Missing</span></h3><ol><script>makeYellow('scenario_26');</script><li id='features_sample_feature_7' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">missing</span></div><pre>Given /^missing$/ do
356
+ features/outline_sample.feature:6:in `Given <state> without a table'</pre></td></tr><script></script> <script type="text/javascript">moveProgressBar('50.8');</script></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Only passing</span></h4><table><tr class='step' id='row_14'><th class="step skipped_param" id="row_14_0"><div><span class="step param">state</span></div></th><th class="step skipped_param" id="row_14_1"><div><span class="step param">other_state</span></div></th></tr> <script type="text/javascript">moveProgressBar('51.4');</script><tr class='step' id='row_15'><td class="step passed" id="row_15_0"><div><span class="step param">passing</span></div></td><td class="step passed" id="row_15_1"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('52.0');</script></table></div></div></div><div class="feature"><pre class="comment"># Feature comment<br/></pre><span class="tag">@one</span><h2><span class="val">Feature: Sample</span></h2><p class="narrative"></p><div class='scenario'><span class="tag">@two</span> <span class="tag">@three</span><h3 id="scenario_26"><span class="keyword">Scenario:</span> <span class="val">Missing</span></h3><ol><script>makeYellow('scenario_26');</script><li id='features_sample_feature_7' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">missing</span></div><pre>Given /^missing$/ do
357
357
  pending # express the regexp above with the code you wish you had
358
358
  end</pre></li> <script type="text/javascript">moveProgressBar('52.6');</script></ol></div><div class='scenario'><pre class="comment"># Scenario comment<br/></pre><span class="tag">@three</span><h3 id="scenario_27"><span class="keyword">Scenario:</span> <span class="val">Passing</span></h3><ol><li id='features_sample_feature_12' class='step passed'><div><span class="keyword">Given</span> <span class="step val">passing</span></div><table><tr class='step' id='row_13'><td class="step" id="row_13_0"><div><span class="step param">a</span></div></td><td class="step" id="row_13_1"><div><span class="step param">b</span></div></td></tr> <script type="text/javascript">moveProgressBar('53.8');</script><tr class='step' id='row_14'><td class="step" id="row_14_0"><div><span class="step param">c</span></div></td><td class="step" id="row_14_1"><div><span class="step param">d</span></div></td></tr> <script type="text/javascript">moveProgressBar('54.4');</script></table></li> <script type="text/javascript">moveProgressBar('54.4');</script></ol></div><div class='scenario'><span class="tag">@four</span><h3 id="scenario_28"><span class="keyword">Scenario:</span> <span class="val">Failing</span></h3><ol><script>makeRed('scenario_28');</script><li id='features_sample_feature_18' class='step failed'><div><span class="keyword">Given</span> <span class="step val">failing</span></div><pre class="val">hello</pre><div class="message"><pre>FAIL</pre></div><div class="backtrace"><pre>./features/step_definitions/sample_steps.rb:2:in `flunker'
359
359
  ./features/step_definitions/sample_steps.rb:9:in `/^failing$/'
@@ -378,10 +378,10 @@ features/search_sample.feature:10:in `Given failing without a table':in `Given f
378
378
  <span class="offending"><span class="linenum">2</span><span class="keyword">end</span></span></code></pre></li> <script type="text/javascript">moveProgressBar('57.9');</script></ol></div><div class='scenario outline'><h3 id="scenario_31"><span class="keyword">Scenario Outline:</span> <span class="val">Ignore me</span></h3><ol><li id='features_search_sample_feature_13' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('58.5');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_15'><th class="step skipped_param" id="row_15_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('59.1');</script><tr class='step' id='row_16'><td class="step failed" id="row_16_0"><div><span class="step param">failing</span></div></td><script>makeRed('scenario_31');</script></tr><tr><td class="failed" colspan="1"><pre>FAIL
379
379
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
380
380
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
381
- features/search_sample.feature:13:in `Given <state> without a table'</pre></td></tr> <script type="text/javascript">moveProgressBar('59.7');</script></table></div></div><div class='scenario outline'><h3 id="scenario_32"><span class="keyword">Scenario Outline:</span> <span class="val">Hantu Pisang match</span></h3><ol><li id='features_search_sample_feature_19' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('60.3');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_21'><th class="step skipped_param" id="row_21_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('60.9');</script><tr class='step' id='row_22'><td class="step passed" id="row_22_0"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('61.5');</script></table></div></div><div class='scenario outline'><h3 id="scenario_33"><span class="keyword">Scenario Outline:</span> <span class="val">no match in name but in examples</span></h3><ol><li id='features_search_sample_feature_25' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('62.1');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Hantu Pisang</span></h4><table><tr class='step' id='row_27'><th class="step skipped_param" id="row_27_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('62.7');</script><tr class='step' id='row_28'><td class="step passed" id="row_28_0"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('63.3');</script></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Ignore me</span></h4><table><tr class='step' id='row_31'><th class="step skipped_param" id="row_31_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('63.9');</script><tr class='step' id='row_32'><td class="step failed" id="row_32_0"><div><span class="step param">failing</span></div></td><script>makeRed('scenario_33');</script></tr><tr><td class="failed" colspan="1"><pre>FAIL
381
+ features/search_sample.feature:13:in `Given <state> without a table'</pre></td></tr><script></script> <script type="text/javascript">moveProgressBar('59.7');</script></table></div></div><div class='scenario outline'><h3 id="scenario_32"><span class="keyword">Scenario Outline:</span> <span class="val">Hantu Pisang match</span></h3><ol><li id='features_search_sample_feature_19' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('60.3');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_21'><th class="step skipped_param" id="row_21_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('60.9');</script><tr class='step' id='row_22'><td class="step passed" id="row_22_0"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('61.5');</script></table></div></div><div class='scenario outline'><h3 id="scenario_33"><span class="keyword">Scenario Outline:</span> <span class="val">no match in name but in examples</span></h3><ol><li id='features_search_sample_feature_25' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt; without a table</span></div></li> <script type="text/javascript">moveProgressBar('62.1');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Hantu Pisang</span></h4><table><tr class='step' id='row_27'><th class="step skipped_param" id="row_27_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('62.7');</script><tr class='step' id='row_28'><td class="step passed" id="row_28_0"><div><span class="step param">passing</span></div></td></tr> <script type="text/javascript">moveProgressBar('63.3');</script></table></div><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val">Ignore me</span></h4><table><tr class='step' id='row_31'><th class="step skipped_param" id="row_31_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('63.9');</script><tr class='step' id='row_32'><td class="step failed" id="row_32_0"><div><span class="step param">failing</span></div></td><script>makeRed('scenario_33');</script></tr><tr><td class="failed" colspan="1"><pre>FAIL
382
382
  ./features/step_definitions/sample_steps.rb:2:in `flunker'
383
383
  ./features/step_definitions/sample_steps.rb:16:in `/^failing without a table$/'
384
- features/search_sample.feature:25:in `Given <state> without a table'</pre></td></tr> <script type="text/javascript">moveProgressBar('64.4');</script></table></div></div></div><div class="feature"><span class="tag">@sample_one</span><h2><span class="val">Feature: Tag samples</span></h2><p class="narrative"></p><div class='scenario'><span class="tag">@sample_two</span> <span class="tag">@sample_four</span><h3 id="scenario_34"><span class="keyword">Scenario:</span> <span class="val">Passing</span></h3><ol><script>makeYellow('scenario_34');</script><li id='features_tags_sample_feature_6' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">missing</span></div><pre>Given /^missing$/ do
384
+ features/search_sample.feature:25:in `Given <state> without a table'</pre></td></tr><script></script> <script type="text/javascript">moveProgressBar('64.4');</script></table></div></div></div><div class="feature"><span class="tag">@sample_one</span><h2><span class="val">Feature: Tag samples</span></h2><p class="narrative"></p><div class='scenario'><span class="tag">@sample_two</span> <span class="tag">@sample_four</span><h3 id="scenario_34"><span class="keyword">Scenario:</span> <span class="val">Passing</span></h3><ol><script>makeYellow('scenario_34');</script><li id='features_tags_sample_feature_6' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">missing</span></div><pre>Given /^missing$/ do
385
385
  pending # express the regexp above with the code you wish you had
386
386
  end</pre></li> <script type="text/javascript">moveProgressBar('65.0');</script></ol></div><div class='scenario outline'><span class="tag">@sample_three</span><h3 id="scenario_35"><span class="keyword">Scenario Outline:</span> <span class="val"></span></h3><ol><li id='features_tags_sample_feature_10' class='step skipped'><div><span class="keyword">Given</span> <span class="step val">&lt;state&gt;</span></div></li> <script type="text/javascript">moveProgressBar('65.6');</script></ol><div class="examples"><h4><span class="keyword">Examples:</span> <span class="val"></span></h4><table><tr class='step' id='row_12'><th class="step skipped_param" id="row_12_0"><div><span class="step param">state</span></div></th></tr> <script type="text/javascript">moveProgressBar('66.2');</script><tr class='step' id='row_13'><td class="step undefined" id="row_13_0"><div><span class="step param">missing</span></div></td><script>makeYellow('scenario_35');</script></tr> <script type="text/javascript">moveProgressBar('66.8');</script></table></div></div><div class='scenario'><span class="tag">@sample_three</span> <span class="tag">@sample_four</span><h3 id="scenario_36"><span class="keyword">Scenario:</span> <span class="val">Skipped</span></h3><ol><script>makeYellow('scenario_36');</script><li id='features_tags_sample_feature_17' class='step undefined'><div><span class="keyword">Given</span> <span class="step val">missing</span></div><pre>Given /^missing$/ do
387
387
  pending # express the regexp above with the code you wish you had
@@ -107,6 +107,20 @@ Feature: Profiles
107
107
  Feature: Sample
108
108
  """
109
109
 
110
-
111
-
112
-
110
+ Scenario Outline: Showing profiles when listing failing scenarios
111
+ Given a file named "features/step_definitions/steps.rb" with:
112
+ """
113
+ Given /^I am just testing stuff$/ do
114
+ fail
115
+ end
116
+ """
117
+ When I run cucumber -q -p super -p default -f <format> features/sample.feature --require features/step_definitions/steps.rb
118
+ Then it should fail
119
+ Then the output should contain
120
+ """
121
+ cucumber -p super features/sample.feature:2 # Scenario: this is a test
122
+ """
123
+ Examples:
124
+ | format |
125
+ | pretty |
126
+ | progress|
@@ -49,7 +49,7 @@ Given /^I have environment variable (\w+) set to "([^\"]*)"$/ do |variable, valu
49
49
  end
50
50
 
51
51
  When /^I run cucumber (.*)$/ do |cucumber_opts|
52
- run "#{Cucumber::RUBY_BINARY} #{Cucumber::BINARY} --no-color #{cucumber_opts}"
52
+ run "#{Cucumber::RUBY_BINARY} #{Cucumber::BINARY} --no-color #{cucumber_opts} CUCUMBER_OUTPUT_ENCODING=UTF-8"
53
53
  end
54
54
 
55
55
  When /^I run rake (.*)$/ do |rake_opts|
@@ -95,11 +95,7 @@ class CucumberWorld
95
95
  end
96
96
 
97
97
  def run_spork_in_background(port = nil)
98
- begin
99
- require 'spork'
100
- rescue Gem::LoadError => ex
101
- gem 'spork', '>= 0.7.3' # Ensure correct spork version number to avoid false-negatives.
102
- end
98
+ require 'spork'
103
99
 
104
100
  pid = fork
105
101
  in_current_dir do
@@ -6,7 +6,7 @@ Cucumber::Rake::Task.new do |t|
6
6
  if(ENV["RUN_CODE_RUN"])
7
7
  t.profile = 'run_code_run'
8
8
  elsif(Cucumber::JRUBY)
9
- t.profile = 'jruby'
9
+ t.profile = Cucumber::WINDOWS ? 'jruby_win' : 'jruby'
10
10
  elsif(Cucumber::WINDOWS_MRI)
11
11
  t.profile = 'windows_mri'
12
12
  elsif(Cucumber::RUBY_1_9)
@@ -151,19 +151,19 @@ module Cucumber
151
151
  @options[:formats] << ['pretty', nil] if @options[:formats].empty?
152
152
  @options[:formats][-1][1] = v
153
153
  end
154
- opts.on("-t TAGS", "--tags TAGS",
155
- "Only execute the features or scenarios with the specified tags.",
156
- "TAGS must be comma-separated without spaces. Example: --tags @dev\n",
157
- "You can select tags using logical AND or logical OR:",
158
- "To execute anything that is tagged with both @dev AND @prod\n",
159
- "Example: --tags @dev,@prod",
160
- "To execute anything that is tagged with @dev OR @prod\n",
161
- "Example: --tags @dev --tags @prod\n",
162
- "Negative tags: Prefix tags with ~ to exclude features or scenarios",
163
- "having that tag. Example: --tags ~@slow\n",
164
- "Limit WIP: Positive tags can be given a threshold to limit the",
165
- "number of occurrences. Example: --tags @qa:3 will fail if there",
166
- "are more than 3 occurrences of the @qa tag.") do |v|
154
+ opts.on("-t TAG_EXPRESSION", "--tags TAG_EXPRESSION",
155
+ "Only execute the features or scenarios with tags matching TAG_EXPRESSION.",
156
+ "Scenarios inherit tags declared on the Feature level. The simplest",
157
+ "TAG_EXPRESSION is simply a tag. Example: --tags @dev. When a tag in a tag",
158
+ "expression starts with a ~, this represents boolean NOT. Example: --tags ~@dev.",
159
+ "A tag expression can have several tags separated by a comma, which represents",
160
+ "logical OR. Example: --tags @dev,@wip. The --tags option can be specified",
161
+ "several times, and this represents logical AND. Example: --tags @foo,~@bar --tags @zap.",
162
+ "This represents the boolean expression (@foo || !@bar) && @zap.",
163
+ "\n",
164
+ "Positive tags can be given a threshold to limit the number of occurrences.",
165
+ "Example: --tags @qa:3 will fail if there are more than 3 occurrences of the @qa tag.",
166
+ "This can be practical if you are practicing Kanban or CONWIP.") do |v|
167
167
  @options[:tag_expressions] << v
168
168
  end
169
169
  opts.on("-n NAME", "--name NAME",
@@ -275,6 +275,10 @@ module Cucumber
275
275
  self
276
276
  end
277
277
 
278
+ def custom_profiles
279
+ @profiles - [@default_profile]
280
+ end
281
+
278
282
  protected
279
283
 
280
284
  attr_reader :options, :profiles, :expanded_args
@@ -62,14 +62,14 @@ module Cucumber
62
62
  print_stats(nil)
63
63
  end
64
64
 
65
- def print_stats(features)
66
-
65
+ def print_stats(features, profiles = [])
67
66
  @failures = step_mother.scenarios(:failed).select { |s| s.is_a?(Cucumber::Ast::Scenario) }
68
67
 
69
68
  if !@failures.empty?
70
69
  @io.puts format_string("Failing Scenarios:", :failed)
71
70
  @failures.each do |failure|
72
- @io.puts format_string("cucumber " + failure.file_colon_line, :failed) +
71
+ profiles_string = (profiles.map{|profile| "-p #{profile} " }).flatten unless profiles.empty?
72
+ @io.puts format_string("cucumber #{profiles_string}" + failure.file_colon_line, :failed) +
73
73
  format_string(" # Scenario: " + failure.name, :comment)
74
74
  end
75
75
  @io.puts
@@ -302,6 +302,7 @@ module Cucumber
302
302
  end
303
303
  end
304
304
  end
305
+ set_scenario_color_failed
305
306
  end
306
307
  if @outline_row
307
308
  @outline_row += 1
@@ -353,20 +354,28 @@ module Cucumber
353
354
 
354
355
  def set_scenario_color(status)
355
356
  if status == :undefined
356
- @builder.script do
357
- @builder.text!("makeYellow('cucumber-header');") unless @header_red
358
- @builder.text!("makeYellow('scenario_#{@scenario_number}');") unless @scenario_red
359
- end
357
+ set_scenario_color_pending
360
358
  end
361
359
  if status == :failed
362
- @builder.script do
363
- @builder.text!("makeRed('cucumber-header');") unless @header_red
364
- @header_red = true
365
- @builder.text!("makeRed('scenario_#{@scenario_number}');") unless @scenario_red
366
- @scenario_red = true
367
- end
360
+ set_scenario_color_failed
361
+ end
362
+ end
363
+
364
+ def set_scenario_color_failed
365
+ @builder.script do
366
+ @builder.text!("makeRed('cucumber-header');") unless @header_red
367
+ @header_red = true
368
+ @builder.text!("makeRed('scenario_#{@scenario_number}');") unless @scenario_red
369
+ @scenario_red = true
368
370
  end
369
371
  end
372
+
373
+ def set_scenario_color_pending
374
+ @builder.script do
375
+ @builder.text!("makeYellow('cucumber-header');") unless @header_red
376
+ @builder.text!("makeYellow('scenario_#{@scenario_number}');") unless @scenario_red
377
+ end
378
+ end
370
379
 
371
380
  def get_step_count(features)
372
381
  count = 0
@@ -1,9 +1,17 @@
1
1
  require 'cucumber/formatter/console'
2
2
  require 'cucumber/formatter/io'
3
3
  require 'fileutils'
4
- require 'prawn'
5
- require "prawn/layout"
6
- require "prawn/format"
4
+ begin
5
+ gem 'prawn', '=0.6.3'
6
+ require 'prawn'
7
+ require "prawn/layout"
8
+
9
+ gem 'prawn-format', '=0.2.3'
10
+ require "prawn/format"
11
+ rescue LoadError => e
12
+ e.message << "\nPlease gem install prawn --version 0.6.3 && gem install prawn-format --version 0.2.3"
13
+ raise e
14
+ end
7
15
 
8
16
  module Cucumber
9
17
  module Formatter
@@ -146,7 +154,7 @@ module Cucumber
146
154
  return if @hide_this_step
147
155
  if(table.kind_of? Cucumber::Ast::Table)
148
156
  keep_with do
149
- @doc.table(table.rows << table.headers , :position => :center, :row_colors => ['ffffff', 'f0f0f0'])
157
+ @doc.table(table.rows, :headers => table.headers, :position => :center, :row_colors => ['ffffff', 'f0f0f0'])
150
158
  end
151
159
  end
152
160
  end
@@ -226,7 +226,7 @@ module Cucumber
226
226
  end
227
227
 
228
228
  def print_summary(features)
229
- print_stats(features)
229
+ print_stats(features, @options.custom_profiles)
230
230
  print_snippets(@options)
231
231
  print_passing_wip(@options)
232
232
  print_tag_limit_warnings(features)
@@ -43,7 +43,7 @@ module Cucumber
43
43
  def print_summary(features)
44
44
  print_steps(:pending)
45
45
  print_steps(:failed)
46
- print_stats(features)
46
+ print_stats(features, @options.custom_profiles)
47
47
  print_snippets(@options)
48
48
  print_passing_wip(@options)
49
49
  print_tag_limit_warnings(features)
@@ -1,17 +1,10 @@
1
1
  # Require this file if you need Unicode support.
2
+ # Tips for improvement - esp. ruby 1.9: http://www.ruby-forum.com/topic/184730
2
3
  require 'cucumber/platform'
3
4
  require 'cucumber/formatter/ansicolor'
4
5
  $KCODE='u' unless Cucumber::RUBY_1_9
5
6
 
6
7
  if Cucumber::WINDOWS
7
- if Cucumber::WINDOWS_MRI
8
- Cucumber::CODEPAGE = "cp#{Win32::Console::OutputCP()}"
9
- elsif `cmd /c chcp` =~ /(\d+)/
10
- Cucumber::CODEPAGE = "cp#{$1.to_i}"
11
- else
12
- raise "Cucumber couldn't detect the output codepage"
13
- end
14
-
15
8
  require 'iconv'
16
9
 
17
10
  module Cucumber
@@ -22,7 +15,11 @@ if Cucumber::WINDOWS
22
15
  def print(*a)
23
16
  begin
24
17
  cucumber_print(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a.map{|a|a.to_s}))
25
- rescue Iconv::IllegalSequence
18
+ rescue Iconv::InvalidEncoding => e
19
+ STDERR.cucumber_puts("WARNING: #{e.message}")
20
+ cucumber_print(*a)
21
+ rescue Iconv::IllegalSequence => e
22
+ STDERR.cucumber_puts("WARNING: #{e.message}")
26
23
  cucumber_print(*a)
27
24
  end
28
25
  end
@@ -31,7 +28,11 @@ if Cucumber::WINDOWS
31
28
  def puts(*a)
32
29
  begin
33
30
  cucumber_puts(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a.map{|a|a.to_s}))
34
- rescue Iconv::IllegalSequence
31
+ rescue Iconv::InvalidEncoding => e
32
+ STDERR.cucumber_print("WARNING: #{e.message}")
33
+ cucumber_print(*a)
34
+ rescue Iconv::IllegalSequence => e
35
+ STDERR.cucumber_puts("WARNING: #{e.message}")
35
36
  cucumber_puts(*a)
36
37
  end
37
38
  end
@@ -43,4 +44,15 @@ if Cucumber::WINDOWS
43
44
  STDERR.extend(self)
44
45
  end
45
46
  end
47
+
48
+ if ENV['CUCUMBER_OUTPUT_ENCODING']
49
+ Cucumber::CODEPAGE = ENV['CUCUMBER_OUTPUT_ENCODING']
50
+ elsif Cucumber::WINDOWS_MRI
51
+ Cucumber::CODEPAGE = "cp#{Win32::Console::OutputCP()}"
52
+ elsif `cmd /c chcp` =~ /(\d+)/
53
+ Cucumber::CODEPAGE = "cp#{$1.to_i}"
54
+ else
55
+ STDERR.cucumber_puts("WARNING: Couldn't detect your output codepage. Assuming it is 1252. You may have to chcp 1252.")
56
+ Cucumber::CODEPAGE = "cp1252"
57
+ end
46
58
  end
@@ -42,6 +42,10 @@ module Cucumber
42
42
  hook
43
43
  end
44
44
 
45
+ def clear_hooks
46
+ @hooks = nil
47
+ end
48
+
45
49
  def add_transform(transform)
46
50
  transforms.unshift transform
47
51
  transform
@@ -36,10 +36,15 @@ module Cucumber
36
36
  end
37
37
 
38
38
  def fetch_data_from_socket(timeout)
39
- raw_response = Timeout.timeout(timeout) { socket.gets }
39
+ raw_response =
40
+ if timeout == :never
41
+ socket.gets
42
+ else
43
+ Timeout.timeout(timeout) { socket.gets }
44
+ end
40
45
  WirePacket.parse(raw_response)
41
46
  end
42
-
47
+
43
48
  def socket
44
49
  @socket ||= TCPSocket.new(@config.host, @config.port)
45
50
  rescue Errno::ECONNREFUSED => exception
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+ require 'cucumber/wire_support/wire_language'
3
+
4
+ module Cucumber
5
+ module WireSupport
6
+ describe Connection do
7
+ class TestConnection < Connection
8
+ attr_accessor :socket
9
+ end
10
+
11
+ class TestConfiguration
12
+ attr_reader :custom_timeout
13
+
14
+ def initialize
15
+ @custom_timeout = {}
16
+ end
17
+
18
+ def timeout(message = nil)
19
+ return :default_timeout if message.nil?
20
+ @custom_timeout[message] || :custom_timeout
21
+ end
22
+ end
23
+
24
+ before(:each) do
25
+ @config = TestConfiguration.new
26
+ @connection = TestConnection.new(@config)
27
+ @connection.socket = @socket = mock('socket')
28
+ Timeout.stub(:timeout).with(:custom_timeout).and_raise(Timeout::Error.new(''))
29
+ @response = %q{["response"]}
30
+ Timeout.stub(:timeout).with(:default_timeout).and_return(@response)
31
+ end
32
+
33
+ it "re-raises a timeout error" do
34
+ Timeout.stub!(:timeout).and_raise(Timeout::Error.new(''))
35
+ lambda { @connection.call_remote(nil, :foo, []) }.should raise_error(Timeout::Error)
36
+ end
37
+
38
+ it "ignores timeout errors when configured to do so" do
39
+ @config.custom_timeout[:foo] = :never
40
+ @socket.should_receive(:gets).and_return(@response)
41
+ handler = mock(:handle_response => :response)
42
+ @connection.call_remote(handler, :foo, []).should == :response
43
+ end
44
+ end
45
+ end
46
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Aslak Helles\xC3\xB8y"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-03 00:00:00 +01:00
12
+ date: 2010-01-18 00:00:00 +01:00
13
13
  default_executable: cucumber
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -88,10 +88,20 @@ dependencies:
88
88
  version_requirement:
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - ">="
91
+ - - "="
92
92
  - !ruby/object:Gem::Version
93
93
  version: 0.6.3
94
94
  version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: prawn-format
97
+ type: :development
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.3
104
+ version:
95
105
  - !ruby/object:Gem::Dependency
96
106
  name: rspec
97
107
  type: :development
@@ -100,7 +110,17 @@ dependencies:
100
110
  requirements:
101
111
  - - ">="
102
112
  - !ruby/object:Gem::Version
103
- version: 1.2.9
113
+ version: 1.3.0
114
+ version:
115
+ - !ruby/object:Gem::Dependency
116
+ name: syntax
117
+ type: :development
118
+ version_requirement:
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 1.0.0
104
124
  version:
105
125
  - !ruby/object:Gem::Dependency
106
126
  name: spork
@@ -577,8 +597,6 @@ files:
577
597
  - lib/cucumber/step_match.rb
578
598
  - lib/cucumber/step_mother.rb
579
599
  - lib/cucumber/tag_expression.rb
580
- - lib/cucumber/webrat/element_locator.rb
581
- - lib/cucumber/webrat/table_locator.rb
582
600
  - lib/cucumber/wire_support/configuration.rb
583
601
  - lib/cucumber/wire_support/connection.rb
584
602
  - lib/cucumber/wire_support/request_handler.rb
@@ -636,6 +654,7 @@ files:
636
654
  - spec/cucumber/treetop_parser/with_comments.feature
637
655
  - spec/cucumber/treetop_parser/with_tags.feature
638
656
  - spec/cucumber/wire_support/configuration_spec.rb
657
+ - spec/cucumber/wire_support/connection_spec.rb
639
658
  - spec/cucumber/wire_support/wire_exception_spec.rb
640
659
  - spec/cucumber/wire_support/wire_language_spec.rb
641
660
  - spec/cucumber/wire_support/wire_packet_spec.rb
@@ -653,7 +672,7 @@ post_install_message: |+
653
672
 
654
673
  (::) U P G R A D I N G (::)
655
674
 
656
- Thank you for installing cucumber-0.6.1.
675
+ Thank you for installing cucumber-0.6.2.
657
676
  Please be sure to read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
658
677
  for important information about this release. Happy cuking!
659
678
 
@@ -717,6 +736,7 @@ test_files:
717
736
  - spec/cucumber/step_mother_spec.rb
718
737
  - spec/cucumber/tag_expression_spec.rb
719
738
  - spec/cucumber/wire_support/configuration_spec.rb
739
+ - spec/cucumber/wire_support/connection_spec.rb
720
740
  - spec/cucumber/wire_support/wire_exception_spec.rb
721
741
  - spec/cucumber/wire_support/wire_language_spec.rb
722
742
  - spec/cucumber/wire_support/wire_packet_spec.rb
@@ -1,93 +0,0 @@
1
- warning = "\nWARNING: #{caller.detect{|l| l =~ /features/}}: cucumber/webrat/element_locator.rb is deprecated and will be removed in Cucumber 0.6.0.\nUse cucumber/web/tableish instead.\n"
2
- at_exit do
3
- warn warning
4
- end
5
- require 'webrat'
6
-
7
- module Webrat
8
- class Element
9
- # Returns an Array of Array of String where each String is a
10
- # "cell" in the table-like structure represented by this Element.
11
- #
12
- # Supported elements are table, dl, ol and ul. Different conversion
13
- # strategies are used depending on the kind of element:
14
- #
15
- # * table : Each tr becomes a row. The innerHTML of each td or th inside becomes a cell. The number
16
- # of columns is determined by the number of cells in the first row.
17
- # * dl : Each dt becomes a row with 2 cells. The innerHTML of the dt itself and the next dd become cells.
18
- # * ul or ol : Each li becomes a row with one cell, the innerHTML of the li.
19
- #
20
- def to_table
21
- case element.name
22
- when 'table'
23
- table_from_table
24
- when 'dl'
25
- table_from_dl
26
- when /ul|ol/
27
- table_from_list
28
- else
29
- raise "#to_table not supported for #{element.name} elements"
30
- end
31
- end
32
-
33
- def table_from_table #:nodoc:
34
- col_count = nil
35
- element.css('tr').map do |row|
36
- cols = row.css('th,td')
37
- col_count ||= cols.length
38
- cols[0...col_count].map do |col|
39
- col.inner_html
40
- end
41
- end
42
- end
43
-
44
- def table_from_dl #:nodoc:
45
- element.css('dt').map do |dt|
46
- next_node = dt.next_sibling
47
- while next_node.name != 'dd'
48
- next_node = next_node.next_sibling
49
- end
50
- [dt.inner_html, next_node.inner_html]
51
- end
52
- end
53
-
54
- def table_from_list #:nodoc:
55
- element.css('li').map do |li|
56
- [li.inner_html]
57
- end
58
- end
59
-
60
- alias to_a to_table # Backwards compatibility with Cucumber
61
- end
62
-
63
- module Locators
64
- class ElementLocator < Locator #:nodoc:
65
- def locate
66
- Element.load(@session, table_element)
67
- end
68
-
69
- def table_element
70
- @dom.css(@value)[0]
71
- end
72
-
73
- def error_message
74
- "Could not find anything matching '#{@value}'"
75
- end
76
- end
77
-
78
- # Returns a Webrat DOM element located by +css_selector+.
79
- def element_at(css_selector)
80
- ElementLocator.new(@session, dom, css_selector).locate!
81
- end
82
-
83
- alias table_at element_at # Backwards compatibility with Cucumber
84
- end
85
-
86
- module Methods #:nodoc:
87
- delegate_to_session :element_at, :table_at
88
- end
89
-
90
- class Session #:nodoc:
91
- def_delegators :current_scope, :element_at, :table_at
92
- end
93
- end
@@ -1 +0,0 @@
1
- require 'cucumber/webrat/element_locator'