elight-cucumber 0.1.9
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.
- data/History.txt +150 -0
- data/License.txt +20 -0
- data/Manifest.txt +186 -0
- data/README.txt +41 -0
- data/Rakefile +5 -0
- data/TODO.txt +26 -0
- data/bin/cucumber +4 -0
- data/config/hoe.rb +69 -0
- data/config/requirements.rb +15 -0
- data/cucumber.yml +1 -0
- data/examples/calculator/README.txt +5 -0
- data/examples/calculator/Rakefile +5 -0
- data/examples/calculator/features/addition.feature +17 -0
- data/examples/calculator/features/division.feature +10 -0
- data/examples/calculator/features/steps/calculator_steps.rb +31 -0
- data/examples/calculator/lib/calculator.rb +16 -0
- data/examples/calculator_ruby_features/Rakefile +6 -0
- data/examples/calculator_ruby_features/features/addition.rb +23 -0
- data/examples/calculator_ruby_features/features/steps/calculator_steps.rb +43 -0
- data/examples/calculatrice_francaise_avec_soit_scenario/Rakefile +6 -0
- data/examples/calculatrice_francaise_avec_soit_scenario/features/addition.feature +13 -0
- data/examples/calculatrice_francaise_avec_soit_scenario/features/calculatrice_steps.rb +31 -0
- data/examples/chinese_simplified_calculator/Rakefile +6 -0
- data/examples/chinese_simplified_calculator/features/addition.feature +17 -0
- data/examples/chinese_simplified_calculator/features/steps/calculator_steps.rb +24 -0
- data/examples/chinese_simplified_calculator/lib/calculator.rb +10 -0
- data/examples/cs/README.textile +22 -0
- data/examples/cs/Rakefile +12 -0
- data/examples/cs/features/hello.feature +11 -0
- data/examples/cs/features/steps/hello_steps.rb +25 -0
- data/examples/cs/features/steps/tree_steps.rb +14 -0
- data/examples/cs/features/tree.feature +9 -0
- data/examples/cs/src/Hello.cs +18 -0
- data/examples/danish_calculator/Rakefile +6 -0
- data/examples/danish_calculator/features/steps/kalkulator_steps.rb +22 -0
- data/examples/danish_calculator/features/summering.feature +17 -0
- data/examples/danish_calculator/lib/kalkulator.rb +11 -0
- data/examples/dos_line_endings/Rakefile +6 -0
- data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
- data/examples/estonian_calculator/Rakefile +6 -0
- data/examples/estonian_calculator/features/kalkulaator_steps.rb +35 -0
- data/examples/estonian_calculator/features/liitmine.feature +16 -0
- data/examples/japanese_calculator/README.txt +5 -0
- data/examples/japanese_calculator/Rakefile +6 -0
- data/examples/japanese_calculator/features/addition.feature +17 -0
- data/examples/japanese_calculator/features/division.feature +10 -0
- data/examples/japanese_calculator/features/steps/calculator_steps.rb +30 -0
- data/examples/japanese_calculator/lib/calculator.rb +16 -0
- data/examples/java/README.textile +22 -0
- data/examples/java/Rakefile +12 -0
- data/examples/java/features/hello.feature +11 -0
- data/examples/java/features/steps/hello_steps.rb +25 -0
- data/examples/java/features/steps/tree_steps.rb +14 -0
- data/examples/java/features/tree.feature +9 -0
- data/examples/java/src/cucumber/demo/Hello.java +16 -0
- data/examples/norwegian_calculator/Rakefile +6 -0
- data/examples/norwegian_calculator/features/steps/kalkulator_steps.rb +22 -0
- data/examples/norwegian_calculator/features/summering.feature +17 -0
- data/examples/norwegian_calculator/lib/kalkulator.rb +11 -0
- data/examples/portuguese_calculator/Rakefile +6 -0
- data/examples/portuguese_calculator/features/adicao.feature +10 -0
- data/examples/portuguese_calculator/features/calculadora_steps.rb +31 -0
- data/examples/selenium/Rakefile +6 -0
- data/examples/selenium/features/search.feature +9 -0
- data/examples/selenium/features/steps/stories_steps.rb +41 -0
- data/examples/spanish_calculator/Rakefile +6 -0
- data/examples/spanish_calculator/features/adicion.feature +17 -0
- data/examples/spanish_calculator/features/steps/calculador_steps.rb +22 -0
- data/examples/swedish_calculator/Rakefile +5 -0
- data/examples/swedish_calculator/features/steps/kalkulator_steps.rb +22 -0
- data/examples/swedish_calculator/features/summering.feature +17 -0
- data/examples/swedish_calculator/lib/kalkulator.rb +11 -0
- data/examples/tickets/Rakefile +11 -0
- data/examples/tickets/cucumber.yml +2 -0
- data/examples/tickets/features/steps/tickets_steps.rb +32 -0
- data/examples/tickets/features/tickets.feature +22 -0
- data/examples/watir/Rakefile +6 -0
- data/examples/watir/features/search.feature +9 -0
- data/examples/watir/features/steps/stories_steps.rb +51 -0
- data/features/see_features.feature +8 -0
- data/features/steps/features_steps.rb +9 -0
- data/gem_tasks/deployment.rake +34 -0
- data/gem_tasks/environment.rake +7 -0
- data/gem_tasks/features.rake +6 -0
- data/gem_tasks/fix_cr_lf.rake +10 -0
- data/gem_tasks/flog.rake +4 -0
- data/gem_tasks/gemspec.rake +6 -0
- data/gem_tasks/rspec.rake +21 -0
- data/gem_tasks/treetop.rake +49 -0
- data/lib/cucumber.rb +35 -0
- data/lib/cucumber/cli.rb +191 -0
- data/lib/cucumber/core_ext/proc.rb +55 -0
- data/lib/cucumber/core_ext/string.rb +22 -0
- data/lib/cucumber/executor.rb +143 -0
- data/lib/cucumber/formatters.rb +1 -0
- data/lib/cucumber/formatters/ansicolor.rb +112 -0
- data/lib/cucumber/formatters/cucumber.css +132 -0
- data/lib/cucumber/formatters/cucumber.js +11 -0
- data/lib/cucumber/formatters/html_formatter.rb +128 -0
- data/lib/cucumber/formatters/jquery.js +32 -0
- data/lib/cucumber/formatters/pretty_formatter.rb +211 -0
- data/lib/cucumber/formatters/profile_formatter.rb +92 -0
- data/lib/cucumber/formatters/progress_formatter.rb +51 -0
- data/lib/cucumber/languages.yml +142 -0
- data/lib/cucumber/model.rb +1 -0
- data/lib/cucumber/model/table.rb +28 -0
- data/lib/cucumber/rails/rspec.rb +12 -0
- data/lib/cucumber/rails/world.rb +73 -0
- data/lib/cucumber/rake/task.rb +75 -0
- data/lib/cucumber/step_methods.rb +49 -0
- data/lib/cucumber/step_mother.rb +83 -0
- data/lib/cucumber/tree.rb +18 -0
- data/lib/cucumber/tree/feature.rb +60 -0
- data/lib/cucumber/tree/features.rb +21 -0
- data/lib/cucumber/tree/given_scenario.rb +13 -0
- data/lib/cucumber/tree/scenario.rb +150 -0
- data/lib/cucumber/tree/step.rb +133 -0
- data/lib/cucumber/tree/table.rb +26 -0
- data/lib/cucumber/tree/top_down_visitor.rb +23 -0
- data/lib/cucumber/treetop_parser/feature.treetop.erb +201 -0
- data/lib/cucumber/treetop_parser/feature_da.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_de.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_en-tx.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_en.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_es.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_et.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_fr.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_ja.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_nl.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_no.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_parser.rb +34 -0
- data/lib/cucumber/treetop_parser/feature_pt.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_ru.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_se.rb +1593 -0
- data/lib/cucumber/treetop_parser/feature_zh-CN.rb +1593 -0
- data/lib/cucumber/version.rb +9 -0
- data/rails_generators/cucumber/cucumber_generator.rb +29 -0
- data/rails_generators/cucumber/templates/common_webrat.rb +42 -0
- data/rails_generators/cucumber/templates/cucumber +2 -0
- data/rails_generators/cucumber/templates/cucumber.rake +12 -0
- data/rails_generators/cucumber/templates/cucumber.yml +1 -0
- data/rails_generators/cucumber/templates/env.rb +8 -0
- data/rails_generators/feature/feature_generator.rb +17 -0
- data/rails_generators/feature/templates/feature.erb +28 -0
- data/rails_generators/feature/templates/steps.erb +22 -0
- data/script/console +10 -0
- data/script/console.cmd +1 -0
- data/script/destroy +14 -0
- data/script/destroy.cmd +1 -0
- data/script/generate +14 -0
- data/script/generate.cmd +1 -0
- data/script/txt2html +74 -0
- data/script/txt2html.cmd +1 -0
- data/setup.rb +1585 -0
- data/spec/cucumber/cli_spec.rb +56 -0
- data/spec/cucumber/core_ext/proc_spec.rb +45 -0
- data/spec/cucumber/core_ext/string_spec.rb +34 -0
- data/spec/cucumber/executor_spec.rb +130 -0
- data/spec/cucumber/formatters/ansicolor_spec.rb +35 -0
- data/spec/cucumber/formatters/features.html +269 -0
- data/spec/cucumber/formatters/html_formatter_spec.rb +74 -0
- data/spec/cucumber/formatters/pretty_formatter_spec.rb +111 -0
- data/spec/cucumber/formatters/profile_formatter_spec.rb +193 -0
- data/spec/cucumber/formatters/progress_formatter_spec.rb +45 -0
- data/spec/cucumber/model/table_spec.rb +20 -0
- data/spec/cucumber/rails/stubs/mini_rails.rb +17 -0
- data/spec/cucumber/rails/stubs/test_help.rb +1 -0
- data/spec/cucumber/rails/world_spec.rb +11 -0
- data/spec/cucumber/sell_cucumbers.feature +9 -0
- data/spec/cucumber/step_mother_spec.rb +53 -0
- data/spec/cucumber/tree/feature_spec.rb +12 -0
- data/spec/cucumber/tree/scenario_spec.rb +37 -0
- data/spec/cucumber/tree/step_spec.rb +31 -0
- data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
- data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
- data/spec/cucumber/treetop_parser/feature_parser_spec.rb +96 -0
- data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
- data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
- data/spec/cucumber/treetop_parser/multiline_steps.feature +13 -0
- data/spec/cucumber/treetop_parser/multiple_tables.feature +29 -0
- data/spec/cucumber/treetop_parser/spaces.feature +10 -0
- data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
- data/spec/cucumber/treetop_parser/with_comments.feature +10 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +19 -0
- metadata +288 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Feature: Search
|
|
2
|
+
In order to learn more
|
|
3
|
+
As an information seeker
|
|
4
|
+
I want to find more information
|
|
5
|
+
|
|
6
|
+
Scenario: Find what I'm looking for
|
|
7
|
+
Given I am on the Google search page
|
|
8
|
+
When I search for "rspec"
|
|
9
|
+
Then I should see a link to "RSpec-1.1.4: Overview":http://rspec.info/
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
require 'selenium'
|
|
3
|
+
|
|
4
|
+
class GoogleSearch
|
|
5
|
+
def initialize(browser)
|
|
6
|
+
@browser = browser
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def goto
|
|
10
|
+
@browser.open 'http://www.google.com/'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def search(text)
|
|
14
|
+
@browser.type('q',text)
|
|
15
|
+
@browser.click 'btnG'
|
|
16
|
+
@browser.wait_for_page_to_load
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Before do
|
|
21
|
+
@browser = Selenium::SeleniumDriver.new("localhost", 4444, "*chrome", "http://localhost", 15000)
|
|
22
|
+
@browser.start
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
After do
|
|
26
|
+
@browser.stop
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Given 'I am on the Google search page' do
|
|
30
|
+
@page = GoogleSearch.new(@browser)
|
|
31
|
+
@page.goto
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
When /I search for "(.*)"/ do |query|
|
|
35
|
+
@page.search(query)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
Then /I should see a link to "(.*)":(.*)/ do |text, expected_url|
|
|
39
|
+
observed_url = @browser.get_attribute("link=#{text}@href")
|
|
40
|
+
observed_url.should == expected_url
|
|
41
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Característica: adición
|
|
2
|
+
Para evitar hacer errores tontos
|
|
3
|
+
Como contador
|
|
4
|
+
Quiero saber la suma de los números
|
|
5
|
+
|
|
6
|
+
Escenario: dos números
|
|
7
|
+
Dado que he introducido 5
|
|
8
|
+
Y he introducido 7
|
|
9
|
+
Cuando añado
|
|
10
|
+
Entonces el resultado debe ser 12
|
|
11
|
+
|
|
12
|
+
Escenario: tres números
|
|
13
|
+
Dado que he introducido 5
|
|
14
|
+
Y he introducido 7
|
|
15
|
+
Y he introducido 1
|
|
16
|
+
Cuando añado
|
|
17
|
+
Entonces el resultado debe ser 14
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
3
|
+
require 'calculador'
|
|
4
|
+
|
|
5
|
+
Before do
|
|
6
|
+
@calc = Calculador.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
After do
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Given /he introducido (\d+)/ do |n|
|
|
13
|
+
@calc.push n.to_i
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
When 'añado' do
|
|
17
|
+
@result = @calc.add
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Then /el resultado debe ser (\d*)/ do |result|
|
|
21
|
+
@result.should == result.to_i
|
|
22
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
3
|
+
require 'kalkulator'
|
|
4
|
+
|
|
5
|
+
Before do
|
|
6
|
+
@calc = Kalkulator.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
After do
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Given /att jag har knappat in (\d+)/ do |n|
|
|
13
|
+
@calc.push n.to_i
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
When 'jag summerar' do
|
|
17
|
+
@result = @calc.add
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Then /ska resultatet vara (\d+)/ do |result|
|
|
21
|
+
@result.should == result.to_i
|
|
22
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Egenskap: Summering
|
|
2
|
+
För att slippa att göra dumma fel
|
|
3
|
+
Som räknare
|
|
4
|
+
Vill jag kunna lägga samman
|
|
5
|
+
|
|
6
|
+
Scenario: två tal
|
|
7
|
+
Givet att jag har knappat in 5
|
|
8
|
+
Och att jag har knappat in 7
|
|
9
|
+
När jag summerar
|
|
10
|
+
Så ska resultatet vara 12
|
|
11
|
+
|
|
12
|
+
Scenario: tre tal
|
|
13
|
+
Givet att jag har knappat in 5
|
|
14
|
+
Och att jag har knappat in 4
|
|
15
|
+
Och att jag har knappat in 3
|
|
16
|
+
När jag summerar
|
|
17
|
+
Så ska resultatet vara 12
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../../lib')
|
|
2
|
+
require 'cucumber/rake/task'
|
|
3
|
+
|
|
4
|
+
# Try these:
|
|
5
|
+
#
|
|
6
|
+
# rake features
|
|
7
|
+
# rake features PROFILE=html
|
|
8
|
+
Cucumber::Rake::Task.new do |t|
|
|
9
|
+
profile = ENV['PROFILE'] || 'default'
|
|
10
|
+
t.cucumber_opts = "--profile #{profile}"
|
|
11
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
|
|
3
|
+
Given "be_empty" do
|
|
4
|
+
[1,2].should_not be_empty
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Given "nested step is called" do
|
|
8
|
+
Given "nested step"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Given "nested step" do
|
|
12
|
+
@magic = 'mushroom'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Then "nested step should be executed" do
|
|
16
|
+
@magic.should == 'mushroom'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Given /^the following table$/ do |table|
|
|
20
|
+
@table = table
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
Then /^I should be (\w+) in (\w+)$/ do |key, value|
|
|
24
|
+
hash = @table.hashes[0]
|
|
25
|
+
hash[key].should == value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
Then /^I shoule see a multiline string like$/ do |s|
|
|
29
|
+
s.should == %{A string
|
|
30
|
+
that spans
|
|
31
|
+
several lines}
|
|
32
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Feature: Cucumber
|
|
2
|
+
In order to have a happy user base
|
|
3
|
+
As a Cucumber user
|
|
4
|
+
I don't want no stinkin bugs
|
|
5
|
+
|
|
6
|
+
Scenario: RSpec be_*
|
|
7
|
+
Given be_empty
|
|
8
|
+
|
|
9
|
+
Scenario: Call step from step
|
|
10
|
+
Given nested step is called
|
|
11
|
+
Then nested step should be executed
|
|
12
|
+
|
|
13
|
+
Scenario: Reading a table
|
|
14
|
+
Given the following table
|
|
15
|
+
| born | working |
|
|
16
|
+
| Oslo | London |
|
|
17
|
+
Then I should be working in London
|
|
18
|
+
And I should be born in Oslo
|
|
19
|
+
And I shoule see a multiline string like
|
|
20
|
+
"A string
|
|
21
|
+
that spans
|
|
22
|
+
several lines"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Feature: Search
|
|
2
|
+
In order to learn more
|
|
3
|
+
As an information seeker
|
|
4
|
+
I want to find more information
|
|
5
|
+
|
|
6
|
+
Scenario: Find what I'm looking for
|
|
7
|
+
Given I am on the Google search page
|
|
8
|
+
When I search for "rspec"
|
|
9
|
+
Then I should see a link to "RSpec-1.1.5: Overview":http://rspec.info/
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
|
|
3
|
+
case PLATFORM
|
|
4
|
+
when /darwin/
|
|
5
|
+
require 'safariwatir'
|
|
6
|
+
Browser = Watir::Safari
|
|
7
|
+
when /win32|mingw/
|
|
8
|
+
require 'watir'
|
|
9
|
+
Browser = Watir::IE
|
|
10
|
+
when /java/
|
|
11
|
+
require 'celerity'
|
|
12
|
+
Browser = Celerity::Browser
|
|
13
|
+
else
|
|
14
|
+
raise "This platform is not supported (#{PLATFORM})"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Before do
|
|
18
|
+
@b = Browser.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
After do
|
|
22
|
+
@b.close
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class GoogleSearch
|
|
26
|
+
def initialize(b)
|
|
27
|
+
@b = b
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def goto
|
|
31
|
+
@b.goto 'http://www.google.com/'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def search(text)
|
|
35
|
+
@b.text_field(:name, 'q').set(text)
|
|
36
|
+
@b.button(:name, 'btnG').click
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
Given 'I am on the Google search page' do
|
|
41
|
+
@page = GoogleSearch.new(@b)
|
|
42
|
+
@page.goto
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
When /I search for "(.*)"/ do |query|
|
|
46
|
+
@page.search(query)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Then /I should see a link to "(.*)":(.*)/ do |text, url|
|
|
50
|
+
@b.link(:url, url).text.should == text
|
|
51
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Feature: See features
|
|
2
|
+
In order to make Cucumber features more accessible
|
|
3
|
+
I should be able to see the existing features in a system
|
|
4
|
+
|
|
5
|
+
Scenario: See features as HTML
|
|
6
|
+
Given the feature server is running
|
|
7
|
+
When I visit "/features"
|
|
8
|
+
Then I should see a link to "See features"
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
namespace :manifest do
|
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
|
31
|
+
task :refresh do
|
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
|
33
|
+
end
|
|
34
|
+
end
|
data/gem_tasks/flog.rake
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'spec'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
require 'spec'
|
|
6
|
+
end
|
|
7
|
+
begin
|
|
8
|
+
require 'spec/rake/spectask'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
puts <<-EOS
|
|
11
|
+
To use rspec for testing you must install rspec gem:
|
|
12
|
+
gem install rspec
|
|
13
|
+
EOS
|
|
14
|
+
exit(0)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
desc "Run the specs under spec/models"
|
|
18
|
+
Spec::Rake::SpecTask.new do |t|
|
|
19
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
|
20
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
21
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class FeatureCompiler
|
|
2
|
+
def initialize
|
|
3
|
+
require 'yaml'
|
|
4
|
+
require 'erb'
|
|
5
|
+
|
|
6
|
+
@tt = PLATFORM =~ /mswin|mingw/ ? 'tt.bat' : 'tt'
|
|
7
|
+
|
|
8
|
+
@template = ERB.new(IO.read(File.dirname(__FILE__) + '/../lib/cucumber/treetop_parser/feature.treetop.erb'))
|
|
9
|
+
@langs = YAML.load_file(File.dirname(__FILE__) + '/../lib/cucumber/languages.yml')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def compile_all
|
|
13
|
+
@langs.keys.each do |lang|
|
|
14
|
+
compile(lang)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def compile(lang)
|
|
19
|
+
words = @langs['en'].merge(@langs[lang]) # Use English words if languages.yml is missing a word
|
|
20
|
+
grammar_file = File.dirname(__FILE__) + "/../lib/cucumber/treetop_parser/feature_#{lang}.treetop"
|
|
21
|
+
ruby_file = File.dirname(__FILE__) + "/../lib/cucumber/treetop_parser/feature_#{lang}.rb"
|
|
22
|
+
grammar = @template.result(binding)
|
|
23
|
+
File.open(grammar_file, "wb") do |io|
|
|
24
|
+
io.write(grammar)
|
|
25
|
+
end
|
|
26
|
+
sh "#{@tt} #{grammar_file}"
|
|
27
|
+
FileUtils.rm(grammar_file)
|
|
28
|
+
|
|
29
|
+
# Change code so it isn't part of RDoc
|
|
30
|
+
lines = IO.read(ruby_file).split("\n")
|
|
31
|
+
lines.each do |line|
|
|
32
|
+
if line =~ /\s*(def|class|module)/
|
|
33
|
+
line << " #:nodoc:"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
File.open(ruby_file, 'wb'){|io| io.write(lines.join("\n"))}
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
namespace :treetop do
|
|
41
|
+
desc 'Compile the grammar for all languages in languages.yml'
|
|
42
|
+
task :compile do
|
|
43
|
+
FeatureCompiler.new.compile_all
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task :compile_en do
|
|
47
|
+
FeatureCompiler.new.compile('en')
|
|
48
|
+
end
|
|
49
|
+
end
|