cucumber 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/History.txt +17 -0
  2. data/Manifest.txt +3 -2
  3. data/README.txt +3 -2
  4. data/config/hoe.rb +1 -0
  5. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +1 -1
  6. data/examples/cs/features/step_definitons/calculator_steps.rb +1 -1
  7. data/examples/i18n/Rakefile +18 -2
  8. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +2 -1
  9. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +2 -1
  10. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -1
  11. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -1
  12. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +2 -1
  13. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +2 -1
  14. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -1
  15. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -1
  16. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +2 -1
  17. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +2 -1
  18. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -1
  19. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +2 -1
  20. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +2 -1
  21. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +2 -1
  22. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +2 -1
  23. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -1
  24. data/examples/java/features/step_definitons/hello_steps.rb +1 -1
  25. data/examples/java/features/step_definitons/tree_steps.rb +1 -1
  26. data/examples/selenium/features/step_definitons/stories_steps.rb +1 -1
  27. data/examples/tickets/features/scenario_outline.feature +26 -0
  28. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +8 -0
  29. data/examples/tickets/features/step_definitons/tickets_steps.rb +1 -1
  30. data/examples/watir/README.textile +16 -0
  31. data/examples/watir/features/step_definitons/search_steps.rb +27 -0
  32. data/examples/watir/features/support/env.rb +32 -0
  33. data/gem_tasks/deployment.rake +0 -23
  34. data/gem_tasks/gemspec.rake +4 -0
  35. data/gem_tasks/rspec.rake +2 -2
  36. data/gem_tasks/treetop.rake +1 -1
  37. data/lib/autotest/cucumber_mixin.rb +1 -5
  38. data/lib/cucumber.rb +0 -21
  39. data/lib/cucumber/cli.rb +2 -1
  40. data/lib/cucumber/core_ext/string.rb +1 -1
  41. data/lib/cucumber/formatters/ansicolor.rb +8 -3
  42. data/lib/cucumber/formatters/pretty_formatter.rb +17 -8
  43. data/lib/cucumber/formatters/unicode.rb +5 -5
  44. data/lib/cucumber/platform.rb +28 -6
  45. data/lib/cucumber/rails/rspec.rb +1 -1
  46. data/lib/cucumber/rails/world.rb +1 -1
  47. data/lib/cucumber/rake/task.rb +3 -3
  48. data/lib/cucumber/treetop_parser/feature.treetop.erb +1 -0
  49. data/lib/cucumber/treetop_parser/feature_ar.rb +1 -0
  50. data/lib/cucumber/treetop_parser/feature_cy.rb +1 -0
  51. data/lib/cucumber/treetop_parser/feature_da.rb +1 -0
  52. data/lib/cucumber/treetop_parser/feature_de.rb +1 -0
  53. data/lib/cucumber/treetop_parser/feature_en-lol.rb +1 -0
  54. data/lib/cucumber/treetop_parser/feature_en-tx.rb +1 -0
  55. data/lib/cucumber/treetop_parser/feature_en.rb +1 -0
  56. data/lib/cucumber/treetop_parser/feature_es.rb +1 -0
  57. data/lib/cucumber/treetop_parser/feature_et.rb +1 -0
  58. data/lib/cucumber/treetop_parser/feature_fr.rb +1 -0
  59. data/lib/cucumber/treetop_parser/feature_id.rb +1 -0
  60. data/lib/cucumber/treetop_parser/feature_it.rb +1 -0
  61. data/lib/cucumber/treetop_parser/feature_ja.rb +1 -0
  62. data/lib/cucumber/treetop_parser/feature_lt.rb +1 -0
  63. data/lib/cucumber/treetop_parser/feature_nl.rb +1 -0
  64. data/lib/cucumber/treetop_parser/feature_no.rb +1 -0
  65. data/lib/cucumber/treetop_parser/feature_parser.rb +3 -1
  66. data/lib/cucumber/treetop_parser/feature_pl.rb +1 -0
  67. data/lib/cucumber/treetop_parser/feature_pt.rb +1 -0
  68. data/lib/cucumber/treetop_parser/feature_ro.rb +1 -0
  69. data/lib/cucumber/treetop_parser/feature_ro2.rb +1 -0
  70. data/lib/cucumber/treetop_parser/feature_ru.rb +1 -0
  71. data/lib/cucumber/treetop_parser/feature_se.rb +1 -0
  72. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +1 -0
  73. data/lib/cucumber/version.rb +3 -2
  74. data/spec/cucumber/formatters/pretty_formatter_spec.rb +46 -2
  75. data/spec/cucumber/model/table_spec.rb +19 -5
  76. data/spec/cucumber/rails/stubs/mini_rails.rb +4 -3
  77. data/spec/cucumber/tree/step_outline_spec.rb +2 -2
  78. data/spec/spec_helper.rb +1 -1
  79. metadata +5 -4
  80. data/examples/java/src/cucumber/demo/Hello.java +0 -16
  81. data/examples/watir/features/step_definitons/stories_steps.rb +0 -51
