aslakhellesoy-cucumber 0.3.3.2 → 0.3.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/History.txt +10 -1
  2. data/Manifest.txt +4 -0
  3. data/bin/cucumber +11 -1
  4. data/examples/cs/Rakefile +1 -1
  5. data/examples/dos_line_endings/Rakefile +1 -1
  6. data/examples/i18n/ar/Rakefile +1 -1
  7. data/examples/i18n/bg/Rakefile +1 -1
  8. data/examples/i18n/cat/Rakefile +6 -0
  9. data/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  10. data/examples/i18n/cat/features/suma.feature +16 -0
  11. data/examples/i18n/cat/lib/calculadora.rb +16 -0
  12. data/examples/i18n/da/Rakefile +1 -1
  13. data/examples/i18n/de/Rakefile +1 -1
  14. data/examples/i18n/en-lol/Rakefile +1 -1
  15. data/examples/i18n/en/Rakefile +1 -1
  16. data/examples/i18n/es/Rakefile +1 -1
  17. data/examples/i18n/et/Rakefile +1 -1
  18. data/examples/i18n/fi/Rakefile +1 -1
  19. data/examples/i18n/fr/Rakefile +1 -1
  20. data/examples/i18n/he/Rakefile +1 -1
  21. data/examples/i18n/hu/Rakefile +1 -1
  22. data/examples/i18n/id/Rakefile +1 -1
  23. data/examples/i18n/it/Rakefile +1 -1
  24. data/examples/i18n/ja/Rakefile +1 -1
  25. data/examples/i18n/ko/Rakefile +1 -1
  26. data/examples/i18n/lt/Rakefile +1 -1
  27. data/examples/i18n/lt/features/addition.feature +2 -3
  28. data/examples/i18n/lv/Rakefile +1 -1
  29. data/examples/i18n/no/Rakefile +1 -1
  30. data/examples/i18n/pt/Rakefile +1 -1
  31. data/examples/i18n/pt/features/support/env.rb +6 -0
  32. data/examples/i18n/ro/Rakefile +1 -1
  33. data/examples/i18n/ru/Rakefile +1 -1
  34. data/examples/i18n/se/Rakefile +1 -1
  35. data/examples/i18n/sk/Rakefile +1 -1
  36. data/examples/i18n/zh-CN/Rakefile +1 -1
  37. data/examples/i18n/zh-TW/Rakefile +1 -1
  38. data/examples/java/Rakefile +2 -1
  39. data/examples/selenium/Rakefile +1 -1
  40. data/examples/selenium_webrat/Rakefile +1 -1
  41. data/examples/sinatra/Rakefile +1 -1
  42. data/examples/test_unit/Rakefile +1 -1
  43. data/examples/tickets/Rakefile +3 -3
  44. data/examples/watir/Rakefile +1 -1
  45. data/features/rake_task.feature +4 -4
  46. data/features/step_definitions/cucumber_steps.rb +4 -2
  47. data/gem_tasks/features.rake +5 -1
  48. data/lib/cucumber/cli/configuration.rb +16 -24
  49. data/lib/cucumber/cli/main.rb +0 -2
  50. data/lib/cucumber/languages.yml +7 -5
  51. data/lib/cucumber/rake/task.rb +92 -24
  52. data/lib/cucumber/version.rb +1 -1
  53. data/rails_generators/cucumber/templates/cucumber.rake +1 -1
  54. data/spec/cucumber/cli/configuration_spec.rb +9 -18
  55. metadata +7 -2
@@ -1,11 +1,20 @@
1
1
  == 0.3.4 (In Git)
2
2
 
3
+ Hooray - speed improvements when using Rake!
4
+
3
5
  === Bugfixes
