cucumber 0.4.4 → 0.4.5.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -1
- data/Caliper.yml +5 -0
- data/History.txt +24 -1
- data/Rakefile +1 -1
- data/VERSION.yml +2 -2
- data/cucumber.gemspec +18 -27
- data/cucumber.yml +10 -4
- data/examples/i18n/README.textile +1 -1
- data/examples/i18n/bg/features/consecutive_calculations.feature +1 -1
- data/examples/i18n/bg/features/division.feature +1 -1
- data/examples/i18n/en-lol/Rakefile +1 -3
- data/examples/i18n/en/features/division.feature +4 -4
- data/examples/i18n/et/features/jagamine.feature +1 -1
- data/examples/i18n/fr/features/addition2.feature +17 -0
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +13 -0
- data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +3 -3
- data/examples/i18n/lt/features/addition.feature +2 -2
- data/examples/i18n/lt/features/division.feature +1 -1
- data/examples/i18n/zh-CN/Rakefile +1 -3
- data/examples/i18n/zh-TW/Rakefile +1 -3
- data/examples/tcl/README.textile +11 -0
- data/examples/tcl/Rakefile +6 -0
- data/examples/tcl/features/fibonnacci.feature +17 -0
- data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
- data/examples/tcl/features/support/env.rb +6 -0
- data/examples/tcl/src/fib.tcl +3 -0
- data/examples/tickets/features/177/1.feature +3 -4
- data/examples/tickets/features/177/2.feature +2 -3
- data/examples/tickets/features/241.feature +2 -3
- data/examples/tickets/features/301/filter_background_tagged_hooks.feature +1 -1
- data/features/cucumber_cli.feature +4 -2
- data/features/custom_formatter.feature +32 -31
- data/features/html_formatter/a.html +319 -102
- data/features/language_help.feature +12 -14
- data/features/support/env.rb +1 -1
- data/features/transform.feature +17 -3
- data/gem_tasks/features.rake +3 -1
- data/lib/cucumber/ast/scenario_outline.rb +1 -1
- data/lib/cucumber/ast/step_invocation.rb +2 -2
- data/lib/cucumber/cli/configuration.rb +2 -17
- data/lib/cucumber/cli/language_help_formatter.rb +1 -1
- data/lib/cucumber/cli/options.rb +5 -4
- data/lib/cucumber/formatter/cucumber.css +198 -82
- data/lib/cucumber/formatter/cucumber.sass +173 -71
- data/lib/cucumber/formatter/html.rb +371 -195
- data/lib/cucumber/formatter/io.rb +33 -0
- data/lib/cucumber/formatter/junit.rb +16 -7
- data/lib/cucumber/formatter/pdf.rb +5 -5
- data/lib/cucumber/formatter/pretty.rb +6 -8
- data/lib/cucumber/formatter/progress.rb +4 -2
- data/lib/cucumber/formatter/rerun.rb +4 -2
- data/lib/cucumber/formatter/steps.rb +2 -2
- data/lib/cucumber/formatter/tag_cloud.rb +6 -2
- data/lib/cucumber/formatter/usage.rb +2 -2
- data/lib/cucumber/languages.yml +205 -281
- data/lib/cucumber/parser/feature.rb +348 -82
- data/lib/cucumber/parser/feature.tt +47 -11
- data/lib/cucumber/parser/i18n.tt +7 -17
- data/lib/cucumber/parser/natural_language.rb +45 -18
- data/lib/cucumber/rb_support/rb_transform.rb +1 -1
- data/lib/cucumber/step_mother.rb +2 -3
- data/lib/cucumber/webrat/element_locator.rb +9 -5
- data/spec/cucumber/cli/options_spec.rb +0 -3
- data/spec/cucumber/formatter/html_spec.rb +15 -2
- data/spec/cucumber/formatter/junit_spec.rb +3 -0
- data/spec/cucumber/treetop_parser/fit_scenario.feature +2 -2
- data/spec/cucumber/treetop_parser/given_scenario.feature +1 -1
- data/spec/cucumber/treetop_parser/multiple_tables.feature +2 -2
- data/spec/cucumber/treetop_parser/test_dos.feature +1 -1
- metadata +17 -26
- data/Manifest.txt +0 -0
- data/lib/cucumber/rails/action_controller.rb +0 -38
- data/lib/cucumber/rails/active_record.rb +0 -30
- data/lib/cucumber/rails/rspec.rb +0 -10
- data/lib/cucumber/rails/test_unit.rb +0 -9
- data/lib/cucumber/rails/world.rb +0 -30
- data/rails_generators/cucumber/USAGE +0 -11
- data/rails_generators/cucumber/cucumber_generator.rb +0 -117
- data/rails_generators/cucumber/templates/cucumber +0 -17
- data/rails_generators/cucumber/templates/cucumber.rake +0 -46
- data/rails_generators/cucumber/templates/cucumber_environment.rb +0 -30
- data/rails_generators/cucumber/templates/env.rb +0 -49
- data/rails_generators/cucumber/templates/paths.rb +0 -27
- data/rails_generators/cucumber/templates/spork_env.rb +0 -57
- data/rails_generators/cucumber/templates/version_check.rb +0 -31
- data/rails_generators/cucumber/templates/webrat_steps.rb +0 -241
- data/rails_generators/feature/USAGE +0 -12
- data/rails_generators/feature/feature_generator.rb +0 -40
- data/rails_generators/feature/templates/feature.erb +0 -31
- data/rails_generators/feature/templates/steps.erb +0 -14
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'cucumber/formatter/color_io'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Formatter
|
5
|
+
module Io
|
6
|
+
def ensure_io(path_or_io, name)
|
7
|
+
return nil if path_or_io.nil?
|
8
|
+
return path_or_io if ColorIO === path_or_io || path_or_io.respond_to?(:write)
|
9
|
+
file = File.open(path_or_io, Cucumber.file_mode('w'))
|
10
|
+
at_exit do
|
11
|
+
unless file.closed?
|
12
|
+
file.flush
|
13
|
+
file.close
|
14
|
+
end
|
15
|
+
end
|
16
|
+
file
|
17
|
+
end
|
18
|
+
|
19
|
+
def ensure_file(path, name)
|
20
|
+
raise "You *must* specify --out FILE for the #{name} formatter" unless String === path
|
21
|
+
raise "I can't write #{name} to a directory - it has to be a file" if File.directory?(path)
|
22
|
+
ensure_io(path, name)
|
23
|
+
end
|
24
|
+
|
25
|
+
def ensure_dir(path, name)
|
26
|
+
raise "You *must* specify --out DIR for the #{name} formatter" unless String === path
|
27
|
+
raise "I can't write #{name} reports to a file - it has to be a directory" if File.file?(path)
|
28
|
+
FileUtils.mkdir_p(path) unless File.directory?(path)
|
29
|
+
path
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'cucumber/formatter/ordered_xml_markup'
|
2
|
+
require 'cucumber/formatter/io'
|
3
|
+
require 'fileutils'
|
2
4
|
|
3
5
|
module Cucumber
|
4
6
|
module Formatter
|
5
7
|
# The formatter used for <tt>--format junit</tt>
|
6
8
|
class Junit
|
9
|
+
include Io
|
10
|
+
|
7
11
|
class UnNamedFeatureError < StandardError
|
8
12
|
def initialize(feature_file)
|
9
13
|
super("The feature in '#{feature_file}' does not have a name. The JUnit XML format requires a name for the testsuite element.")
|
@@ -11,8 +15,7 @@ module Cucumber
|
|
11
15
|
end
|
12
16
|
|
13
17
|
def initialize(step_mother, io, options)
|
14
|
-
|
15
|
-
@reportdir = io
|
18
|
+
@reportdir = ensure_dir(io, "junit")
|
16
19
|
@options = options
|
17
20
|
end
|
18
21
|
|
@@ -56,8 +59,9 @@ module Cucumber
|
|
56
59
|
scenario_name = name.strip.delete(".\r\n")
|
57
60
|
scenario_name = "Unnamed scenario" if name.blank?
|
58
61
|
@scenario = scenario_name
|
59
|
-
|
60
|
-
|
62
|
+
description = "Scenario"
|
63
|
+
description << " outline" if keyword.include?('Scenario Outline')
|
64
|
+
@output = "#{description}: #{@scenario}\n\n"
|
61
65
|
end
|
62
66
|
|
63
67
|
def before_steps(steps)
|
@@ -65,7 +69,7 @@ module Cucumber
|
|
65
69
|
end
|
66
70
|
|
67
71
|
def after_steps(steps)
|
68
|
-
return if @in_background || @
|
72
|
+
return if @in_background || @in_examples
|
69
73
|
|
70
74
|
duration = Time.now - @steps_start
|
71
75
|
if steps.failed?
|
@@ -77,16 +81,21 @@ module Cucumber
|
|
77
81
|
|
78
82
|
def before_examples(*args)
|
79
83
|
@header_row = true
|
84
|
+
@in_examples = true
|
85
|
+
end
|
86
|
+
|
87
|
+
def after_examples(*args)
|
88
|
+
@in_examples = false
|
80
89
|
end
|
81
90
|
|
82
91
|
def before_table_row(table_row)
|
83
|
-
return unless @
|
92
|
+
return unless @in_examples
|
84
93
|
|
85
94
|
@table_start = Time.now
|
86
95
|
end
|
87
96
|
|
88
97
|
def after_table_row(table_row)
|
89
|
-
return unless @
|
98
|
+
return unless @in_examples
|
90
99
|
duration = Time.now - @table_start
|
91
100
|
unless @header_row
|
92
101
|
name_suffix = " (outline example : #{table_row.name})"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
require 'fileutils'
|
3
4
|
require 'prawn'
|
4
5
|
require "prawn/layout"
|
@@ -13,11 +14,12 @@ module Cucumber
|
|
13
14
|
class Pdf
|
14
15
|
include FileUtils
|
15
16
|
include Console
|
17
|
+
include Io
|
16
18
|
attr_writer :indent
|
17
19
|
|
18
|
-
def initialize(step_mother,
|
20
|
+
def initialize(step_mother, path_or_io, options)
|
19
21
|
@step_mother = step_mother
|
20
|
-
|
22
|
+
@file = ensure_file(path_or_io, "pdf")
|
21
23
|
|
22
24
|
if(options[:dry_run])
|
23
25
|
@status_colors = { :passed => BLACK, :skipped => BLACK, :undefined => BLACK, :failed => BLACK}
|
@@ -28,12 +30,10 @@ module Cucumber
|
|
28
30
|
@pdf = Prawn::Document.new
|
29
31
|
@scrap = Prawn::Document.new
|
30
32
|
@doc = @scrap
|
31
|
-
@io = io
|
32
33
|
@options = options
|
33
34
|
@exceptions = []
|
34
35
|
@indent = 0
|
35
36
|
@buffer = []
|
36
|
-
puts "writing to #{io.path}"
|
37
37
|
load_cover_page_image
|
38
38
|
@pdf.text "\n\n\nCucumber features", :align => :center, :size => 32
|
39
39
|
@pdf.text "Generated: #{Time.now.strftime("%Y-%m-%d %H:%M")}", :size => 10, :at => [0, 24]
|
@@ -66,7 +66,7 @@ module Cucumber
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def after_features(features)
|
69
|
-
@pdf.render_file(@
|
69
|
+
@pdf.render_file(@file.path)
|
70
70
|
puts "\ndone"
|
71
71
|
end
|
72
72
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
require 'fileutils'
|
3
4
|
|
4
5
|
module Cucumber
|
@@ -13,11 +14,12 @@ module Cucumber
|
|
13
14
|
class Pretty
|
14
15
|
include FileUtils
|
15
16
|
include Console
|
17
|
+
include Io
|
16
18
|
attr_writer :indent
|
17
19
|
attr_reader :step_mother
|
18
20
|
|
19
|
-
def initialize(step_mother,
|
20
|
-
@step_mother, @io, @options = step_mother,
|
21
|
+
def initialize(step_mother, path_or_io, options)
|
22
|
+
@step_mother, @io, @options = step_mother, ensure_io(path_or_io, "pretty"), options
|
21
23
|
@exceptions = []
|
22
24
|
@indent = 0
|
23
25
|
@prefixes = options[:prefixes] || {}
|
@@ -35,14 +37,10 @@ module Cucumber
|
|
35
37
|
file = File.join(@options[:autoformat], feature.file)
|
36
38
|
dir = File.dirname(file)
|
37
39
|
mkdir_p(dir) unless File.directory?(dir)
|
38
|
-
@io =
|
40
|
+
@io = ensure_file(file, "pretty")
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
|
-
def after_feature(*args)
|
43
|
-
@io.close if @options[:autoformat]
|
44
|
-
end
|
45
|
-
|
46
44
|
def comment_line(comment_line)
|
47
45
|
@io.puts(comment_line.indent(@indent))
|
48
46
|
@io.flush
|
@@ -188,7 +186,7 @@ module Cucumber
|
|
188
186
|
print_table_row_announcements
|
189
187
|
@io.puts
|
190
188
|
if table_row.exception && !@exceptions.include?(table_row.exception)
|
191
|
-
print_exception(table_row.exception,
|
189
|
+
print_exception(table_row.exception, table_row.status, @indent)
|
192
190
|
end
|
193
191
|
end
|
194
192
|
|
@@ -1,14 +1,16 @@
|
|
1
1
|
require 'cucumber/formatter/console'
|
2
|
+
require 'cucumber/formatter/io'
|
2
3
|
|
3
4
|
module Cucumber
|
4
5
|
module Formatter
|
5
6
|
# The formatter used for <tt>--format progress</tt>
|
6
7
|
class Progress
|
7
8
|
include Console
|
9
|
+
include Io
|
8
10
|
attr_reader :step_mother
|
9
11
|
|
10
|
-
def initialize(step_mother,
|
11
|
-
@step_mother, @io, @options = step_mother,
|
12
|
+
def initialize(step_mother, path_or_io, options)
|
13
|
+
@step_mother, @io, @options = step_mother, ensure_io(path_or_io, "progress"), options
|
12
14
|
end
|
13
15
|
|
14
16
|
def after_features(features)
|
@@ -11,8 +11,10 @@ module Cucumber
|
|
11
11
|
# to run the next time, simply passing the output string on the command line.
|
12
12
|
#
|
13
13
|
class Rerun
|
14
|
-
|
15
|
-
|
14
|
+
include Io
|
15
|
+
|
16
|
+
def initialize(step_mother, path_or_io, options)
|
17
|
+
@io = ensure_io(path_or_io, "rerun")
|
16
18
|
@options = options
|
17
19
|
@file_names = []
|
18
20
|
@file_colon_lines = Hash.new{|h,k| h[k] = []}
|
@@ -3,8 +3,8 @@ module Cucumber
|
|
3
3
|
# The formatter used for <tt>--format steps</tt>
|
4
4
|
class Steps
|
5
5
|
|
6
|
-
def initialize(step_mother,
|
7
|
-
@io =
|
6
|
+
def initialize(step_mother, path_or_io, options)
|
7
|
+
@io = ensure_io(path_or_io, "steps")
|
8
8
|
@options = options
|
9
9
|
@step_definition_files = collect_steps(step_mother)
|
10
10
|
end
|
@@ -1,10 +1,14 @@
|
|
1
|
+
require 'cucumber/formatter/io'
|
2
|
+
|
1
3
|
module Cucumber
|
2
4
|
module Formatter
|
3
5
|
# The formatter used for <tt>--format tag_cloud</tt>
|
4
6
|
# Custom formatter that prints a tag cloud as a table.
|
5
7
|
class TagCloud
|
6
|
-
|
7
|
-
|
8
|
+
include Io
|
9
|
+
|
10
|
+
def initialize(step_mother, path_or_io, options)
|
11
|
+
@io = ensure_io(path_or_io, "tag_cloud")
|
8
12
|
@options = options
|
9
13
|
@counts = Hash.new{|h,k| h[k] = 0}
|
10
14
|
end
|
@@ -10,9 +10,9 @@ module Cucumber
|
|
10
10
|
attr_accessor :mean_duration, :status
|
11
11
|
end
|
12
12
|
|
13
|
-
def initialize(step_mother,
|
13
|
+
def initialize(step_mother, path_or_io, options)
|
14
14
|
@step_mother = step_mother
|
15
|
-
@io =
|
15
|
+
@io = ensure_io(path_or_io, "usage")
|
16
16
|
@options = options
|
17
17
|
@stepdef_to_match = Hash.new{|h,stepdef_key| h[stepdef_key] = []}
|
18
18
|
end
|
data/lib/cucumber/languages.yml
CHANGED
@@ -9,18 +9,16 @@
|
|
9
9
|
"en":
|
10
10
|
name: English
|
11
11
|
native: English
|
12
|
-
encoding: UTF-8
|
13
12
|
feature: Feature
|
14
13
|
background: Background
|
15
14
|
scenario: Scenario
|
16
15
|
scenario_outline: Scenario Outline
|
17
16
|
examples: Examples|Scenarios
|
18
|
-
given: Given
|
19
|
-
when: When
|
20
|
-
then: Then
|
21
|
-
and: And
|
22
|
-
but: But
|
23
|
-
space_after_keyword: true
|
17
|
+
given: *|Given
|
18
|
+
when: *|When
|
19
|
+
then: *|Then
|
20
|
+
and: *|And
|
21
|
+
but: *|But
|
24
22
|
|
25
23
|
# Please help us keeping the languages below uptodate. The parsers for a language
|
26
24
|
# that is missing a keyword will expect the English word until the missing word(s)
|
@@ -31,581 +29,507 @@
|
|
31
29
|
"ar":
|
32
30
|
name: Arabic
|
33
31
|
native: العربية
|
34
|
-
encoding: UTF-8
|
35
32
|
feature: خاصية
|
36
33
|
background: الخلفية
|
37
34
|
scenario: سيناريو
|
38
35
|
scenario_outline: سيناريو مخطط
|
39
36
|
examples: امثلة
|
40
|
-
given:
|
41
|
-
when:
|
42
|
-
then:
|
43
|
-
and:
|
44
|
-
but:
|
45
|
-
space_after_keyword: true
|
37
|
+
given: *|بفرض
|
38
|
+
when: *|متى|عندما
|
39
|
+
then: *|اذاً|ثم
|
40
|
+
and: *|و
|
41
|
+
but: *|لكن
|
46
42
|
"bg":
|
47
43
|
name: Bulgarian
|
48
44
|
native: български
|
49
|
-
encoding: UTF-8
|
50
45
|
feature: Функционалност
|
51
46
|
background: Предистория
|
52
47
|
scenario: Сценарий
|
53
48
|
scenario_outline: Рамка на сценарий
|
54
49
|
examples: Примери
|
55
|
-
given:
|
56
|
-
when:
|
57
|
-
then:
|
58
|
-
and:
|
59
|
-
but:
|
60
|
-
space_after_keyword: true
|
50
|
+
given: *|Дадено
|
51
|
+
when: *|Когато
|
52
|
+
then: *|То
|
53
|
+
and: *|И
|
54
|
+
but: *|Но
|
61
55
|
"cat":
|
62
56
|
name: Catalan
|
63
57
|
native: català
|
64
|
-
encoding: UTF-8
|
65
58
|
background: Rerefons|Antecedents
|
66
59
|
feature: Característica
|
67
60
|
scenario: Escenari
|
68
|
-
scenario_outline: Esquema de l
|
61
|
+
scenario_outline: Esquema de l'escenari
|
69
62
|
examples: Exemples
|
70
|
-
given: Donat|Donada
|
71
|
-
when: Quan
|
72
|
-
then: Aleshores
|
73
|
-
and: I
|
74
|
-
but: Però
|
75
|
-
space_after_keyword: true
|
63
|
+
given: *|Donat|Donada
|
64
|
+
when: *|Quan
|
65
|
+
then: *|Aleshores
|
66
|
+
and: *|I
|
67
|
+
but: *|Però
|
76
68
|
"cy":
|
77
69
|
name: Welsh
|
78
70
|
native: Cymraeg
|
79
|
-
|
71
|
+
background: Cefndir
|
80
72
|
feature: Arwedd
|
81
73
|
scenario: Scenario
|
74
|
+
scenario_outline: Scenario Amlinellol
|
82
75
|
examples: Enghreifftiau
|
83
|
-
given: anrhegedig a
|
84
|
-
when: Pryd
|
85
|
-
then: Yna
|
86
|
-
and: A
|
87
|
-
but: Ond
|
88
|
-
space_after_keyword: true
|
76
|
+
given: *|anrhegedig a
|
77
|
+
when: *|Pryd
|
78
|
+
then: *|Yna
|
79
|
+
and: *|A
|
80
|
+
but: *|Ond
|
89
81
|
"cs":
|
90
82
|
name: Czech
|
91
83
|
native: Česky
|
92
|
-
encoding: UTF-8
|
93
84
|
feature: Požadavek
|
94
85
|
background: Pozadí|Kontext
|
95
86
|
scenario: Scénář
|
96
87
|
scenario_outline: Náčrt Scénáře|Osnova scénáře
|
97
88
|
examples: Příklady
|
98
|
-
given: Pokud
|
99
|
-
when: Když
|
100
|
-
then: Pak
|
101
|
-
and: A|A také
|
102
|
-
but: Ale
|
103
|
-
space_after_keyword: true
|
89
|
+
given: *|Pokud
|
90
|
+
when: *|Když
|
91
|
+
then: *|Pak
|
92
|
+
and: *|A|A také
|
93
|
+
but: *|Ale
|
104
94
|
"da":
|
105
95
|
name: Danish
|
106
96
|
native: dansk
|
107
|
-
encoding: UTF-8
|
108
97
|
feature: Egenskab
|
109
98
|
background: Baggrund
|
110
99
|
scenario: Scenarie
|
111
100
|
scenario_outline: Abstrakt Scenario
|
112
101
|
examples: Eksempler
|
113
|
-
given: Givet
|
114
|
-
when: Når
|
115
|
-
then: Så
|
116
|
-
and: Og
|
117
|
-
but: Men
|
118
|
-
space_after_keyword: true
|
102
|
+
given: *|Givet
|
103
|
+
when: *|Når
|
104
|
+
then: *|Så
|
105
|
+
and: *|Og
|
106
|
+
but: *|Men
|
119
107
|
"de":
|
120
108
|
name: German
|
121
109
|
native: Deutsch
|
122
|
-
encoding: UTF-8
|
123
110
|
feature: Funktionalität
|
124
111
|
background: Grundlage
|
125
112
|
scenario: Szenario
|
126
113
|
scenario_outline: Szenariogrundriss
|
127
114
|
examples: Beispiele
|
128
|
-
given: Gegeben sei
|
129
|
-
when: Wenn
|
130
|
-
then: Dann
|
131
|
-
and: Und
|
132
|
-
but: Aber
|
133
|
-
space_after_keyword: true
|
115
|
+
given: *|Gegeben sei
|
116
|
+
when: *|Wenn
|
117
|
+
then: *|Dann
|
118
|
+
and: *|Und
|
119
|
+
but: *|Aber
|
134
120
|
"en-au":
|
135
121
|
name: Australian
|
136
122
|
native: Australian
|
137
|
-
encoding: UTF-8
|
138
123
|
feature: Crikey
|
139
124
|
background: Background
|
140
125
|
scenario: Mate
|
141
126
|
scenario_outline: Blokes
|
142
127
|
examples: Cobber
|
143
|
-
given: Ya know how
|
144
|
-
when: When
|
145
|
-
then: Ya gotta
|
146
|
-
and: N
|
147
|
-
but: Cept
|
148
|
-
space_after_keyword: true
|
128
|
+
given: *|Ya know how
|
129
|
+
when: *|When
|
130
|
+
then: *|Ya gotta
|
131
|
+
and: *|N
|
132
|
+
but: *|Cept
|
149
133
|
"en-lol":
|
150
134
|
name: LOLCAT
|
151
135
|
native: LOLCAT
|
152
|
-
encoding: UTF-8
|
153
136
|
feature: OH HAI
|
154
137
|
background: B4
|
155
138
|
scenario: MISHUN
|
156
139
|
scenario_outline: MISHUN SRSLY
|
157
140
|
examples: EXAMPLZ
|
158
|
-
given: I CAN HAZ
|
159
|
-
when: WEN
|
160
|
-
then: DEN
|
161
|
-
and: AN
|
162
|
-
but: BUT
|
163
|
-
space_after_keyword: true
|
141
|
+
given: *|I CAN HAZ
|
142
|
+
when: *|WEN
|
143
|
+
then: *|DEN
|
144
|
+
and: *|AN
|
145
|
+
but: *|BUT
|
164
146
|
"en-tx":
|
165
147
|
name: Texan
|
166
148
|
native: Texan
|
167
|
-
encoding: UTF-8
|
168
149
|
feature: Feature
|
169
150
|
background: Background
|
170
151
|
scenario: Scenario
|
171
|
-
scenario_outline: All y
|
152
|
+
scenario_outline: All y'all
|
172
153
|
examples: Examples
|
173
|
-
given: Given y
|
174
|
-
when: When y
|
175
|
-
then: Then y
|
176
|
-
and: And y
|
177
|
-
but: But y
|
178
|
-
space_after_keyword: true
|
154
|
+
given: *|Given y'all
|
155
|
+
when: *|When y'all
|
156
|
+
then: *|Then y'all
|
157
|
+
and: *|And y'all
|
158
|
+
but: *|But y'all
|
179
159
|
"es":
|
180
160
|
name: Spanish
|
181
161
|
native: español
|
182
|
-
encoding: UTF-8
|
183
162
|
background: Antecedentes
|
184
163
|
feature: Característica
|
185
164
|
scenario: Escenario
|
186
165
|
scenario_outline: Esquema del escenario
|
187
166
|
examples: Ejemplos
|
188
|
-
given: Dado
|
189
|
-
when: Cuando
|
190
|
-
then: Entonces
|
191
|
-
and: Y
|
192
|
-
but: Pero
|
193
|
-
space_after_keyword: true
|
167
|
+
given: *|Dado
|
168
|
+
when: *|Cuando
|
169
|
+
then: *|Entonces
|
170
|
+
and: *|Y
|
171
|
+
but: *|Pero
|
194
172
|
"et":
|
195
173
|
name: Estonian
|
196
174
|
native: eesti keel
|
197
|
-
encoding: UTF-8
|
198
175
|
feature: Omadus
|
199
176
|
background: Taust
|
200
177
|
scenario: Stsenaarium
|
201
178
|
scenario_outline: Raamstsenaarium
|
202
179
|
examples: Juhtumid
|
203
|
-
given: Eeldades
|
204
|
-
when: Kui
|
205
|
-
then: Siis
|
206
|
-
and: Ja
|
207
|
-
but: Kuid
|
208
|
-
space_after_keyword: true
|
180
|
+
given: *|Eeldades
|
181
|
+
when: *|Kui
|
182
|
+
then: *|Siis
|
183
|
+
and: *|Ja
|
184
|
+
but: *|Kuid
|
209
185
|
"fi":
|
210
186
|
name: Finnish
|
211
187
|
native: suomi
|
212
|
-
encoding: UTF-8
|
213
188
|
feature: Ominaisuus
|
214
189
|
background: Tausta
|
215
190
|
scenario: Tapaus
|
216
191
|
scenario_outline: Tapausaihio
|
217
192
|
examples: Tapaukset
|
218
|
-
given: Oletetaan
|
219
|
-
when: Kun
|
220
|
-
then: Niin
|
221
|
-
and: Ja
|
222
|
-
but: Mutta
|
223
|
-
space_after_keyword: true
|
193
|
+
given: *|Oletetaan
|
194
|
+
when: *|Kun
|
195
|
+
then: *|Niin
|
196
|
+
and: *|Ja
|
197
|
+
but: *|Mutta
|
224
198
|
"fr":
|
225
199
|
name: French
|
226
200
|
native: français
|
227
|
-
encoding: UTF-8
|
228
201
|
feature: Fonctionnalité
|
229
202
|
background: Contexte
|
230
203
|
scenario: Scénario
|
231
|
-
scenario_outline: Plan du Scénario
|
204
|
+
scenario_outline: Plan du scénario|Plan du Scénario
|
232
205
|
examples: Exemples
|
233
|
-
given: Soit
|
234
|
-
when: Lorsque
|
235
|
-
then: Alors
|
236
|
-
and: Et
|
237
|
-
but: Mais
|
238
|
-
space_after_keyword: true
|
206
|
+
given: *|Soit|Etant donné
|
207
|
+
when: *|Quand|Lorsque|Lorsqu'<
|
208
|
+
then: *|Alors
|
209
|
+
and: *|Et
|
210
|
+
but: *|Mais
|
239
211
|
"he":
|
240
212
|
name: Hebrew
|
241
213
|
native: עברית
|
242
|
-
encoding: UTF-8
|
243
214
|
feature: תכונה
|
244
215
|
background: רקע
|
245
216
|
scenario: תרחיש
|
246
217
|
scenario_outline: תבנית תרחיש
|
247
218
|
examples: דוגמאות
|
248
|
-
given:
|
249
|
-
when:
|
250
|
-
then:
|
251
|
-
and:
|
252
|
-
but:
|
253
|
-
space_after_keyword: true
|
219
|
+
given: *|בהינתן
|
220
|
+
when: *|כאשר
|
221
|
+
then: *|אז|אזי
|
222
|
+
and: *|וגם
|
223
|
+
but: *|אבל
|
254
224
|
"hr":
|
255
225
|
name: Croatian
|
256
226
|
native: hrvatski
|
257
|
-
encoding: UTF-8
|
258
227
|
feature: Osobina|Mogućnost|Mogucnost
|
259
228
|
background: Pozadina
|
260
229
|
scenario: Scenarij
|
261
230
|
scenario_outline: Skica|Koncept
|
262
231
|
examples: Primjeri|Scenariji
|
263
|
-
given: Zadan|Zadani|Zadano
|
264
|
-
when: Kada|Kad
|
265
|
-
then: Onda
|
266
|
-
and: I
|
267
|
-
but: Ali
|
268
|
-
space_after_keyword: true
|
232
|
+
given: *|Zadan|Zadani|Zadano
|
233
|
+
when: *|Kada|Kad
|
234
|
+
then: *|Onda
|
235
|
+
and: *|I
|
236
|
+
but: *|Ali
|
269
237
|
"hu":
|
270
238
|
name: Hungarian
|
271
239
|
native: magyar
|
272
|
-
encoding: UTF-8
|
273
240
|
feature: Jellemző
|
274
241
|
background: Háttér
|
275
242
|
scenario: Forgatókönyv
|
276
243
|
scenario_outline: Forgatókönyv vázlat
|
277
244
|
examples: Példák
|
278
|
-
given: Ha
|
279
|
-
when: Majd
|
280
|
-
then: Akkor
|
281
|
-
and:
|
282
|
-
but: De
|
283
|
-
space_after_keyword: true
|
245
|
+
given: *|Ha
|
246
|
+
when: *|Majd
|
247
|
+
then: *|Akkor
|
248
|
+
and: *|És
|
249
|
+
but: *|De
|
284
250
|
"id":
|
285
251
|
name: Indonesian
|
286
252
|
native: Bahasa Indonesia
|
287
|
-
encoding: UTF-8
|
288
253
|
feature: Fitur
|
289
254
|
background: Dasar
|
290
255
|
scenario: Skenario
|
291
256
|
scenario_outline: Skenario konsep
|
292
257
|
examples: Contoh
|
293
|
-
given: Dengan
|
294
|
-
when: Ketika
|
295
|
-
then: Maka
|
296
|
-
and: Dan
|
297
|
-
but: Tapi
|
298
|
-
space_after_keyword: true
|
258
|
+
given: *|Dengan
|
259
|
+
when: *|Ketika
|
260
|
+
then: *|Maka
|
261
|
+
and: *|Dan
|
262
|
+
but: *|Tapi
|
299
263
|
"it":
|
300
264
|
name: Italian
|
301
265
|
native: italiano
|
302
|
-
encoding: UTF-8
|
303
266
|
feature: Funzionalità
|
304
267
|
background: Contesto
|
305
268
|
scenario: Scenario
|
306
269
|
scenario_outline: Schema dello scenario
|
307
270
|
examples: Esempi
|
308
|
-
given: Dato
|
309
|
-
when: Quando
|
310
|
-
then: Allora
|
311
|
-
and: E
|
312
|
-
but: Ma
|
313
|
-
space_after_keyword: true
|
271
|
+
given: *|Dato
|
272
|
+
when: *|Quando
|
273
|
+
then: *|Allora
|
274
|
+
and: *|E
|
275
|
+
but: *|Ma
|
314
276
|
"ja":
|
315
277
|
name: Japanese
|
316
278
|
native: 日本語
|
317
|
-
encoding: UTF-8
|
318
279
|
feature: フィーチャ|機能
|
319
280
|
background: 背景
|
320
281
|
scenario: シナリオ
|
321
282
|
scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
|
322
283
|
examples: 例|サンプル
|
323
|
-
given:
|
324
|
-
when:
|
325
|
-
then:
|
326
|
-
and:
|
327
|
-
but:
|
328
|
-
space_after_keyword: false
|
284
|
+
given: *|前提<
|
285
|
+
when: *|もし<
|
286
|
+
then: *|ならば<
|
287
|
+
and: *|かつ<
|
288
|
+
but: *|しかし<|但し<|ただし<
|
329
289
|
"ko":
|
330
290
|
name: Korean
|
331
291
|
native: 한국어
|
332
|
-
encoding: UTF-8
|
333
292
|
background: 배경
|
334
293
|
feature: 기능
|
335
294
|
scenario: 시나리오
|
336
295
|
scenario_outline: 시나리오 개요
|
337
296
|
examples: 예
|
338
|
-
given:
|
339
|
-
when:
|
340
|
-
then:
|
341
|
-
and:
|
342
|
-
but:
|
343
|
-
space_after_keyword: false
|
297
|
+
given: *|조건<
|
298
|
+
when: *|만일<
|
299
|
+
then: *|그러면<
|
300
|
+
and: *|그리고<
|
301
|
+
but: *|하지만<
|
344
302
|
"lt":
|
345
303
|
name: Lithuanian
|
346
304
|
native: lietuvių kalba
|
347
|
-
encoding: UTF-8
|
348
305
|
feature: Savybė
|
349
306
|
background: Kontekstas
|
350
307
|
scenario: Scenarijus
|
351
308
|
scenario_outline: Scenarijaus šablonas
|
352
309
|
examples: Pavyzdžiai|Scenarijai|Variantai
|
353
|
-
given: Duota
|
354
|
-
when: Kai
|
355
|
-
then: Tada
|
356
|
-
and: Ir
|
357
|
-
but: Bet
|
358
|
-
space_after_keyword: true
|
310
|
+
given: *|Duota
|
311
|
+
when: *|Kai
|
312
|
+
then: *|Tada
|
313
|
+
and: *|Ir
|
314
|
+
but: *|Bet
|
359
315
|
"lv":
|
360
316
|
name: Latvian
|
361
317
|
native: latviešu
|
362
|
-
encoding: UTF-8
|
363
318
|
feature: Funkcionalitāte|Fīča
|
364
319
|
background: Konteksts|Situācija
|
365
320
|
scenario: Scenārijs
|
366
321
|
scenario_outline: Scenārijs pēc parauga
|
367
322
|
examples: Piemēri|Paraugs
|
368
|
-
given: Kad
|
369
|
-
when: Ja
|
370
|
-
then: Tad
|
371
|
-
and: Un
|
372
|
-
but: Bet
|
373
|
-
space_after_keyword: true
|
323
|
+
given: *|Kad
|
324
|
+
when: *|Ja
|
325
|
+
then: *|Tad
|
326
|
+
and: *|Un
|
327
|
+
but: *|Bet
|
374
328
|
"nl":
|
375
329
|
name: Dutch
|
376
330
|
native: Nederlands
|
377
|
-
encoding: UTF-8
|
378
331
|
feature: Functionaliteit
|
379
332
|
background: Achtergrond
|
380
333
|
scenario: Scenario
|
381
334
|
scenario_outline: Abstract Scenario
|
382
335
|
examples: Voorbeelden
|
383
|
-
given: Gegeven
|
384
|
-
when: Als
|
385
|
-
then: Dan
|
386
|
-
and: En
|
387
|
-
but: Maar
|
388
|
-
space_after_keyword: true
|
336
|
+
given: *|Gegeven
|
337
|
+
when: *|Als
|
338
|
+
then: *|Dan
|
339
|
+
and: *|En
|
340
|
+
but: *|Maar
|
389
341
|
"no":
|
390
342
|
name: Norwegian
|
391
343
|
native: norsk
|
392
|
-
encoding: UTF-8
|
393
344
|
feature: Egenskap
|
394
345
|
background: Bakgrunn
|
395
346
|
scenario: Scenario
|
396
347
|
scenario_outline: Abstrakt Scenario
|
397
348
|
examples: Eksempler
|
398
|
-
given: Gitt
|
399
|
-
when: Når
|
400
|
-
then: Så
|
401
|
-
and: Og
|
402
|
-
but: Men
|
403
|
-
space_after_keyword: true
|
349
|
+
given: *|Gitt
|
350
|
+
when: *|Når
|
351
|
+
then: *|Så
|
352
|
+
and: *|Og
|
353
|
+
but: *|Men
|
404
354
|
"pl":
|
405
355
|
name: Polish
|
406
356
|
native: polski
|
407
|
-
encoding: UTF-8
|
408
357
|
feature: Właściwość
|
409
358
|
background: Założenia
|
410
359
|
scenario: Scenariusz
|
411
360
|
scenario_outline: Szablon scenariusza
|
412
361
|
examples: Przykłady
|
413
|
-
given: Zakładając
|
414
|
-
when: Jeżeli
|
415
|
-
then: Wtedy
|
416
|
-
and: Oraz
|
417
|
-
but: Ale
|
418
|
-
space_after_keyword: true
|
362
|
+
given: *|Zakładając
|
363
|
+
when: *|Jeżeli
|
364
|
+
then: *|Wtedy
|
365
|
+
and: *|Oraz
|
366
|
+
but: *|Ale
|
419
367
|
"pt":
|
420
368
|
name: Portuguese
|
421
369
|
native: português
|
422
|
-
encoding: UTF-8
|
423
370
|
background: Contexto
|
424
371
|
feature: Funcionalidade
|
425
372
|
scenario: Cenário|Cenario
|
426
373
|
scenario_outline: Esquema do Cenário|Esquema do Cenario
|
427
374
|
examples: Exemplos
|
428
|
-
given: Dado
|
429
|
-
when: Quando
|
430
|
-
then: Então|Entao
|
431
|
-
and: E
|
432
|
-
but: Mas
|
433
|
-
space_after_keyword: true
|
375
|
+
given: *|Dado
|
376
|
+
when: *|Quando
|
377
|
+
then: *|Então|Entao
|
378
|
+
and: *|E
|
379
|
+
but: *|Mas
|
434
380
|
"ro":
|
435
381
|
name: Romanian
|
436
382
|
native: română
|
437
|
-
encoding: UTF-8
|
438
383
|
background: Conditii
|
439
384
|
feature: Functionalitate
|
440
385
|
scenario: Scenariu
|
441
386
|
scenario_outline: Scenariul de sablon
|
442
387
|
examples: Exemplele
|
443
|
-
given: Daca
|
444
|
-
when: Cand
|
445
|
-
then: Atunci
|
446
|
-
and: Si
|
447
|
-
but: Dar
|
448
|
-
space_after_keyword: true
|
388
|
+
given: *|Daca
|
389
|
+
when: *|Cand
|
390
|
+
then: *|Atunci
|
391
|
+
and: *|Si
|
392
|
+
but: *|Dar
|
449
393
|
"ro2":
|
450
394
|
name: Romanian (diacritical)
|
451
395
|
native: română (diacritical)
|
452
|
-
encoding: UTF-8
|
453
396
|
background: Condiţii
|
454
397
|
feature: Funcționalitate
|
455
398
|
scenario: Scenariu
|
456
399
|
scenario_outline: Scenariul de şablon
|
457
400
|
examples: Exemplele
|
458
|
-
given: Dacă
|
459
|
-
when: Când
|
460
|
-
then: Atunci
|
461
|
-
and:
|
462
|
-
but: Dar
|
463
|
-
space_after_keyword: true
|
401
|
+
given: *|Dacă
|
402
|
+
when: *|Când
|
403
|
+
then: *|Atunci
|
404
|
+
and: *|Și
|
405
|
+
but: *|Dar
|
464
406
|
"ru":
|
465
407
|
name: Russian
|
466
408
|
native: русский
|
467
|
-
encoding: UTF-8
|
468
409
|
feature: Функционал
|
469
410
|
background: Предыстория
|
470
411
|
scenario: Сценарий
|
471
412
|
scenario_outline: Структура сценария
|
472
413
|
examples: Значения
|
473
|
-
given:
|
474
|
-
when:
|
475
|
-
then:
|
476
|
-
and:
|
477
|
-
but:
|
478
|
-
space_after_keyword: true
|
414
|
+
given: *|Допустим
|
415
|
+
when: *|Если
|
416
|
+
then: *|То
|
417
|
+
and: *|И|К тому же
|
418
|
+
but: *|Но|А
|
479
419
|
"se":
|
480
420
|
name: Swedish
|
481
421
|
native: Svenska
|
482
|
-
encoding: UTF-8
|
483
422
|
feature: Egenskap
|
484
423
|
background: Bakgrund
|
485
424
|
scenario: Scenario
|
486
425
|
scenario_outline: Abstrakt Scenario
|
487
426
|
examples: Exempel
|
488
|
-
given: Givet
|
489
|
-
when: När
|
490
|
-
then: Så
|
491
|
-
and: Och
|
492
|
-
but: Men
|
493
|
-
space_after_keyword: true
|
427
|
+
given: *|Givet
|
428
|
+
when: *|När
|
429
|
+
then: *|Så
|
430
|
+
and: *|Och
|
431
|
+
but: *|Men
|
494
432
|
"sk":
|
495
433
|
name: Slovak
|
496
434
|
native: Slovensky
|
497
|
-
encoding: UTF-8
|
498
435
|
feature: Požiadavka
|
499
436
|
background: Pozadie
|
500
437
|
scenario: Scenár
|
501
438
|
scenario_outline: Náčrt Scenáru
|
502
439
|
examples: Príklady
|
503
|
-
given: Pokiaľ
|
504
|
-
when: Keď
|
505
|
-
then: Tak
|
506
|
-
and: A
|
507
|
-
but: Ale
|
508
|
-
space_after_keyword: true
|
440
|
+
given: *|Pokiaľ
|
441
|
+
when: *|Keď
|
442
|
+
then: *|Tak
|
443
|
+
and: *|A
|
444
|
+
but: *|Ale
|
509
445
|
"sr-Latn":
|
510
446
|
name: Serbian_latin
|
511
447
|
native: Srpski_latinica
|
512
|
-
encoding: UTF-8
|
513
448
|
feature: Funkcionalnost|Mogućnost|Mogucnost|Osobina
|
514
449
|
background: Kontekst|Osnova|Pozadina
|
515
450
|
scenario: Scenario|Primer
|
516
451
|
scenario_outline: Struktura scenarija|Skica|Koncept
|
517
452
|
examples: Primeri|Scenariji
|
518
|
-
given: Zadato|Zadate|Zatati
|
519
|
-
when: Kada|Kad
|
520
|
-
then: Onda
|
521
|
-
and: I
|
522
|
-
but: Ali
|
523
|
-
space_after_keyword: true
|
453
|
+
given: *|Zadato|Zadate|Zatati
|
454
|
+
when: *|Kada|Kad
|
455
|
+
then: *|Onda
|
456
|
+
and: *|I
|
457
|
+
but: *|Ali
|
524
458
|
"sr":
|
525
459
|
name: Serbian
|
526
460
|
native: Српски
|
527
|
-
encoding: UTF-8
|
528
461
|
feature: Функционалност|Могућност|Особина
|
529
462
|
background: Контекст|Основа|Позадина
|
530
463
|
scenario: Сценарио|Пример
|
531
464
|
scenario_outline: Структура сценарија|Скица|Концепт
|
532
465
|
examples: Примери|Сценарији
|
533
|
-
given:
|
534
|
-
when:
|
535
|
-
then:
|
536
|
-
and:
|
537
|
-
but:
|
538
|
-
space_after_keyword: true
|
466
|
+
given: *|Задато|Задате|Задати
|
467
|
+
when: *|Када|Кад
|
468
|
+
then: *|Онда
|
469
|
+
and: *|И
|
470
|
+
but: *|Али
|
539
471
|
"tr":
|
540
472
|
name: Turkish
|
541
473
|
native: Türkçe
|
542
|
-
encoding: UTF-8
|
543
474
|
feature: Özellik
|
544
475
|
background: Geçmiş
|
545
476
|
scenario: Senaryo
|
546
477
|
scenario_outline: Senaryo taslağı
|
547
478
|
examples: Örnekler
|
548
|
-
given: Diyelim ki
|
549
|
-
when: Eğer ki
|
550
|
-
then: O zaman
|
551
|
-
and: Ve
|
552
|
-
but: Fakat|Ama
|
479
|
+
given: *|Diyelim ki
|
480
|
+
when: *|Eğer ki
|
481
|
+
then: *|O zaman
|
482
|
+
and: *|Ve
|
483
|
+
but: *|Fakat|Ama
|
553
484
|
"uz":
|
554
485
|
name: Uzbek
|
555
486
|
native: Узбекча
|
556
|
-
encoding: UTF-8
|
557
487
|
feature: Функционал
|
558
488
|
background: Тарих
|
559
489
|
scenario: Сценарий
|
560
490
|
scenario_outline: Сценарий структураси
|
561
491
|
examples: Мисоллар
|
562
|
-
given:
|
563
|
-
when:
|
564
|
-
then:
|
565
|
-
and:
|
566
|
-
but:
|
492
|
+
given: *|Агар
|
493
|
+
when: *|Агар
|
494
|
+
then: *|Унда
|
495
|
+
and: *|Ва
|
496
|
+
but: *|Лекин|Бирок|Аммо
|
567
497
|
"vi":
|
568
498
|
name: Vietnamese
|
569
499
|
native: Tiếng Việt
|
570
|
-
encoding: UTF-8
|
571
500
|
feature: Tính năng
|
572
501
|
background: Bối cảnh
|
573
502
|
scenario: Tình huống|Kịch bản
|
574
503
|
scenario_outline: Khung tình huống|Khung kịch bản
|
575
504
|
examples: Dữ liệu
|
576
|
-
given: Biết|Cho
|
577
|
-
when: Khi
|
578
|
-
then: Thì
|
579
|
-
and: Và
|
580
|
-
but: Nhưng
|
581
|
-
space_after_keyword: true
|
505
|
+
given: *|Biết|Cho
|
506
|
+
when: *|Khi
|
507
|
+
then: *|Thì
|
508
|
+
and: *|Và
|
509
|
+
but: *|Nhưng
|
582
510
|
"zh-CN":
|
583
511
|
name: Chinese simplified
|
584
512
|
native: 简体中文
|
585
|
-
encoding: UTF-8
|
586
513
|
feature: 功能
|
587
514
|
background: 背景
|
588
515
|
scenario: 场景
|
589
516
|
scenario_outline: 场景大纲
|
590
517
|
examples: 例子
|
591
|
-
given:
|
592
|
-
when:
|
593
|
-
then:
|
594
|
-
and:
|
595
|
-
but:
|
596
|
-
space_after_keyword: false
|
518
|
+
given: *|假如<
|
519
|
+
when: *|当<
|
520
|
+
then: *|那么<
|
521
|
+
and: *|而且<
|
522
|
+
but: *|但是<
|
597
523
|
"zh-TW":
|
598
524
|
name: Chinese traditional
|
599
525
|
native: 繁體中文
|
600
|
-
encoding: UTF-8
|
601
526
|
feature: 功能
|
602
527
|
background: 背景
|
603
528
|
scenario: 場景|劇本
|
604
529
|
scenario_outline: 場景大綱|劇本大綱
|
605
530
|
examples: 例子
|
606
|
-
given:
|
607
|
-
when:
|
608
|
-
then:
|
609
|
-
and:
|
610
|
-
but:
|
611
|
-
space_after_keyword: false
|
531
|
+
given: *|假設<
|
532
|
+
when: *|當<
|
533
|
+
then: *|那麼<
|
534
|
+
and: *|而且<|並且<
|
535
|
+
but: *|但是<
|