@@ -1,3 +1,20 @@
1
+ == 0.1.14 2009-01-04
2
+
3
+ This is the first release of Cucumber that runs on Ruby 1.9. There are still some encoding-related issues
4
+ with Arabic (ar), Japanese (ja) and Simplified Chinese (zh-CN). Patches are welcome. Other than that -
5
+ a couple of minor bug fixes and polishing.
6
+
7
+ === New features
8
+ * Pretty formatter shows number of scenarios (#139 Joseph Wilk)
9
+ * Rudimentary support for Ruby 1.9. Now it's ok to file Ruby 1.9-related bugs.
10
+
11
+ === Bugfixes
12
+ * Fixed "No such file or directory -- cucumber (LoadError)" bug with AutoTest (Aslak Hellesøy)
13
+ * Fixed `load_missing_constant': uninitialized constant Dispatcher error with Rails (Aslak Hellesøy)
14
+
15
+ === Removed features
16
+ * The #binary= method is gone from the Rake task. It will always point to the binary in the current gem. (Aslak Hellesøy)
17
+
1
18
  == 0.1.13 2008-12-20
2
19
 
3
20
  It's time for some new features again. Output is now much better since you can use diffing, tweak
@@ -96,7 +96,6 @@ examples/java/features/hello.feature
96
96
  examples/java/features/step_definitons/hello_steps.rb
97
97
  examples/java/features/step_definitons/tree_steps.rb
98
98
  examples/java/features/tree.feature
99
- examples/java/src/cucumber/demo/Hello.java
100
99
  examples/selenium/Rakefile
101
100
  examples/selenium/features/search.feature
102
101
  examples/selenium/features/step_definitons/stories_steps.rb
@@ -111,9 +110,11 @@ examples/tickets/features/scenario_outline.feature
111
110
  examples/tickets/features/step_definitons/scenario_outline_steps.rb
112
111
  examples/tickets/features/step_definitons/tickets_steps.rb
113
112
  examples/tickets/features/tickets.feature
113
+ examples/watir/README.textile
114
114
  examples/watir/Rakefile
115
115
  examples/watir/features/search.feature
116
- examples/watir/features/step_definitons/stories_steps.rb
116
+ examples/watir/features/step_definitons/search_steps.rb
117
+ examples/watir/features/support/env.rb
117
118
  features/see_features.feature
118
119
  features/steps/features_steps.rb
119
120
  gem_tasks/deployment.rake
data/README.txt CHANGED
@@ -1,4 +1,5 @@
1
1
  = Cucumber
2
2
 
3
- Please see the "wiki":http://github.com/aslakhellesoy/cucumber/wikis/home
4
- for documentation.
3
+ Cast your ballot for the Cucumber logo! http://cukes.info/
4
+
5
+ Cucumber documentation is over at http://github.com/aslakhellesoy/cucumber/wikis/home
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'cucumber/version'
2
3
 
3
4
  AUTHOR = 'Aslak Hellesøy' # can also be an array of Authors
@@ -1,4 +1,4 @@
1
- require 'spec'
1
+ require 'spec/expectations'
2
2
 
3
3
  class Calculator
4
4
  def push(n)
@@ -1,4 +1,4 @@
1
- require 'spec'
1
+ require 'spec/expectations'
2
2
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
3
  require 'Calculator'
4
4
 
@@ -4,13 +4,29 @@ task :i18n do
4
4
  Dir["#{dir}/*"].each do |f|
5
5
  if File.directory?(f)
6
6
  lang = f[dir.length+1..-1]
7
- Dir.chdir(f) do
8
- rake("features")
7
+ if supported?(lang)
8
+ Dir.chdir(f) do
9
+ rake("features")
10
+ end
11
+ else
12
+ STDERR.puts %{
13
+ !!!!!
14
+ !!!!! SKIPPING #{lang} (Haven't made it work on Ruby 1.9 yet)
15
+ !!!!!
16
+ }
9
17
  end
10
18
  end
11
19
  end
12
20
  end
13
21
 
22
+ def supported?(lang)
23
+ if RUBY_VERSION =~ /^1\.9/
24
+ !%w{ar ja}.index(lang)
25
+ else
26
+ true
27
+ end
28
+ end
29
+
14
30
  def rake(args)
15
31
  ruby(File.join(Gem.bindir, 'rake'), args)
16
32
  end
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'kalkulator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculador'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'kalkulaator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculatrice'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calcolatrice'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  $KCODE = 'e'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'kalkulator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculadora'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'kalkulator'
@@ -1,4 +1,5 @@
1
- require 'spec'
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
2
3
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
4
  require 'cucumber/formatters/unicode'
4
5
  require 'calculator'
@@ -1,4 +1,4 @@
1
- require 'spec' # so we can call .should
1
+ require 'spec/expectations' # so we can call .should
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../src') # so the jar is found
3
3
  require 'cucumber_demo' # puts the jar on the classpath
4
4
  include_class 'cucumber.demo.Hello'
@@ -1,4 +1,4 @@
1
- require 'spec'
1
+ require 'spec/expectations'
2
2
  include_class 'java.util.TreeSet'
3
3
 
4
4
  Given /I have an empty set/ do
@@ -1,4 +1,4 @@
1
- require 'spec'
1
+ require 'spec/expectations'
2
2
  require 'selenium'
3
3
 
4
4
  class GoogleSearch
@@ -61,4 +61,30 @@ Feature: Outlines
61
61
  | 4 | strawberrys| 1 |
62
62
  | 2 | apricots | 5 |
63
63
 
64
+ Scenario Outline: placeholder in a multiline string
65
+ Given my shopping list
66
+ """
67
+ Must buy some <fruits>
68
+ """
69
+ Then my shopping list should equal
70
+ """
71
+ Must buy some cucumbers
72
+ """
73
+
74
+ Examples:
75
+ | fruits |
76
+ | cucumbers |
77
+
78
+ Scenario Outline: placeholder in step table
79
+ Given I have the following fruits in my pantry
80
+ | name | quantity |
81
+ | cucumbers | <quant_cukes> |
82
+ | strawberrys | <quant_straw> |
64
83
 
84
+ When I eat <number> <fruits> from the pantry
85
+ Then I should have <left> <fruits> in the pantry
86
+
87
+ Examples:
88
+ | quant_cukes | quant_straw | number | fruits | left |
89
+ | 10 | 5 | 2 | cucumbers | 8 |
90
+ | 5 | 5 | 4 | strawberrys | 1 |
@@ -12,6 +12,10 @@ Given "I have the following fruits in my pantry" do |pantry_table|
12
12
  end
13
13
  end
14
14
 
15
+ Given "my shopping list" do |list|
16
+ @shopping_list = list
17
+ end
18
+
15
19
  When /^I eat (\d+) (\w+)$/ do |count, fruit|
16
20
  @eattingMachine.eat(count)
17
21
  @eattingMachine.belly_count = count.to_i
@@ -32,3 +36,7 @@ end
32
36
  Then /^I should have (\d+) (\w+) in the pantry$/ do |count, fruit|
33
37
  @pantry.count(fruit).should == count.to_i
34
38
  end
39
+
40
+ Then /^my shopping list should equal$/ do |list|
41
+ @shopping_list.should == list
42
+ end
@@ -1,4 +1,4 @@
1
- require 'spec'
1
+ require 'spec/expectations'
2
2
 
3
3
  World do
4
4
  Object.new
@@ -0,0 +1,16 @@
1
+ Here you'll find examples for Watir, FireWatir, SafariWatir and Celerity.
2
+ All of these browser libraries have the same API, so the example code will
3
+ work with all of them.
4
+
5
+ Just run with:
6
+
7
+ rake features
8
+
9
+ This will use Watir/IE if you're on Windows, and SafariWatir/Safari if you're on OS X.
10
+ You can force the use of FireWatir/Firefox on any platform like this:
11
+
12
+ rake features FIREWATIR=true
13
+
14
+ And finally, you can use Celerity by running in JRuby:
15
+
16
+ jruby -S rake features
@@ -0,0 +1,27 @@
1
+ class GoogleSearch
2
+ def initialize(browser)
3
+ @browser = browser
4
+ end
5
+
6
+ def goto
7
+ @browser.goto 'http://www.google.com/'
8
+ end
9
+
10
+ def search(text)
11
+ @browser.text_field(:name, 'q').set(text)
12
+ @browser.button(:name, 'btnG').click
13
+ end
14
+ end
15
+
16
+ Given 'I am on the Google search page' do
17
+ @page = GoogleSearch.new(@browser)
18
+ @page.goto
19
+ end
20
+
21
+ When /I search for "(.*)"/ do |query|
22
+ @page.search(query)
23
+ end
24
+
25
+ Then /I should see a link to "(.*)":(.*)/ do |text, url|
26
+ @browser.link(:url, url).text.should == text
27
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec/expectations'
2
+
3
+ if ENV['FIREWATIR']
4
+ require 'firewatir'
5
+ Browser = FireWatir::Firefox
6
+ else
7
+ case RUBY_PLATFORM
8
+ when /darwin/
9
+ require 'safariwatir'
10
+ Browser = Watir::Safari
11
+ when /win32|mingw/
12
+ require 'watir'
13
+ Browser = Watir::IE
14
+ when /java/
15
+ require 'celerity'
16
+ Browser = Celerity::Browser
17
+ else
18
+ raise "This platform is not supported (#{PLATFORM})"
19
+ end
20
+ end
21
+
22
+ # "before all"
23
+ browser = Browser.new
24
+
25
+ Before do
26
+ @browser = browser
27
+ end
28
+
29
+ # "after all"
30
+ at_exit do
31
+ browser.close
32
+ end
@@ -1,26 +1,3 @@
1
- desc 'Release the website and new gem version'
2
- task :deploy => [:check_version, :website, :release] do
3
- puts "Remember to create SVN tag:"
4
- puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
- "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
- puts "Suggested comment:"
7
- puts "Tagging release #{CHANGES}"
8
- end
9
-
10
- desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
- task :local_deploy => [:website_generate, :install_gem]
12
-
13
- task :check_version do
14
- unless ENV['VERSION']
15
- puts 'Must pass a VERSION=x.y.z release version'
16
- exit
17
- end
18
- unless ENV['VERSION'] == VERS
19
- puts "Please update your version.rb to match the release version, currently #{VERS}"
20
- exit
21
- end
22
- end
23
-
24
1
  desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
2
  task :install_gem_no_doc => [:clean, :package] do
26
3
  sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
@@ -2,5 +2,9 @@ namespace :gemspec do
2
2
  desc 'Refresh cucumber.gemspec to include ALL files'
3
3
  task :refresh => 'manifest:refresh' do
4
4
  File.open('cucumber.gemspec', 'w') {|io| io.write($hoe.spec.to_ruby)}
5
+ puts "1) git commit -a -m \"Release #{Cucumber::VERSION::STRING}\""
6
+ puts "2) git tag -a \"v#{Cucumber::VERSION::STRING}\" -m \"Release #{Cucumber::VERSION::STRING}\""
7
+ puts "3) git push --tags"
8
+ puts "4) Bounce the version in version.rb"
5
9
  end
6
10
  end
@@ -8,14 +8,14 @@ EOS
8
8
  end
9
9
 
10
10
  def require_spec
11
- require 'spec'
11
+ require 'spec/expectations'
12
12
  rescue LoadError
13
13
  require_spec_with_rubygems
14
14
  end
15
15
 
16
16
  def require_spec_with_rubygems
17
17
  require 'rubygems'
18
- require 'spec'
18
+ require 'spec/expectations'
19
19
  rescue LoadError
20
20
  unable_to_load
21
21
  end
@@ -3,7 +3,7 @@ class FeatureCompiler
3
3
  require 'yaml'
4
4
  require 'erb'
5
5
 
6
- @tt = PLATFORM =~ /mswin|mingw/ ? 'tt.bat' : 'tt'
6
+ @tt = RUBY_PLATFORM =~ /mswin|mingw/ ? 'tt.bat' : 'tt'
7
7
 
8
8
  @template = ERB.new(IO.read(File.dirname(__FILE__) + '/../lib/cucumber/treetop_parser/feature.treetop.erb'))
9
9
  @langs = YAML.load_file(File.dirname(__FILE__) + '/../lib/cucumber/languages.yml')