4
6
  * Problem with multiple terms in languages.yml (#321 Aslak Hellesøy)
5
7
 
6
8
  === New features
9
+ * Added aliases for Feature and But in Japanese (Leonard Chin)
7
10
  * Support for Catalan (Francesc Esplugas)
8
11
 
12
+ === Changed features
13
+ * Rake task should not shell out (#297 Aslak Hellesøy)
14
+ The Cucumber Rake task will run Cucumber in the same Ruby interpreter as Rake itself
15
+ unless explicitly told to fork a new interpreter. This is to increase speed. You can
16
+ force a new interpreter by setting fork=true or rcov=true in the task.
17
+
9
18
  == 0.3.3 2009-05-10
10
19
 
11
20
  Minor bugfix release, made specially for EuRuKo!
@@ -243,7 +252,7 @@ for multiline arguments are some of the highlights.
243
252
  * Pure Ruby features are no longer supported.
244
253
  * Remove --color option in autotest. Can be added manually in cucumber.yml (#215 Jean-Michel Garnier)
245
254
 
246
- == (0.16.4 aslakhellesoy-cucumber gem on GitHub)
255
+ == (0.1.16.4 aslakhellesoy-cucumber gem on GitHub)
247
256
 
248
257
  Bugfix release.
249
258
 
@@ -29,6 +29,10 @@ examples/i18n/bg/features/step_definitons/calculator_steps.rb
29
29
  examples/i18n/bg/features/support/env.rb
30
30
  examples/i18n/bg/features/support/world.rb
31
31
  examples/i18n/bg/lib/calculator.rb
32
+ examples/i18n/cat/Rakefile
33
+ examples/i18n/cat/features/step_definitons/calculator_steps.rb
34
+ examples/i18n/cat/features/suma.feature
35
+ examples/i18n/cat/lib/calculadora.rb
32
36
  examples/i18n/da/Rakefile
33
37
  examples/i18n/da/features/step_definitons/kalkulator_steps.rb
34
38
  examples/i18n/da/features/summering.feature
@@ -3,4 +3,14 @@
3
3
  $:.unshift(File.dirname(__FILE__ + '.rb') + '/../lib') unless $:.include?(File.dirname(__FILE__ + '.rb') + '/../lib')
4
4
 
5
5
  require 'cucumber/cli/main'
6
- Cucumber::Cli::Main.execute(ARGV.dup) # The dup is to keep ARGV intact, so that tools like ruby-debug can respawn.
6
+ begin
7
+ # The dup is to keep ARGV intact, so that tools like ruby-debug can respawn.
8
+ failure = Cucumber::Cli::Main.execute(ARGV.dup)
9
+ Kernel.exit(failure ? 1 : 0)
10
+ rescue SystemExit => e
11
+ Kernel.exit(e.status)
12
+ rescue Exception => e
13
+ STDERR.puts("#{e.message} (#{e.class})")
14
+ STDERR.puts(e.backtrace.join("\n"))
15
+ Kernel.exit 1
16
+ end
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new(:features) do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
7
7
 
8
8
  task :features => :compile
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language ar"
5
+ t.cucumber_opts = %w{--language ar}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language bg"
5
+ t.cucumber_opts = %w{--language bg}
6
6
  end
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = %w{--language cat}
6
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatter/unicode'
5
+ require 'calculadora'
6
+
7
+ Before do
8
+ @calc = Calculadora.new
9
+ end
10
+
11
+ Donat /que he introduït (\d+) a la calculadora/ do |n|
12
+ @calc.push n.to_i
13
+ end
14
+
15
+ Quan /premo el (\w+)/ do |op|
16
+ @result = @calc.send op
17
+ end
18
+
19
+ Aleshores /el resultat ha de ser (\d+) a la pantalla/ do |result|
20
+ @result.should == result.to_f
21
+ end
@@ -0,0 +1,16 @@
1
+ Característica: Suma
2
+ Per evitar fer errors tontos
3
+ Com un matemàtic idiota
4
+ Vull saber la suma dels números
5
+
6
+ Esquema de l'escenari: Sumar dos números
7
+ Donat que he introduït <entrada_1> a la calculadora
8
+ I que he introduït <entrada_2> a la calculadora
9
+ Quan premo el <botó>
10
+ Aleshores el resultat ha de ser <resultat> a la pantalla
11
+
12
+ Exemples:
13
+ | entrada_1 | entrada_2 | botó | resultat |
14
+ | 20 | 30 | add | 50 |
15
+ | 2 | 5 | add | 7 |
16
+ | 0 | 40 | add | 40 |
@@ -0,0 +1,16 @@
1
+ class Calculadora
2
+
3
+ def push(n)
4
+ @args ||= []
5
+ @args << n
6
+ end
7
+
8
+ def add
9
+ @args.inject(0){|n,sum| sum+=n}
10
+ end
11
+
12
+ def divide
13
+ @args[0].to_f / @args[1].to_f
14
+ end
15
+
16
+ end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language da"
5
+ t.cucumber_opts = %w{--language da}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language de"
5
+ t.cucumber_opts = %w{--language de}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language en-lol"
5
+ t.cucumber_opts = %w{--language en-lol}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language en"
5
+ t.cucumber_opts = %w{--language en}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language es"
5
+ t.cucumber_opts = %w{--language es}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language et"
5
+ t.cucumber_opts = %w{--language et}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language fi"
5
+ t.cucumber_opts = %w{--language fi}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language fr"
5
+ t.cucumber_opts = %w{--language fr}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language he"
5
+ t.cucumber_opts = %w{--language he}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language hu"
5
+ t.cucumber_opts = %w{--language hu}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language id"
5
+ t.cucumber_opts = %w{--language id}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language it"
5
+ t.cucumber_opts = %w{--language it}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language ja"
5
+ t.cucumber_opts = %w{--language ja}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language ko"
5
+ t.cucumber_opts = %w{--language ko}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language lt"
5
+ t.cucumber_opts = %w{--language lt}
6
6
  end
@@ -3,14 +3,13 @@ Sąvybė: Sudėtis
3
3
  Kaip matematinis idiotas
4
4
  Aš noriu, kad man pasakytų dviejų skaičių sumą
5
5
 
6
- # Someone please translate this in languages.yml please
7
- Scenario Outline: dviejų skaičių sudėtis
6
+ Scenarijaus šablonas: dviejų skaičių sudėtis
8
7
  Duota aš įvedžiau <įvestis_1> į skaičiuotuvą
9
8
  Ir aš įvedžiau <įvestis_2> į skaičiuotuvą
10
9
  Kai aš paspaudžiu "<mygtukas>"
11
10
  Tada rezultatas ekrane turi būti <išvestis>
12
11
 
13
- Pavyzdžių
12
+ Pavyzdžiai
14
13
  | įvestis_1 | įvestis_2 | mygtukas | išvestis |
15
14
  | 20 | 30 | add | 50 |
16
15
  | 2 | 5 | add | 7 |
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language lv"
5
+ t.cucumber_opts = %w{--language lv}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language no"
5
+ t.cucumber_opts = %w{--language no}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language pt"
5
+ t.cucumber_opts = %w{--language pt}
6
6
  end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ $KCODE='u' unless Cucumber::RUBY_1_9
3
+ require 'spec/expectations'
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
5
+ require 'cucumber/formatter/unicode'
6
+ require 'calculadora'
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language ro"
5
+ t.cucumber_opts = %w{--language ro}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language ru"
5
+ t.cucumber_opts = %w{--language ru}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language se"
5
+ t.cucumber_opts = %w{--language se}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language sk"
5
+ t.cucumber_opts = %w{--language sk}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language zh-CN"
5
+ t.cucumber_opts = %w{--language zh-CN}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--language zh-TW"
5
+ t.cucumber_opts = %w{--language zh-TW}
6
6
  end
@@ -1,8 +1,9 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
+ raise "This example only works with JRuby" unless Cucumber::JRUBY
4
5
  Cucumber::Rake::Task.new(:features) do |t|
5
- t.cucumber_opts = "--format pretty"
6
+ t.cucumber_opts = %w{--format pretty}
6
7
  end
7
8
 
8
9
  task :features => :compile
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -2,15 +2,15 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new(:pretty) do |t|
5
- t.cucumber_opts = "--tags ~@intentional_failure --format pretty -q"
5
+ t.cucumber_opts = %w{--tags ~@intentional_failure --format pretty -q}
6
6
  end
7
7
 
8
8
  Cucumber::Rake::Task.new(:html) do |t|
9
- t.cucumber_opts = "--tags ~@intentional_failure --format html --out features.html"
9
+ t.cucumber_opts = %w{--tags ~@intentional_failure --format html --out features.html}
10
10
  end
11
11
 
12
12
  Cucumber::Rake::Task.new(:progress) do |t|
13
- t.cucumber_opts = "--tags ~@intentional_failure --format progress -i -s"
13
+ t.cucumber_opts = %w{--tags ~@intentional_failure --format progress -i -s}
14
14
  end
15
15
 
16
16
  task :default => [:pretty, :html, :progress]
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
5
+ t.cucumber_opts = %w{--format pretty}
6
6
  end
@@ -47,7 +47,7 @@ Feature: Rake task
47
47
  Scenario: rake task with a defined profile and cucumber_opts
48
48
  Given the following profile is defined:
49
49
  """
50
- bar: features/missing_step_definitions.feature:3
50
+ bar: ['features/missing_step_definitions.feature:3']
51
51
  """
52
52
  And a file named "Rakefile" with:
53
53
  """
@@ -56,7 +56,7 @@ Feature: Rake task
56
56
 
57
57
  Cucumber::Rake::Task.new(:features) do |t|
58
58
  t.profile = "bar"
59
- t.cucumber_opts = "--quiet --no-color"
59
+ t.cucumber_opts = %w{--quiet --no-color}
60
60
  end
61
61
  """
62
62
  When I run rake features
@@ -82,7 +82,7 @@ Feature: Rake task
82
82
  """
83
83
  Given the following profile is defined:
84
84
  """
85
- baz: --quiet --no-color
85
+ baz: ['--quiet', '--no-color']
86
86
  """
87
87
  And a file named "Rakefile" with:
88
88
  """
@@ -138,7 +138,7 @@ Feature: Rake task
138
138
 
139
139
  Cucumber::Rake::Task.new(:features) do |t|
140
140
  t.profile = "no_bomb"
141
- t.cucumber_opts = "--quiet --no-color"
141
+ t.cucumber_opts = %w{--quiet --no-color}
142
142
  end
143
143
  """
144
144
 
@@ -27,14 +27,16 @@ When /^I run cucumber (.*)$/ do |cucumber_opts|
27
27
  end
28
28
 
29
29
  When /^I run rake (.*)$/ do |rake_opts|
30
- run "rake #{rake_opts}"
30
+ run "rake #{rake_opts} --trace"
31
31
  end
32
32
 
33
33
  Then /^it should (fail|pass)$/ do |success|
34
34
  if success == 'fail'
35
35
  last_exit_status.should_not == 0
36
36
  else
37
- last_exit_status.should == 0
37
+ if last_exit_status != 0
38
+ raise "Failed with exit status #{last_exit_status}\nSTDOUT:\n#{last_stdout}\nSTDERR:\n#{last_stderr}"
39
+ end
38
40
  end
39
41
  end
40
42
 
@@ -2,5 +2,9 @@ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format progress"
5
+ t.cucumber_opts = %w{--format progress}
6
+ end
7
+
8
+ Cucumber::Rake::Task.new('pretty') do |t|
9
+ t.cucumber_opts = %w{--format pretty}
6
10
  end
@@ -15,6 +15,7 @@ module Cucumber
15
15
 
16
16
  @paths = []
17
17
  @options = default_options
18
+
18
19
  @active_format = DEFAULT_FORMAT
19
20
  end
20
21
 
@@ -47,7 +48,7 @@ module Cucumber
47
48
  %{Run with "--language help" to see all languages},
48
49
  %{Run with "--language LANG help" to list keywords for LANG}) do |v|
49
50
  if v == 'help'
50
- list_languages
51
+ list_languages_and_exit
51
52
  elsif args==['help']
52
53
  list_keywords_and_exit(v)
53
54
  else
@@ -208,7 +209,8 @@ module Cucumber
208
209
  formatter_class = formatter_class(format)
209
210
  formatter_class.new(step_mother, out, @options)
210
211
  rescue Exception => e
211
- exit_with_error("Error creating formatter: #{format}", e)
212
+ e.message += "\nError creating formatter: #{format}"
213
+ raise e
212
214
  end
213
215
  end
214
216
 
@@ -244,7 +246,6 @@ module Cucumber
244
246
  files
245
247
  end
246
248
 
247
-
248
249
  def feature_files
249
250
  potential_feature_files = @paths.map do |path|
250
251
  path = path.gsub(/\\/, '/') # In case we're on windows. Globs don't work with backslashes.
@@ -278,7 +279,7 @@ module Cucumber
278
279
 
279
280
  def parse_args_from_profile(profile)
280
281
  unless cucumber_yml.has_key?(profile)
281
- return(exit_with_error <<-END_OF_ERROR)
282
+ raise(<<-END_OF_ERROR)
282
283
  Could not find profile: '#{profile}'
283
284
 
284
285
  Defined profiles in cucumber.yml:
@@ -288,16 +289,16 @@ Defined profiles in cucumber.yml:
288
289
 
289
290
  args_from_yml = cucumber_yml[profile] || ''
290
291
 
291
- if !args_from_yml.is_a?(String)
292
- exit_with_error "Profiles must be defined as a String. The '#{profile}' profile was #{args_from_yml.inspect} (#{args_from_yml.class}).\n"
293
- elsif args_from_yml =~ /^\s*$/
294
- exit_with_error "The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml.\n"
295
- else
296
- parse!(args_from_yml.split(' '))
292
+ case(args_from_yml)
293
+ when String
294
+ raise "The '#{profile}' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml.\n" if args_from_yml =~ /^\s*$/
295
+ args_from_yml = args_from_yml.split(' ')
296
+ when Array
297
+ raise "The '#{profile}' profile in cucumber.yml was empty. Please define the command line arguments for the 'foo' profile in cucumber.yml.\n" if args_from_yml.empty?
298
+ else
299
+ raise "The '#{profile}' profile in cucumber.yml was a #{args_from_yml.class}. It must be a String or Array"
297
300
  end
298
-
299
- rescue YmlLoadError => e
300
- exit_with_error(e.message)
301
+ parse!(args_from_yml)
301
302
  end
302
303
 
303
304
  def cucumber_yml
@@ -322,13 +323,13 @@ Defined profiles in cucumber.yml:
322
323
 
323
324
  def list_keywords_and_exit(lang)
324
325
  unless Cucumber::LANGUAGES[lang]
325
- exit_with_error("No language with key #{lang}")
326
+ raise("No language with key #{lang}")
326
327
  end
327
328
  LanguageHelpFormatter.list_keywords(@out_stream, lang)
328
329
  Kernel.exit
329
330
  end
330
331
 
331
- def list_languages
332
+ def list_languages_and_exit
332
333
  LanguageHelpFormatter.list_languages(@out_stream)
333
334
  Kernel.exit
334
335
  end
@@ -347,15 +348,6 @@ Defined profiles in cucumber.yml:
347
348
  :diff_enabled => true
348
349
  }
349
350
  end
350
-
351
- def exit_with_error(error_message, e=nil)
352
- @error_stream.puts(error_message)
353
- if e
354
- @error_stream.puts("#{e.message} (#{e.class})")
355
- @error_stream.puts(e.backtrace.join("\n"))
356
- end
357
- Kernel.exit 1
358
- end
359
351
  end
360
352
 
361
353
  end
@@ -42,8 +42,6 @@ module Cucumber
42
42
 
43
43
  failure = step_mother.steps(:failed).any? ||
44
44
  (configuration.strict? && step_mother.steps(:undefined).any?)
45
-
46
- Kernel.exit(failure ? 1 : 0)
47
45
  end
48
46
 
49
47
  def load_plain_text_features
@@ -168,7 +168,7 @@
168
168
  background: Rerefons
169
169
  feature: Característica
170
170
  scenario: Escenari
171
- scenario_outline: Esquema de l'escenari
171
+ scenario_outline: Esquema de l\'escenari
172
172
  examples: Exemples
173
173
  given: Donat
174
174
  when: Quan
@@ -285,7 +285,7 @@
285
285
  name: Japanese
286
286
  native: 日本語
287
287
  encoding: UTF-8
288
- feature: フィーチャ
288
+ feature: フィーチャ|機能
289
289
  background: 背景
290
290
  scenario: シナリオ
291
291
  scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
@@ -294,15 +294,17 @@
294
294
  when: もし
295
295
  then: ならば
296
296
  and: かつ
297
- but: しかし
297
+ but: しかし|但し
298
298
  space_after_keyword: false
299
299
  "lt":
300
300
  name: Lithuanian
301
301
  native: lietuvių kalba
302
302
  encoding: UTF-8
303
- feature: Sąvybė
303
+ feature: Savybė
304
+ background: Kontekstas
304
305
  scenario: Scenarijus
305
- examples: Pavyzdžių
306
+ scenario_outline: Scenarijaus šablonas
307
+ examples: Pavyzdžiai|Scenarijai|Variantai
306
308
  given: Duota
307
309
  when: Kai
308
310
  then: Tada
@@ -14,7 +14,7 @@ module Cucumber
14
14
  # To further configure the task, you can pass a block:
15
15
  #
16
16
  # Cucumber::Rake::Task.new do |t|
17
- # t.cucumber_opts = "--format progress"
17
+ # t.cucumber_opts = %w{--format progress}
18
18
  # end
19
19
  #
20
20
  # This task can also be configured to be run with RCov:
@@ -25,7 +25,62 @@ module Cucumber
25
25
  #
26
26
  # See the attributes for additional configuration possibilities.
27
27
  class Task
28
- LIB = File.expand_path(File.dirname(__FILE__) + '/../..') # :nodoc:
28
+ class InProcessCucumberRunner #:nodoc:
29
+ attr_reader :args
30
+
31
+ def initialize(libs, cucumber_opts, feature_files)
32
+ libs.reverse.each{|lib| $:.unshift(lib)}
33
+ @args = (
34
+ cucumber_opts +
35
+ feature_files
36
+ ).flatten.compact
37
+ end
38
+
39
+ def run
40
+ require 'cucumber/cli/main'
41
+ Cucumber::Cli::Main.execute(args)
42
+ end
43
+ end
44
+
45
+ class ForkedCucumberRunner #:nodoc:
46
+ attr_reader :args
47
+
48
+ def initialize(libs, cucumber_bin, cucumber_opts, feature_files)
49
+ @args = (
50
+ ['-I'] + load_path(libs) +
51
+ quoted_binary(cucumber_bin) +
52
+ cucumber_opts +
53
+ feature_files
54
+ ).flatten
55
+ end
56
+
57
+ def load_path(libs)
58
+ ['"%s"' % libs.join(File::PATH_SEPARATOR)]
59
+ end
60
+
61
+ def quoted_binary(cucumber_bin)
62
+ ['"%s"' % cucumber_bin]
63
+ end
64
+
65
+ def run
66
+ ruby(args.join(" ")) # ruby(*args) is broken on Windows
67
+ end
68
+ end
69
+
70
+ class RCovCucumberRunner < ForkedCucumberRunner #:nodoc:
71
+ def initialize(libs, cucumber_bin, cucumber_opts, feature_files, rcov_opts)
72
+ @args = (
73
+ ['-I'] + load_path(libs) +
74
+ ['-S', 'rcov'] + rcov_opts +
75
+ quoted_binary(cucumber_bin) +
76
+ ['--'] +
77
+ cucumber_opts +
78
+ feature_files
79
+ ).flatten
80
+ end
81
+ end
82
+
83
+ LIB = File.expand_path(File.dirname(__FILE__) + '/../..') # :nodoc:
29
84
 
30
85
  # TODO: remove depreated accessors for 0.4.0
31
86
  def self.deprecate_accessor(attribute) # :nodoc:
@@ -40,24 +95,45 @@ module Cucumber
40
95
 
41
96
  # Directories to add to the Ruby $LOAD_PATH
42
97
  attr_accessor :libs
98
+
43
99
  # Name of the cucumber binary to use for running features. Defaults to Cucumber::BINARY
44
100
  attr_accessor :binary
101
+
45
102
  # Array of paths to specific step definition files to use
46
103
  deprecate_accessor :step_list
104
+
47
105
  # File pattern for finding step definitions. Defaults to
48
106
  # 'features/**/*.rb'.
49
107
  deprecate_accessor :step_pattern
108
+
50
109
  # Array of paths to specific features to run.
51
110
  deprecate_accessor :feature_list
111
+
52
112
  # File pattern for finding features to run. Defaults to
53
113
  # 'features/**/*.feature'. Can be overridden by the FEATURE environment variable.
54
114
  deprecate_accessor :feature_pattern
115
+
55
116
  # Extra options to pass to the cucumber binary. Can be overridden by the CUCUMBER_OPTS environment variable.
117
+ # It's recommended to pass an Array, but if it's a String it will be #split by ' '.
56
118
  attr_accessor :cucumber_opts
57
- # Run cucumber with RCov?
119
+ def cucumber_opts=(opts) #:nodoc:
120
+ @cucumber_opts = String === opts ? opts.split(' ') : opts
121
+ end
122
+
123
+ # Run cucumber with RCov? Defaults to false. If you set this to
124
+ # true, +fork+ is implicit.
58
125
  attr_accessor :rcov
59
- # Extra options to pass to rcov
126
+
127
+ # Extra options to pass to rcov.
128
+ # It's recommended to pass an Array, but if it's a String it will be #split by ' '.
60
129
  attr_accessor :rcov_opts
130
+ def rcov_opts=(opts) #:nodoc:
131
+ @rcov_opts = String === opts ? opts.split(' ') : opts
132
+ end
133
+
134
+ # Whether or not to fork a new ruby interpreter. Defaults to false.
135
+ attr_accessor :fork
136
+
61
137
  # Define what profile to be used. When used with cucumber_opts it is simply appended to it. Will be ignored when CUCUMBER_OPTS is used.
62
138
  def profile=(profile)
63
139
  @profile = profile
@@ -69,13 +145,14 @@ module Cucumber
69
145
  end
70
146
  attr_reader :profile
71
147
 
72
- # Define a Rake
148
+ # Define Cucumber Rake task
73
149
  def initialize(task_name = "features", desc = "Run Features with Cucumber")
74
150
  @task_name, @desc = task_name, desc
75
151
  @libs = ['lib']
76
152
  @rcov_opts = %w{--rails --exclude osx\/objc,gems\/}
77
153
 
78
154
  yield self if block_given?
155
+ @fork = true if @rcov
79
156
 
80
157
  @feature_pattern = "features/**/*.feature" if feature_pattern.nil? && feature_list.nil?
81
158
  @step_pattern = "features/**/*.rb" if step_pattern.nil? && step_list.nil?
@@ -89,32 +166,23 @@ module Cucumber
89
166
  def define_task # :nodoc:
90
167
  desc @desc
91
168
  task @task_name do
92
- ruby(arguments_for_ruby_execution.join(" ")) # ruby(*args) is broken on Windows
169
+ runner.run
93
170
  end
94
171
  end
95
172
 
96
- def arguments_for_ruby_execution(task_args = nil) # :nodoc:
97
- lib_args = ['"%s"' % libs.join(File::PATH_SEPARATOR)]
98
- cucumber_bin = ['"%s"' % binary]
99
- cuc_opts = [(ENV['CUCUMBER_OPTS'] || cucumber_opts_with_profile)]
100
-
101
- step_files(task_args).each do |step_file|
102
- cuc_opts << '--require'
103
- cuc_opts << step_file
104
- end
105
-
106
- if rcov
107
- args = (['-I'] + lib_args + ['-S', 'rcov'] + rcov_opts +
108
- cucumber_bin + ['--'] + cuc_opts + feature_files(task_args)).flatten
173
+ def runner(task_args = nil) # :nodoc:
174
+ cucumber_opts = [(ENV['CUCUMBER_OPTS'] || cucumber_opts_with_profile)]
175
+ if(@rcov)
176
+ RCovCucumberRunner.new(libs, binary, cucumber_opts, feature_files(task_args), rcov_opts)
177
+ elsif(@fork)
178
+ ForkedCucumberRunner.new(libs, binary, cucumber_opts, feature_files(task_args))
109
179
  else
110
- args = (['-I'] + lib_args + cucumber_bin + cuc_opts + feature_files(task_args)).flatten
180
+ InProcessCucumberRunner.new(libs, cucumber_opts, feature_files(task_args))
111
181
  end
112
-
113
- args
114
182
  end
115
183
 
116
184
  def cucumber_opts_with_profile # :nodoc:
117
- @profile ? "#{cucumber_opts} --profile #{@profile}" : cucumber_opts
185
+ @profile ? [cucumber_opts, '--profile', @profile] : cucumber_opts
118
186
  end
119
187
 
120
188
  def feature_files(task_args = nil) # :nodoc:
@@ -149,7 +217,7 @@ module Cucumber
149
217
  def define_task # :nodoc:
150
218
  desc @desc
151
219
  task @task_name, :feature_name do |t, args|
152
- ruby(arguments_for_ruby_execution(args).join(" ")) # ruby(*args) is broken on Windows
220
+ runner(args).run
153
221
  end
154
222
  end
155
223
 
@@ -3,7 +3,7 @@ module Cucumber #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
5
  TINY = 3
6
- PATCH = 2 # Set to nil for official release
6
+ PATCH = 3 # Set to nil for official release
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
9
9
  end
@@ -4,7 +4,7 @@ begin
4
4
  require 'cucumber/rake/task'
5
5
 
6
6
  Cucumber::Rake::Task.new(:features) do |t|
7
- t.cucumber_opts = "--format pretty"
7
+ t.t.cucumber_opts = %w{$1}--format pretty"
8
8
  end
9
9
  task :features => 'db:test:prepare'
10
10
  rescue LoadError
@@ -107,8 +107,6 @@ module Cli
107
107
  given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
108
108
 
109
109
  config = Configuration.new(StringIO.new, error = StringIO.new)
110
- config.parse!(%w{--profile i_do_not_exist})
111
-
112
110
  expected_message = <<-END_OF_MESSAGE
113
111
  Could not find profile: 'i_do_not_exist'
114
112
 
@@ -117,16 +115,15 @@ Defined profiles in cucumber.yml:
117
115
  * html_report
118
116
  END_OF_MESSAGE
119
117
 
120
- error.string.should == expected_message
118
+ lambda{config.parse!(%w{--profile i_do_not_exist})}.should raise_error(expected_message)
121
119
  end
122
120
 
123
- it "should provide a helpful error message when a specified profile is not a String" do
121
+ it "should allow array as profile" do
124
122
  given_cucumber_yml_defined_as({'foo' => [1,2,3]})
125
123
 
126
124
  config = Configuration.new(StringIO.new, error = StringIO.new)
127
125
  config.parse!(%w{--profile foo})
128
-
129
- error.string.should == "Profiles must be defined as a String. The 'foo' profile was [1, 2, 3] (Array).\n"
126
+ config.paths.should == [1,2,3]
130
127
  end
131
128
 
132
129
  it "should provide a helpful error message when a specified profile exists but is nil or blank" do
@@ -134,9 +131,8 @@ END_OF_MESSAGE
134
131
  given_cucumber_yml_defined_as({'foo' => bad_input})
135
132
 
136
133
  config = Configuration.new(StringIO.new, error = StringIO.new)
137
- config.parse!(%w{--profile foo})
138
-
139
- error.string.should match(/The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./)
134
+ expected_error = /The 'foo' profile in cucumber.yml was blank. Please define the command line arguments for the 'foo' profile in cucumber.yml./
135
+ lambda{config.parse!(%w{--profile foo})}.should raise_error(expected_error)
140
136
  end
141
137
  end
142
138
 
@@ -144,9 +140,8 @@ END_OF_MESSAGE
144
140
  File.should_receive(:exist?).with('cucumber.yml').and_return(false)
145
141
 
146
142
  config = Configuration.new(StringIO.new, error = StringIO.new)
147
- config.parse!(%w{--profile i_do_not_exist})
148
-
149
- error.string.should match(/cucumber.yml was not found. Please refer to cucumber's documentation on defining profiles in cucumber.yml./)
143
+ expected_error = /cucumber.yml was not found. Please refer to cucumber's documentation on defining profiles in cucumber.yml./
144
+ lambda{config.parse!(%w{--profile i_do_not_exist})}.should raise_error(expected_error)
150
145
  end
151
146
 
152
147
  it "should provide a helpful error message when cucumber.yml is blank or malformed" do
@@ -156,9 +151,7 @@ END_OF_MESSAGE
156
151
  given_cucumber_yml_defined_as(bad_input)
157
152
 
158
153
  config = Configuration.new(StringIO.new, error = StringIO.new)
159
- config.parse!([])
160
-
161
- error.string.should match(expected_error_message)
154
+ lambda{config.parse!([])}.should raise_error(expected_error_message)
162
155
  end
163
156
  end
164
157
 
@@ -169,9 +162,7 @@ END_OF_MESSAGE
169
162
  YAML.should_receive(:load).and_raise Exception
170
163
 
171
164
  config = Configuration.new(StringIO.new, error = StringIO.new)
172
- config.parse!([])
173
-
174
- error.string.should match(expected_error_message)
165
+ lambda{config.parse!([])}.should raise_error(expected_error_message)
175
166
  end
176
167
 
177
168
  it "should accept --dry-run option" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aslakhellesoy-cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3.2
4
+ version: 0.3.3.3
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: 2009-05-11 00:00:00 -07:00
12
+ date: 2009-05-13 00:00:00 -07:00
13
13
  default_executable: cucumber
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -106,6 +106,10 @@ files:
106
106
  - examples/i18n/bg/features/support/env.rb
107
107
  - examples/i18n/bg/features/support/world.rb
108
108
  - examples/i18n/bg/lib/calculator.rb
109
+ - examples/i18n/cat/Rakefile
110
+ - examples/i18n/cat/features/step_definitons/calculator_steps.rb
111
+ - examples/i18n/cat/features/suma.feature
112
+ - examples/i18n/cat/lib/calculadora.rb
109
113
  - examples/i18n/da/Rakefile
110
114
  - examples/i18n/da/features/step_definitons/kalkulator_steps.rb
111
115
  - examples/i18n/da/features/summering.feature
@@ -191,6 +195,7 @@ files:
191
195
  - examples/i18n/pt/Rakefile
192
196
  - examples/i18n/pt/features/adicao.feature
193
197
  - examples/i18n/pt/features/step_definitions/calculadora_steps.rb
198
+ - examples/i18n/pt/features/support/env.rb
194
199
  - examples/i18n/pt/lib/calculadora.rb
195
200
  - examples/i18n/ro/Rakefile
196
201
  - examples/i18n/ro/features/step_definitons/calculator_steps.rb