cucumber 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/Rakefile +1 -0
- data/VERSION.yml +1 -1
- data/cucumber.gemspec +12 -3
- data/examples/watir/Rakefile +3 -1
- data/examples/watir/cucumber.yml +1 -0
- data/examples/watir/features/search.feature +1 -1
- data/features/step_definitions/wire_steps.rb +23 -5
- data/features/support/fake_wire_server.rb +16 -2
- data/features/wire_protocol_timeouts.feature +62 -0
- data/lib/cucumber/ast/table.rb +0 -5
- data/lib/cucumber/cli/options.rb +11 -0
- data/lib/cucumber/formatter/html.rb +16 -0
- data/lib/cucumber/languages.yml +200 -200
- data/lib/cucumber/wire_support/configuration.rb +18 -0
- data/lib/cucumber/wire_support/connection.rb +16 -12
- data/lib/cucumber/wire_support/request_handler.rb +14 -4
- data/lib/cucumber/wire_support/wire_language.rb +13 -17
- data/lib/cucumber/wire_support/wire_protocol.rb +15 -79
- data/lib/cucumber/wire_support/wire_protocol/requests.rb +113 -0
- data/spec/cucumber/formatter/html_spec.rb +14 -0
- data/spec/cucumber/wire_support/configuration_spec.rb +34 -0
- data/spec/cucumber/wire_support/wire_language_spec.rb +2 -2
- metadata +19 -3
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.5.2 2009-12-22
|
2
|
+
|
3
|
+
=== New Features
|
4
|
+
* On JRuby/Cuke4Duke, --require DIR will put DIR on the $CLASSPATH, making it easier to load step def classes (Aslak Hellesøy)
|
5
|
+
* New --jars option that will load jar files. Only available on JRuby. Practical for Cuke4Duke. (Aslak Hellesøy)
|
6
|
+
|
7
|
+
=== Bugfixes
|
8
|
+
* Add #embed back to html formatter (#547 Brandon Faloona)
|
9
|
+
* Refactored wire protocol code and added configurable timeout to allow for long running step definitions. (#546 Matt Wynne)
|
10
|
+
|
1
11
|
== 0.5.1 2009-12-16
|
2
12
|
|
3
13
|
Small bugfix release.
|
data/Rakefile
CHANGED
@@ -21,6 +21,7 @@ begin
|
|
21
21
|
gem.add_dependency 'polyglot', '>= 0.2.9'
|
22
22
|
gem.add_dependency 'builder', '>= 2.1.2'
|
23
23
|
gem.add_dependency 'diff-lcs', '>= 1.1.2'
|
24
|
+
gem.add_dependency 'json_pure', '>= 1.2.0'
|
24
25
|
|
25
26
|
gem.add_development_dependency 'nokogiri', '>= 1.4.0'
|
26
27
|
gem.add_development_dependency 'prawn', '>= 0.5.1'
|
data/VERSION.yml
CHANGED
data/cucumber.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cucumber}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aslak Helles\303\270y"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-22}
|
13
13
|
s.default_executable = %q{cucumber}
|
14
14
|
s.description = %q{A BDD tool written in Ruby}
|
15
15
|
s.email = %q{cukes@googlegroups.com}
|
@@ -314,6 +314,7 @@ Gem::Specification.new do |s|
|
|
314
314
|
"examples/tickets/features/tickets.feature",
|
315
315
|
"examples/watir/README.textile",
|
316
316
|
"examples/watir/Rakefile",
|
317
|
+
"examples/watir/cucumber.yml",
|
317
318
|
"examples/watir/features/search.feature",
|
318
319
|
"examples/watir/features/step_definitions/search_steps.rb",
|
319
320
|
"examples/watir/features/support/env.rb",
|
@@ -367,6 +368,7 @@ Gem::Specification.new do |s|
|
|
367
368
|
"features/usage_and_stepdefs_formatter.feature",
|
368
369
|
"features/wire_protocol.feature",
|
369
370
|
"features/wire_protocol_table_diffing.feature",
|
371
|
+
"features/wire_protocol_timeouts.feature",
|
370
372
|
"features/work_in_progress.feature",
|
371
373
|
"gem_tasks/contributors.rake",
|
372
374
|
"gem_tasks/environment.rake",
|
@@ -470,12 +472,14 @@ Gem::Specification.new do |s|
|
|
470
472
|
"lib/cucumber/step_mother.rb",
|
471
473
|
"lib/cucumber/webrat/element_locator.rb",
|
472
474
|
"lib/cucumber/webrat/table_locator.rb",
|
475
|
+
"lib/cucumber/wire_support/configuration.rb",
|
473
476
|
"lib/cucumber/wire_support/connection.rb",
|
474
477
|
"lib/cucumber/wire_support/request_handler.rb",
|
475
478
|
"lib/cucumber/wire_support/wire_exception.rb",
|
476
479
|
"lib/cucumber/wire_support/wire_language.rb",
|
477
480
|
"lib/cucumber/wire_support/wire_packet.rb",
|
478
481
|
"lib/cucumber/wire_support/wire_protocol.rb",
|
482
|
+
"lib/cucumber/wire_support/wire_protocol/requests.rb",
|
479
483
|
"lib/cucumber/wire_support/wire_step_definition.rb",
|
480
484
|
"spec/cucumber/ast/background_spec.rb",
|
481
485
|
"spec/cucumber/ast/feature_element_spec.rb",
|
@@ -525,6 +529,7 @@ Gem::Specification.new do |s|
|
|
525
529
|
"spec/cucumber/treetop_parser/test_dos.feature",
|
526
530
|
"spec/cucumber/treetop_parser/with_comments.feature",
|
527
531
|
"spec/cucumber/treetop_parser/with_tags.feature",
|
532
|
+
"spec/cucumber/wire_support/configuration_spec.rb",
|
528
533
|
"spec/cucumber/wire_support/wire_exception_spec.rb",
|
529
534
|
"spec/cucumber/wire_support/wire_language_spec.rb",
|
530
535
|
"spec/cucumber/wire_support/wire_packet_spec.rb",
|
@@ -539,7 +544,7 @@ Gem::Specification.new do |s|
|
|
539
544
|
|
540
545
|
(::) U P G R A D I N G (::)
|
541
546
|
|
542
|
-
Thank you for installing cucumber-0.5.
|
547
|
+
Thank you for installing cucumber-0.5.2.
|
543
548
|
Please be sure to read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
|
544
549
|
for important information about this release. Happy cuking!
|
545
550
|
|
@@ -586,6 +591,7 @@ for important information about this release. Happy cuking!
|
|
586
591
|
"spec/cucumber/rb_support/regexp_argument_matcher_spec.rb",
|
587
592
|
"spec/cucumber/step_match_spec.rb",
|
588
593
|
"spec/cucumber/step_mother_spec.rb",
|
594
|
+
"spec/cucumber/wire_support/configuration_spec.rb",
|
589
595
|
"spec/cucumber/wire_support/wire_exception_spec.rb",
|
590
596
|
"spec/cucumber/wire_support/wire_language_spec.rb",
|
591
597
|
"spec/cucumber/wire_support/wire_packet_spec.rb",
|
@@ -716,6 +722,7 @@ for important information about this release. Happy cuking!
|
|
716
722
|
s.add_runtime_dependency(%q<polyglot>, [">= 0.2.9"])
|
717
723
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
718
724
|
s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
725
|
+
s.add_runtime_dependency(%q<json_pure>, [">= 1.2.0"])
|
719
726
|
s.add_development_dependency(%q<nokogiri>, [">= 1.4.0"])
|
720
727
|
s.add_development_dependency(%q<prawn>, [">= 0.5.1"])
|
721
728
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
@@ -726,6 +733,7 @@ for important information about this release. Happy cuking!
|
|
726
733
|
s.add_dependency(%q<polyglot>, [">= 0.2.9"])
|
727
734
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
728
735
|
s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
736
|
+
s.add_dependency(%q<json_pure>, [">= 1.2.0"])
|
729
737
|
s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
|
730
738
|
s.add_dependency(%q<prawn>, [">= 0.5.1"])
|
731
739
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
@@ -737,6 +745,7 @@ for important information about this release. Happy cuking!
|
|
737
745
|
s.add_dependency(%q<polyglot>, [">= 0.2.9"])
|
738
746
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
739
747
|
s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
748
|
+
s.add_dependency(%q<json_pure>, [">= 1.2.0"])
|
740
749
|
s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
|
741
750
|
s.add_dependency(%q<prawn>, [">= 0.5.1"])
|
742
751
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
data/examples/watir/Rakefile
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
default: --format html --out report.html --format pretty
|
@@ -1,14 +1,32 @@
|
|
1
|
-
Given /^there is a wire server running on port (\d+) which understands the following protocol:$/ do |port, table|
|
1
|
+
Given /^there is a wire server (running |)on port (\d+) which understands the following protocol:$/ do |running, port, table|
|
2
2
|
protocol = table.hashes
|
3
|
-
|
3
|
+
@server = FakeWireServer.new(port.to_i, protocol)
|
4
|
+
start_wire_server if running.strip == "running"
|
5
|
+
end
|
6
|
+
|
7
|
+
Given /^the wire server takes (.*) seconds to respond to the invoke message$/ do |timeout|
|
8
|
+
@server.delay_response(:invoke, timeout.to_f)
|
9
|
+
start_wire_server
|
10
|
+
end
|
11
|
+
|
12
|
+
module WireHelper
|
13
|
+
def start_wire_server
|
4
14
|
@wire_pid = fork do
|
5
|
-
@server = FakeWireServer.new(port.to_i, protocol)
|
6
15
|
@server.run
|
7
16
|
end
|
8
17
|
end
|
18
|
+
|
19
|
+
def stop_wire_server
|
20
|
+
return unless @wire_pid
|
21
|
+
Process.kill('KILL', @wire_pid)
|
22
|
+
Process.wait
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
Before('@wire') do
|
27
|
+
extend(WireHelper)
|
9
28
|
end
|
10
29
|
|
11
30
|
After('@wire') do
|
12
|
-
|
13
|
-
Process.wait
|
31
|
+
stop_wire_server
|
14
32
|
end
|
@@ -4,12 +4,17 @@ require 'json'
|
|
4
4
|
class FakeWireServer
|
5
5
|
def initialize(port, protocol_table)
|
6
6
|
@port, @protocol_table = port, protocol_table
|
7
|
+
@delays = {}
|
7
8
|
end
|
8
9
|
|
9
10
|
def run
|
10
11
|
@server = TCPServer.open(@port)
|
11
12
|
loop { handle_connections }
|
12
13
|
end
|
14
|
+
|
15
|
+
def delay_response(message, delay)
|
16
|
+
@delays[message] = delay
|
17
|
+
end
|
13
18
|
|
14
19
|
private
|
15
20
|
|
@@ -19,7 +24,7 @@ class FakeWireServer
|
|
19
24
|
|
20
25
|
def open_session_on(socket)
|
21
26
|
begin
|
22
|
-
SocketSession.new(socket, @protocol_table).start
|
27
|
+
SocketSession.new(socket, @protocol_table, @delays).start
|
23
28
|
rescue Exception => e
|
24
29
|
raise e
|
25
30
|
ensure
|
@@ -28,9 +33,10 @@ class FakeWireServer
|
|
28
33
|
end
|
29
34
|
|
30
35
|
class SocketSession
|
31
|
-
def initialize(socket, protocol)
|
36
|
+
def initialize(socket, protocol, delays)
|
32
37
|
@socket = socket
|
33
38
|
@protocol = protocol
|
39
|
+
@delays = delays
|
34
40
|
end
|
35
41
|
|
36
42
|
def start
|
@@ -43,11 +49,14 @@ class FakeWireServer
|
|
43
49
|
|
44
50
|
def handle(data)
|
45
51
|
if protocol_entry = response_to(data.strip)
|
52
|
+
sleep delay(data)
|
46
53
|
send_response(protocol_entry['response'])
|
47
54
|
else
|
48
55
|
serialized_exception = { :message => "Not understood: #{data}", :backtrace => [] }
|
49
56
|
send_response(['fail', serialized_exception ].to_json)
|
50
57
|
end
|
58
|
+
rescue => e
|
59
|
+
send_response(['fail', { :message => e.message, :backtrace => e.backtrace, :exception => e.class } ].to_json)
|
51
60
|
end
|
52
61
|
|
53
62
|
def response_to(data)
|
@@ -59,5 +68,10 @@ class FakeWireServer
|
|
59
68
|
def send_response(response)
|
60
69
|
@socket.puts response + "\n"
|
61
70
|
end
|
71
|
+
|
72
|
+
def delay(data)
|
73
|
+
message = JSON.parse(data.strip)[0]
|
74
|
+
@delays[message.to_sym] || 0
|
75
|
+
end
|
62
76
|
end
|
63
77
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
@wire
|
2
|
+
Feature: Wire protocol timeouts
|
3
|
+
We don't want Cucumber to hang forever on a wire server that's not even there,
|
4
|
+
but equally we need to give the user the flexibility to allow step definitions
|
5
|
+
to take a while to execute, if that's what they need.
|
6
|
+
|
7
|
+
Background:
|
8
|
+
Given a standard Cucumber project directory structure
|
9
|
+
And a file named "features/wired.feature" with:
|
10
|
+
"""
|
11
|
+
Scenario: Wired
|
12
|
+
Given we're all wired
|
13
|
+
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Try to talk to a server that's not there
|
17
|
+
Given a file named "features/step_definitions/some_remote_place.wire" with:
|
18
|
+
"""
|
19
|
+
host: localhost
|
20
|
+
port: 54321
|
21
|
+
|
22
|
+
"""
|
23
|
+
When I run cucumber -f progress
|
24
|
+
Then STDERR should match
|
25
|
+
"""
|
26
|
+
Unable to contact the wire server at localhost:54321
|
27
|
+
"""
|
28
|
+
|
29
|
+
Scenario: Invoke a step definition that takes longer than its timeout
|
30
|
+
Given a file named "features/step_definitions/some_remote_place.wire" with:
|
31
|
+
"""
|
32
|
+
host: localhost
|
33
|
+
port: 54321
|
34
|
+
timeout:
|
35
|
+
invoke: 0.1
|
36
|
+
|
37
|
+
"""
|
38
|
+
And there is a wire server on port 54321 which understands the following protocol:
|
39
|
+
| request | response |
|
40
|
+
| ["step_matches",{"name_to_match":"we're all wired"}] | ["step_matches",[{"id":"1", "args":[{"val":"wired", "pos":10}]}]] |
|
41
|
+
| ["begin_scenario",null] | ["success",null] |
|
42
|
+
| ["invoke",{"id":"1","args":["wired"]}] | ["success",null] |
|
43
|
+
| ["end_scenario",null] | ["success",null] |
|
44
|
+
And the wire server takes 0.2 seconds to respond to the invoke message
|
45
|
+
When I run cucumber -f pretty
|
46
|
+
Then STDERR should be empty
|
47
|
+
And it should fail with
|
48
|
+
"""
|
49
|
+
|
50
|
+
|
51
|
+
Scenario: Wired # features/wired.feature:1
|
52
|
+
Given we're all wired # Unknown
|
53
|
+
Timed out calling wire server with message 'invoke' (Timeout::Error)
|
54
|
+
features/wired.feature:2:in `Given we're all wired'
|
55
|
+
|
56
|
+
Failing Scenarios:
|
57
|
+
cucumber features/wired.feature:1 # Scenario: Wired
|
58
|
+
|
59
|
+
1 scenario (1 failed)
|
60
|
+
1 step (1 failed)
|
61
|
+
|
62
|
+
"""
|
data/lib/cucumber/ast/table.rb
CHANGED
data/lib/cucumber/cli/options.rb
CHANGED
@@ -116,7 +116,18 @@ module Cucumber
|
|
116
116
|
"loaded first.",
|
117
117
|
"This option can be specified multiple times.") do |v|
|
118
118
|
@options[:require] << v
|
119
|
+
if(Cucumber::JRUBY && File.directory?(v))
|
120
|
+
$CLASSPATH << v
|
121
|
+
end
|
119
122
|
end
|
123
|
+
|
124
|
+
if(Cucumber::JRUBY)
|
125
|
+
opts.on("-j DIR", "--jars DIR",
|
126
|
+
"Load all the jars under DIR") do |jars|
|
127
|
+
Dir["#{jars}/**/*.jar"].each {|jar| require jar}
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
120
131
|
opts.on("--i18n LANG",
|
121
132
|
"List keywords for in a particular language",
|
122
133
|
%{Run with "--i18n help" to see all languages}) do |lang|
|
@@ -21,6 +21,22 @@ module Cucumber
|
|
21
21
|
@header_red = nil
|
22
22
|
end
|
23
23
|
|
24
|
+
def embed(file, mime_type)
|
25
|
+
case(mime_type)
|
26
|
+
when /^image\/(png|gif|jpg|jpeg)/
|
27
|
+
embed_image(file)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def embed_image(file)
|
32
|
+
id = file.hash
|
33
|
+
@builder.span(:class => 'embed') do |pre|
|
34
|
+
pre << %{<a href="" onclick="img=document.getElementById('#{id}'); img.style.display = (img.style.display == 'none' ? 'block' : 'none');return false">Screenshot</a><br>
|
35
|
+
<img id="#{id}" style="display: none" src="#{file}"/>}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
24
40
|
def before_features(features)
|
25
41
|
@step_count = get_step_count(features)
|
26
42
|
|
data/lib/cucumber/languages.yml
CHANGED
@@ -14,11 +14,11 @@
|
|
14
14
|
scenario: Scenario
|
15
15
|
scenario_outline: Scenario Outline
|
16
16
|
examples: Examples|Scenarios
|
17
|
-
given: *|Given
|
18
|
-
when: *|When
|
19
|
-
then: *|Then
|
20
|
-
and: *|And
|
21
|
-
but: *|But
|
17
|
+
given: "*|Given"
|
18
|
+
when: "*|When"
|
19
|
+
then: "*|Then"
|
20
|
+
and: "*|And"
|
21
|
+
but: "*|But"
|
22
22
|
|
23
23
|
# Please help us keeping the languages below uptodate. The parsers for a language
|
24
24
|
# that is missing a keyword will expect the English word until the missing word(s)
|
@@ -34,11 +34,11 @@
|
|
34
34
|
scenario: سيناريو
|
35
35
|
scenario_outline: سيناريو مخطط
|
36
36
|
examples: امثلة
|
37
|
-
given: *|بفرض
|
38
|
-
when: *|متى|عندما
|
39
|
-
then: *|اذاً|ثم
|
40
|
-
and: *|و
|
41
|
-
but: *|لكن
|
37
|
+
given: "*|بفرض"
|
38
|
+
when: "*|متى|عندما"
|
39
|
+
then: "*|اذاً|ثم"
|
40
|
+
and: "*|و"
|
41
|
+
but: "*|لكن"
|
42
42
|
"bg":
|
43
43
|
name: Bulgarian
|
44
44
|
native: български
|
@@ -47,11 +47,11 @@
|
|
47
47
|
scenario: Сценарий
|
48
48
|
scenario_outline: Рамка на сценарий
|
49
49
|
examples: Примери
|
50
|
-
given: *|Дадено
|
51
|
-
when: *|Когато
|
52
|
-
then: *|То
|
53
|
-
and: *|И
|
54
|
-
but: *|Но
|
50
|
+
given: "*|Дадено"
|
51
|
+
when: "*|Когато"
|
52
|
+
then: "*|То"
|
53
|
+
and: "*|И"
|
54
|
+
but: "*|Но"
|
55
55
|
"cat":
|
56
56
|
name: Catalan
|
57
57
|
native: català
|
@@ -60,11 +60,11 @@
|
|
60
60
|
scenario: Escenari
|
61
61
|
scenario_outline: Esquema de l'escenari
|
62
62
|
examples: Exemples
|
63
|
-
given: *|Donat|Donada
|
64
|
-
when: *|Quan
|
65
|
-
then: *|Aleshores
|
66
|
-
and: *|I
|
67
|
-
but: *|Però
|
63
|
+
given: "*|Donat|Donada"
|
64
|
+
when: "*|Quan"
|
65
|
+
then: "*|Aleshores"
|
66
|
+
and: "*|I"
|
67
|
+
but: "*|Però"
|
68
68
|
"cy":
|
69
69
|
name: Welsh
|
70
70
|
native: Cymraeg
|
@@ -73,11 +73,11 @@
|
|
73
73
|
scenario: Scenario
|
74
74
|
scenario_outline: Scenario Amlinellol
|
75
75
|
examples: Enghreifftiau
|
76
|
-
given: *|anrhegedig a
|
77
|
-
when: *|Pryd
|
78
|
-
then: *|Yna
|
79
|
-
and: *|A
|
80
|
-
but: *|Ond
|
76
|
+
given: "*|anrhegedig a"
|
77
|
+
when: "*|Pryd"
|
78
|
+
then: "*|Yna"
|
79
|
+
and: "*|A"
|
80
|
+
but: "*|Ond"
|
81
81
|
"cs":
|
82
82
|
name: Czech
|
83
83
|
native: Česky
|
@@ -86,11 +86,11 @@
|
|
86
86
|
scenario: Scénář
|
87
87
|
scenario_outline: Náčrt Scénáře|Osnova scénáře
|
88
88
|
examples: Příklady
|
89
|
-
given: *|Pokud
|
90
|
-
when: *|Když
|
91
|
-
then: *|Pak
|
92
|
-
and: *|A|A také
|
93
|
-
but: *|Ale
|
89
|
+
given: "*|Pokud"
|
90
|
+
when: "*|Když"
|
91
|
+
then: "*|Pak"
|
92
|
+
and: "*|A|A také"
|
93
|
+
but: "*|Ale"
|
94
94
|
"da":
|
95
95
|
name: Danish
|
96
96
|
native: dansk
|
@@ -99,11 +99,11 @@
|
|
99
99
|
scenario: Scenarie
|
100
100
|
scenario_outline: Abstrakt Scenario
|
101
101
|
examples: Eksempler
|
102
|
-
given: *|Givet
|
103
|
-
when: *|Når
|
104
|
-
then: *|Så
|
105
|
-
and: *|Og
|
106
|
-
but: *|Men
|
102
|
+
given: "*|Givet"
|
103
|
+
when: "*|Når"
|
104
|
+
then: "*|Så"
|
105
|
+
and: "*|Og"
|
106
|
+
but: "*|Men"
|
107
107
|
"de":
|
108
108
|
name: German
|
109
109
|
native: Deutsch
|
@@ -112,11 +112,11 @@
|
|
112
112
|
scenario: Szenario
|
113
113
|
scenario_outline: Szenariogrundriss
|
114
114
|
examples: Beispiele
|
115
|
-
given: *|Gegeben sei
|
116
|
-
when: *|Wenn
|
117
|
-
then: *|Dann
|
118
|
-
and: *|Und
|
119
|
-
but: *|Aber
|
115
|
+
given: "*|Gegeben sei"
|
116
|
+
when: "*|Wenn"
|
117
|
+
then: "*|Dann"
|
118
|
+
and: "*|Und"
|
119
|
+
but: "*|Aber"
|
120
120
|
"en-au":
|
121
121
|
name: Australian
|
122
122
|
native: Australian
|
@@ -125,11 +125,11 @@
|
|
125
125
|
scenario: Mate
|
126
126
|
scenario_outline: Blokes
|
127
127
|
examples: Cobber
|
128
|
-
given: *|Ya know how
|
129
|
-
when: *|When
|
130
|
-
then: *|Ya gotta
|
131
|
-
and: *|N
|
132
|
-
but: *|Cept
|
128
|
+
given: "*|Ya know how"
|
129
|
+
when: "*|When"
|
130
|
+
then: "*|Ya gotta"
|
131
|
+
and: "*|N"
|
132
|
+
but: "*|Cept"
|
133
133
|
"en-lol":
|
134
134
|
name: LOLCAT
|
135
135
|
native: LOLCAT
|
@@ -138,11 +138,11 @@
|
|
138
138
|
scenario: MISHUN
|
139
139
|
scenario_outline: MISHUN SRSLY
|
140
140
|
examples: EXAMPLZ
|
141
|
-
given: *|I CAN HAZ
|
142
|
-
when: *|WEN
|
143
|
-
then: *|DEN
|
144
|
-
and: *|AN
|
145
|
-
but: *|BUT
|
141
|
+
given: "*|I CAN HAZ"
|
142
|
+
when: "*|WEN"
|
143
|
+
then: "*|DEN"
|
144
|
+
and: "*|AN"
|
145
|
+
but: "*|BUT"
|
146
146
|
"en-tx":
|
147
147
|
name: Texan
|
148
148
|
native: Texan
|
@@ -151,11 +151,11 @@
|
|
151
151
|
scenario: Scenario
|
152
152
|
scenario_outline: All y'all
|
153
153
|
examples: Examples
|
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
|
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"
|
159
159
|
"es":
|
160
160
|
name: Spanish
|
161
161
|
native: español
|
@@ -164,11 +164,11 @@
|
|
164
164
|
scenario: Escenario
|
165
165
|
scenario_outline: Esquema del escenario
|
166
166
|
examples: Ejemplos
|
167
|
-
given: *|Dado
|
168
|
-
when: *|Cuando
|
169
|
-
then: *|Entonces
|
170
|
-
and: *|Y
|
171
|
-
but: *|Pero
|
167
|
+
given: "*|Dado"
|
168
|
+
when: "*|Cuando"
|
169
|
+
then: "*|Entonces"
|
170
|
+
and: "*|Y"
|
171
|
+
but: "*|Pero"
|
172
172
|
"et":
|
173
173
|
name: Estonian
|
174
174
|
native: eesti keel
|
@@ -177,11 +177,11 @@
|
|
177
177
|
scenario: Stsenaarium
|
178
178
|
scenario_outline: Raamstsenaarium
|
179
179
|
examples: Juhtumid
|
180
|
-
given: *|Eeldades
|
181
|
-
when: *|Kui
|
182
|
-
then: *|Siis
|
183
|
-
and: *|Ja
|
184
|
-
but: *|Kuid
|
180
|
+
given: "*|Eeldades"
|
181
|
+
when: "*|Kui"
|
182
|
+
then: "*|Siis"
|
183
|
+
and: "*|Ja"
|
184
|
+
but: "*|Kuid"
|
185
185
|
"fi":
|
186
186
|
name: Finnish
|
187
187
|
native: suomi
|
@@ -190,11 +190,11 @@
|
|
190
190
|
scenario: Tapaus
|
191
191
|
scenario_outline: Tapausaihio
|
192
192
|
examples: Tapaukset
|
193
|
-
given: *|Oletetaan
|
194
|
-
when: *|Kun
|
195
|
-
then: *|Niin
|
196
|
-
and: *|Ja
|
197
|
-
but: *|Mutta
|
193
|
+
given: "*|Oletetaan"
|
194
|
+
when: "*|Kun"
|
195
|
+
then: "*|Niin"
|
196
|
+
and: "*|Ja"
|
197
|
+
but: "*|Mutta"
|
198
198
|
"fr":
|
199
199
|
name: French
|
200
200
|
native: français
|
@@ -203,11 +203,11 @@
|
|
203
203
|
scenario: Scénario
|
204
204
|
scenario_outline: Plan du scénario|Plan du Scénario
|
205
205
|
examples: Exemples
|
206
|
-
given: *|Soit|Etant donné
|
207
|
-
when: *|Quand|Lorsque|Lorsqu'<
|
208
|
-
then: *|Alors
|
209
|
-
and: *|Et
|
210
|
-
but: *|Mais
|
206
|
+
given: "*|Soit|Etant donné"
|
207
|
+
when: "*|Quand|Lorsque|Lorsqu'<"
|
208
|
+
then: "*|Alors"
|
209
|
+
and: "*|Et"
|
210
|
+
but: "*|Mais"
|
211
211
|
"he":
|
212
212
|
name: Hebrew
|
213
213
|
native: עברית
|
@@ -216,11 +216,11 @@
|
|
216
216
|
scenario: תרחיש
|
217
217
|
scenario_outline: תבנית תרחיש
|
218
218
|
examples: דוגמאות
|
219
|
-
given: *|בהינתן
|
220
|
-
when: *|כאשר
|
221
|
-
then: *|אז|אזי
|
222
|
-
and: *|וגם
|
223
|
-
but: *|אבל
|
219
|
+
given: "*|בהינתן"
|
220
|
+
when: "*|כאשר"
|
221
|
+
then: "*|אז|אזי"
|
222
|
+
and: "*|וגם"
|
223
|
+
but: "*|אבל"
|
224
224
|
"hr":
|
225
225
|
name: Croatian
|
226
226
|
native: hrvatski
|
@@ -229,11 +229,11 @@
|
|
229
229
|
scenario: Scenarij
|
230
230
|
scenario_outline: Skica|Koncept
|
231
231
|
examples: Primjeri|Scenariji
|
232
|
-
given: *|Zadan|Zadani|Zadano
|
233
|
-
when: *|Kada|Kad
|
234
|
-
then: *|Onda
|
235
|
-
and: *|I
|
236
|
-
but: *|Ali
|
232
|
+
given: "*|Zadan|Zadani|Zadano"
|
233
|
+
when: "*|Kada|Kad"
|
234
|
+
then: "*|Onda"
|
235
|
+
and: "*|I"
|
236
|
+
but: "*|Ali"
|
237
237
|
"hu":
|
238
238
|
name: Hungarian
|
239
239
|
native: magyar
|
@@ -242,11 +242,11 @@
|
|
242
242
|
scenario: Forgatókönyv
|
243
243
|
scenario_outline: Forgatókönyv vázlat
|
244
244
|
examples: Példák
|
245
|
-
given: *|Ha
|
246
|
-
when: *|Majd
|
247
|
-
then: *|Akkor
|
248
|
-
and: *|És
|
249
|
-
but: *|De
|
245
|
+
given: "*|Ha"
|
246
|
+
when: "*|Majd"
|
247
|
+
then: "*|Akkor"
|
248
|
+
and: "*|És"
|
249
|
+
but: "*|De"
|
250
250
|
"id":
|
251
251
|
name: Indonesian
|
252
252
|
native: Bahasa Indonesia
|
@@ -255,11 +255,11 @@
|
|
255
255
|
scenario: Skenario
|
256
256
|
scenario_outline: Skenario konsep
|
257
257
|
examples: Contoh
|
258
|
-
given: *|Dengan
|
259
|
-
when: *|Ketika
|
260
|
-
then: *|Maka
|
261
|
-
and: *|Dan
|
262
|
-
but: *|Tapi
|
258
|
+
given: "*|Dengan"
|
259
|
+
when: "*|Ketika"
|
260
|
+
then: "*|Maka"
|
261
|
+
and: "*|Dan"
|
262
|
+
but: "*|Tapi"
|
263
263
|
"it":
|
264
264
|
name: Italian
|
265
265
|
native: italiano
|
@@ -268,11 +268,11 @@
|
|
268
268
|
scenario: Scenario
|
269
269
|
scenario_outline: Schema dello scenario
|
270
270
|
examples: Esempi
|
271
|
-
given: *|Dato
|
272
|
-
when: *|Quando
|
273
|
-
then: *|Allora
|
274
|
-
and: *|E
|
275
|
-
but: *|Ma
|
271
|
+
given: "*|Dato"
|
272
|
+
when: "*|Quando"
|
273
|
+
then: "*|Allora"
|
274
|
+
and: "*|E"
|
275
|
+
but: "*|Ma"
|
276
276
|
"ja":
|
277
277
|
name: Japanese
|
278
278
|
native: 日本語
|
@@ -281,11 +281,11 @@
|
|
281
281
|
scenario: シナリオ
|
282
282
|
scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
|
283
283
|
examples: 例|サンプル
|
284
|
-
given: *|前提<
|
285
|
-
when: *|もし<
|
286
|
-
then: *|ならば<
|
287
|
-
and: *|かつ<
|
288
|
-
but: *|しかし<|但し<|ただし<
|
284
|
+
given: "*|前提<"
|
285
|
+
when: "*|もし<"
|
286
|
+
then: "*|ならば<"
|
287
|
+
and: "*|かつ<"
|
288
|
+
but: "*|しかし<|但し<|ただし<"
|
289
289
|
"ko":
|
290
290
|
name: Korean
|
291
291
|
native: 한국어
|
@@ -294,11 +294,11 @@
|
|
294
294
|
scenario: 시나리오
|
295
295
|
scenario_outline: 시나리오 개요
|
296
296
|
examples: 예
|
297
|
-
given: *|조건<
|
298
|
-
when: *|만일<
|
299
|
-
then: *|그러면<
|
300
|
-
and: *|그리고<
|
301
|
-
but: *|하지만<
|
297
|
+
given: "*|조건<"
|
298
|
+
when: "*|만일<"
|
299
|
+
then: "*|그러면<"
|
300
|
+
and: "*|그리고<"
|
301
|
+
but: "*|하지만<"
|
302
302
|
"lt":
|
303
303
|
name: Lithuanian
|
304
304
|
native: lietuvių kalba
|
@@ -307,11 +307,11 @@
|
|
307
307
|
scenario: Scenarijus
|
308
308
|
scenario_outline: Scenarijaus šablonas
|
309
309
|
examples: Pavyzdžiai|Scenarijai|Variantai
|
310
|
-
given: *|Duota
|
311
|
-
when: *|Kai
|
312
|
-
then: *|Tada
|
313
|
-
and: *|Ir
|
314
|
-
but: *|Bet
|
310
|
+
given: "*|Duota"
|
311
|
+
when: "*|Kai"
|
312
|
+
then: "*|Tada"
|
313
|
+
and: "*|Ir"
|
314
|
+
but: "*|Bet"
|
315
315
|
"lv":
|
316
316
|
name: Latvian
|
317
317
|
native: latviešu
|
@@ -320,11 +320,11 @@
|
|
320
320
|
scenario: Scenārijs
|
321
321
|
scenario_outline: Scenārijs pēc parauga
|
322
322
|
examples: Piemēri|Paraugs
|
323
|
-
given: *|Kad
|
324
|
-
when: *|Ja
|
325
|
-
then: *|Tad
|
326
|
-
and: *|Un
|
327
|
-
but: *|Bet
|
323
|
+
given: "*|Kad"
|
324
|
+
when: "*|Ja"
|
325
|
+
then: "*|Tad"
|
326
|
+
and: "*|Un"
|
327
|
+
but: "*|Bet"
|
328
328
|
"nl":
|
329
329
|
name: Dutch
|
330
330
|
native: Nederlands
|
@@ -333,11 +333,11 @@
|
|
333
333
|
scenario: Scenario
|
334
334
|
scenario_outline: Abstract Scenario
|
335
335
|
examples: Voorbeelden
|
336
|
-
given: *|Gegeven|Stel
|
337
|
-
when: *|Als
|
338
|
-
then: *|Dan
|
339
|
-
and: *|En
|
340
|
-
but: *|Maar
|
336
|
+
given: "*|Gegeven|Stel"
|
337
|
+
when: "*|Als"
|
338
|
+
then: "*|Dan"
|
339
|
+
and: "*|En"
|
340
|
+
but: "*|Maar"
|
341
341
|
"no":
|
342
342
|
name: Norwegian
|
343
343
|
native: norsk
|
@@ -346,11 +346,11 @@
|
|
346
346
|
scenario: Scenario
|
347
347
|
scenario_outline: Abstrakt Scenario
|
348
348
|
examples: Eksempler
|
349
|
-
given: *|Gitt
|
350
|
-
when: *|Når
|
351
|
-
then: *|Så
|
352
|
-
and: *|Og
|
353
|
-
but: *|Men
|
349
|
+
given: "*|Gitt"
|
350
|
+
when: "*|Når"
|
351
|
+
then: "*|Så"
|
352
|
+
and: "*|Og"
|
353
|
+
but: "*|Men"
|
354
354
|
"pl":
|
355
355
|
name: Polish
|
356
356
|
native: polski
|
@@ -359,11 +359,11 @@
|
|
359
359
|
scenario: Scenariusz
|
360
360
|
scenario_outline: Szablon scenariusza
|
361
361
|
examples: Przykłady
|
362
|
-
given: *|Zakładając
|
363
|
-
when: *|Jeżeli
|
364
|
-
then: *|Wtedy
|
365
|
-
and: *|Oraz
|
366
|
-
but: *|Ale
|
362
|
+
given: "*|Zakładając"
|
363
|
+
when: "*|Jeżeli"
|
364
|
+
then: "*|Wtedy"
|
365
|
+
and: "*|Oraz"
|
366
|
+
but: "*|Ale"
|
367
367
|
"pt":
|
368
368
|
name: Portuguese
|
369
369
|
native: português
|
@@ -372,11 +372,11 @@
|
|
372
372
|
scenario: Cenário|Cenario
|
373
373
|
scenario_outline: Esquema do Cenário|Esquema do Cenario
|
374
374
|
examples: Exemplos
|
375
|
-
given: *|Dado
|
376
|
-
when: *|Quando
|
377
|
-
then: *|Então|Entao
|
378
|
-
and: *|E
|
379
|
-
but: *|Mas
|
375
|
+
given: "*|Dado"
|
376
|
+
when: "*|Quando"
|
377
|
+
then: "*|Então|Entao"
|
378
|
+
and: "*|E"
|
379
|
+
but: "*|Mas"
|
380
380
|
"ro":
|
381
381
|
name: Romanian
|
382
382
|
native: română
|
@@ -385,11 +385,11 @@
|
|
385
385
|
scenario: Scenariu
|
386
386
|
scenario_outline: Scenariul de sablon
|
387
387
|
examples: Exemplele
|
388
|
-
given: *|Daca
|
389
|
-
when: *|Cand
|
390
|
-
then: *|Atunci
|
391
|
-
and: *|Si
|
392
|
-
but: *|Dar
|
388
|
+
given: "*|Daca"
|
389
|
+
when: "*|Cand"
|
390
|
+
then: "*|Atunci"
|
391
|
+
and: "*|Si"
|
392
|
+
but: "*|Dar"
|
393
393
|
"ro2":
|
394
394
|
name: Romanian (diacritical)
|
395
395
|
native: română (diacritical)
|
@@ -398,11 +398,11 @@
|
|
398
398
|
scenario: Scenariu
|
399
399
|
scenario_outline: Scenariul de şablon
|
400
400
|
examples: Exemplele
|
401
|
-
given: *|Dacă
|
402
|
-
when: *|Când
|
403
|
-
then: *|Atunci
|
404
|
-
and: *|Și
|
405
|
-
but: *|Dar
|
401
|
+
given: "*|Dacă"
|
402
|
+
when: "*|Când"
|
403
|
+
then: "*|Atunci"
|
404
|
+
and: "*|Și"
|
405
|
+
but: "*|Dar"
|
406
406
|
"ru":
|
407
407
|
name: Russian
|
408
408
|
native: русский
|
@@ -411,11 +411,11 @@
|
|
411
411
|
scenario: Сценарий
|
412
412
|
scenario_outline: Структура сценария
|
413
413
|
examples: Значения
|
414
|
-
given: *|Допустим
|
415
|
-
when: *|Если
|
416
|
-
then: *|То
|
417
|
-
and: *|И|К тому же
|
418
|
-
but: *|Но|А
|
414
|
+
given: "*|Допустим"
|
415
|
+
when: "*|Если"
|
416
|
+
then: "*|То"
|
417
|
+
and: "*|И|К тому же"
|
418
|
+
but: "*|Но|А"
|
419
419
|
"se":
|
420
420
|
name: Swedish
|
421
421
|
native: Svenska
|
@@ -424,11 +424,11 @@
|
|
424
424
|
scenario: Scenario
|
425
425
|
scenario_outline: Abstrakt Scenario
|
426
426
|
examples: Exempel
|
427
|
-
given: *|Givet
|
428
|
-
when: *|När
|
429
|
-
then: *|Så
|
430
|
-
and: *|Och
|
431
|
-
but: *|Men
|
427
|
+
given: "*|Givet"
|
428
|
+
when: "*|När"
|
429
|
+
then: "*|Så"
|
430
|
+
and: "*|Och"
|
431
|
+
but: "*|Men"
|
432
432
|
"sk":
|
433
433
|
name: Slovak
|
434
434
|
native: Slovensky
|
@@ -437,11 +437,11 @@
|
|
437
437
|
scenario: Scenár
|
438
438
|
scenario_outline: Náčrt Scenáru
|
439
439
|
examples: Príklady
|
440
|
-
given: *|Pokiaľ
|
441
|
-
when: *|Keď
|
442
|
-
then: *|Tak
|
443
|
-
and: *|A
|
444
|
-
but: *|Ale
|
440
|
+
given: "*|Pokiaľ"
|
441
|
+
when: "*|Keď"
|
442
|
+
then: "*|Tak"
|
443
|
+
and: "*|A"
|
444
|
+
but: "*|Ale"
|
445
445
|
"sr-Latn":
|
446
446
|
name: Serbian_latin
|
447
447
|
native: Srpski_latinica
|
@@ -450,11 +450,11 @@
|
|
450
450
|
scenario: Scenario|Primer
|
451
451
|
scenario_outline: Struktura scenarija|Skica|Koncept
|
452
452
|
examples: Primeri|Scenariji
|
453
|
-
given: *|Zadato|Zadate|Zatati
|
454
|
-
when: *|Kada|Kad
|
455
|
-
then: *|Onda
|
456
|
-
and: *|I
|
457
|
-
but: *|Ali
|
453
|
+
given: "*|Zadato|Zadate|Zatati"
|
454
|
+
when: "*|Kada|Kad"
|
455
|
+
then: "*|Onda"
|
456
|
+
and: "*|I"
|
457
|
+
but: "*|Ali"
|
458
458
|
"sr":
|
459
459
|
name: Serbian
|
460
460
|
native: Српски
|
@@ -463,11 +463,11 @@
|
|
463
463
|
scenario: Сценарио|Пример
|
464
464
|
scenario_outline: Структура сценарија|Скица|Концепт
|
465
465
|
examples: Примери|Сценарији
|
466
|
-
given: *|Задато|Задате|Задати
|
467
|
-
when: *|Када|Кад
|
468
|
-
then: *|Онда
|
469
|
-
and: *|И
|
470
|
-
but: *|Али
|
466
|
+
given: "*|Задато|Задате|Задати"
|
467
|
+
when: "*|Када|Кад"
|
468
|
+
then: "*|Онда"
|
469
|
+
and: "*|И"
|
470
|
+
but: "*|Али"
|
471
471
|
"tr":
|
472
472
|
name: Turkish
|
473
473
|
native: Türkçe
|
@@ -476,11 +476,11 @@
|
|
476
476
|
scenario: Senaryo
|
477
477
|
scenario_outline: Senaryo taslağı
|
478
478
|
examples: Örnekler
|
479
|
-
given: *|Diyelim ki
|
480
|
-
when: *|Eğer ki
|
481
|
-
then: *|O zaman
|
482
|
-
and: *|Ve
|
483
|
-
but: *|Fakat|Ama
|
479
|
+
given: "*|Diyelim ki"
|
480
|
+
when: "*|Eğer ki"
|
481
|
+
then: "*|O zaman"
|
482
|
+
and: "*|Ve"
|
483
|
+
but: "*|Fakat|Ama"
|
484
484
|
"uz":
|
485
485
|
name: Uzbek
|
486
486
|
native: Узбекча
|
@@ -489,11 +489,11 @@
|
|
489
489
|
scenario: Сценарий
|
490
490
|
scenario_outline: Сценарий структураси
|
491
491
|
examples: Мисоллар
|
492
|
-
given: *|Агар
|
493
|
-
when: *|Агар
|
494
|
-
then: *|Унда
|
495
|
-
and: *|Ва
|
496
|
-
but: *|Лекин|Бирок|Аммо
|
492
|
+
given: "*|Агар"
|
493
|
+
when: "*|Агар"
|
494
|
+
then: "*|Унда"
|
495
|
+
and: "*|Ва"
|
496
|
+
but: "*|Лекин|Бирок|Аммо"
|
497
497
|
"vi":
|
498
498
|
name: Vietnamese
|
499
499
|
native: Tiếng Việt
|
@@ -502,11 +502,11 @@
|
|
502
502
|
scenario: Tình huống|Kịch bản
|
503
503
|
scenario_outline: Khung tình huống|Khung kịch bản
|
504
504
|
examples: Dữ liệu
|
505
|
-
given: *|Biết|Cho
|
506
|
-
when: *|Khi
|
507
|
-
then: *|Thì
|
508
|
-
and: *|Và
|
509
|
-
but: *|Nhưng
|
505
|
+
given: "*|Biết|Cho"
|
506
|
+
when: "*|Khi"
|
507
|
+
then: "*|Thì"
|
508
|
+
and: "*|Và"
|
509
|
+
but: "*|Nhưng"
|
510
510
|
"zh-CN":
|
511
511
|
name: Chinese simplified
|
512
512
|
native: 简体中文
|
@@ -515,11 +515,11 @@
|
|
515
515
|
scenario: 场景
|
516
516
|
scenario_outline: 场景大纲
|
517
517
|
examples: 例子
|
518
|
-
given: *|假如<
|
519
|
-
when: *|当<
|
520
|
-
then: *|那么<
|
521
|
-
and: *|而且<
|
522
|
-
but: *|但是<
|
518
|
+
given: "*|假如<"
|
519
|
+
when: "*|当<"
|
520
|
+
then: "*|那么<"
|
521
|
+
and: "*|而且<"
|
522
|
+
but: "*|但是<"
|
523
523
|
"zh-TW":
|
524
524
|
name: Chinese traditional
|
525
525
|
native: 繁體中文
|
@@ -528,8 +528,8 @@
|
|
528
528
|
scenario: 場景|劇本
|
529
529
|
scenario_outline: 場景大綱|劇本大綱
|
530
530
|
examples: 例子
|
531
|
-
given: *|假設<
|
532
|
-
when: *|當<
|
533
|
-
then: *|那麼<
|
534
|
-
and: *|而且<|並且<
|
535
|
-
but: *|但是<
|
531
|
+
given: "*|假設<"
|
532
|
+
when: "*|當<"
|
533
|
+
then: "*|那麼<"
|
534
|
+
and: "*|而且<|並且<"
|
535
|
+
but: "*|但是<"
|