cucumber 2.0.1 → 2.0.2
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.
- checksums.yaml +4 -4
- data/History.md +9 -3
- data/features/docs/gherkin/doc_strings.feature +15 -15
- data/lib/cucumber/filters/prepare_world.rb +3 -2
- data/lib/cucumber/formatter/console.rb +6 -1
- data/lib/cucumber/formatter/pretty.rb +1 -2
- data/lib/cucumber/formatter/progress.rb +1 -1
- data/lib/cucumber/hooks.rb +0 -7
- data/lib/cucumber/platform.rb +1 -1
- data/lib/cucumber/rb_support/rb_hook.rb +3 -1
- data/lib/cucumber/rb_support/rb_step_definition.rb +10 -4
- data/lib/cucumber/runtime/after_hooks.rb +1 -1
- data/lib/cucumber/runtime/before_hooks.rb +1 -1
- data/lib/cucumber/runtime/step_hooks.rb +1 -1
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +6 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54a19c3d70484ac7ded68c6ccf6a9b3b482598cc
|
4
|
+
data.tar.gz: 359760639e06c251399202275219bb763b2de0b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4737148210ae32c40a5bba409f85cf4bf6c4312d2d2ddfc8812aae0476d14e0423271ed72ef35e6ad8e4ad93273f05acd915155d4e161c775ae6e71ed92819fe
|
7
|
+
data.tar.gz: ef7867ae75f81da2e36ca1c45d5d27b24520ca176685532c64c5e8cc74933a700711e4ec3fb64313b194011bb8aa206f454fb22011a6a1aeef22b86ab819432e
|
data/History.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
-
## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v2.0.
|
1
|
+
## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v2.0.2...master)
|
2
2
|
|
3
|
-
...
|
4
3
|
|
5
|
-
## [
|
4
|
+
## [v2.0.2](https://github.com/cucumber/cucumber-ruby/compare/v2.0.1...v2.0.2)
|
5
|
+
|
6
|
+
### Bugfixes
|
7
|
+
|
8
|
+
* Revert interface change in Cucumber::Formatter::Console (which can break custom formatters in v2.0.1) ([893](https://github.com/cucumber/cucumber-ruby/issues/893) @brasmusson).
|
9
|
+
* Calculate the locations of hooks properly (so it also work between drives on Windows) ([885](https://github.com/cucumber/cucumber-ruby/issues/885) @brasmusson).
|
10
|
+
|
11
|
+
## [v2.0.1](https://github.com/cucumber/cucumber-ruby/compare/v2.0.0...v2.0.1)
|
6
12
|
|
7
13
|
### New Features
|
8
14
|
|
@@ -1,31 +1,31 @@
|
|
1
1
|
Feature: Doc strings
|
2
2
|
|
3
|
-
If you need to specify information in a scenario that won't fit on a single line,
|
3
|
+
If you need to specify information in a scenario that won't fit on a single line,
|
4
4
|
you can use a DocString.
|
5
|
-
|
5
|
+
|
6
6
|
A DocString follows a step, and starts and ends with three double quotes, like this:
|
7
|
-
|
7
|
+
|
8
8
|
```gherkin
|
9
9
|
When I ask to reset my password
|
10
10
|
Then I should receive an email with:
|
11
11
|
"""
|
12
12
|
Dear bozo,
|
13
|
-
|
13
|
+
|
14
14
|
Please click this link to reset your password
|
15
15
|
"""
|
16
16
|
```
|
17
|
-
|
17
|
+
|
18
18
|
It's possible to annotate the DocString with the type of content it contains. This is used by
|
19
19
|
formatting tools like http://relishapp.com which will render the contents of the DocString
|
20
20
|
appropriately. You specify the content type after the triple quote, like this:
|
21
|
-
|
21
|
+
|
22
22
|
```gherkin
|
23
23
|
Given there is some Ruby code:
|
24
24
|
"""ruby
|
25
25
|
puts "hello world"
|
26
26
|
"""
|
27
27
|
```
|
28
|
-
|
28
|
+
|
29
29
|
You can read the content type from the argument passed into your step definition, as shown
|
30
30
|
in the example below.
|
31
31
|
|
@@ -33,11 +33,11 @@ Feature: Doc strings
|
|
33
33
|
Given a scenario with a step that looks like this:
|
34
34
|
"""gherkin
|
35
35
|
Given I have a lot to say:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
\"\"\"
|
37
|
+
One
|
38
|
+
Two
|
39
|
+
Three
|
40
|
+
\"\"\"
|
41
41
|
"""
|
42
42
|
And a step definition that looks like this:
|
43
43
|
"""ruby
|
@@ -57,9 +57,9 @@ Feature: Doc strings
|
|
57
57
|
Given a scenario with a step that looks like this:
|
58
58
|
"""gherkin
|
59
59
|
Given I have some code for you:
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
\"\"\"ruby
|
61
|
+
# hello
|
62
|
+
\"\"\"
|
63
63
|
"""
|
64
64
|
And a step definition that looks like this:
|
65
65
|
"""ruby
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'cucumber/core/filter'
|
2
|
+
require 'cucumber/core/ast/location'
|
2
3
|
require 'cucumber/running_test_case'
|
3
|
-
require 'cucumber/hooks'
|
4
4
|
|
5
5
|
module Cucumber
|
6
6
|
module Filters
|
@@ -25,7 +25,8 @@ module Cucumber
|
|
25
25
|
around_hooks = [init_scenario] + @original_test_case.around_hooks
|
26
26
|
|
27
27
|
empty_hook = proc {} #no op - legacy format adapter expects a before hooks
|
28
|
-
|
28
|
+
file, line = *empty_hook.source_location
|
29
|
+
default_hook = Cucumber::Hooks.before_hook(@original_test_case.source, Cucumber::Core::Ast::Location.new(file, line), &empty_hook)
|
29
30
|
steps = [default_hook] + @original_test_case.test_steps
|
30
31
|
|
31
32
|
@original_test_case.with_around_hooks(around_hooks).with_steps(steps)
|
@@ -76,7 +76,12 @@ module Cucumber
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def print_stats(
|
79
|
+
def print_stats(features, options)
|
80
|
+
duration = features ? features.duration : nil
|
81
|
+
print_statistics(duration, options)
|
82
|
+
end
|
83
|
+
|
84
|
+
def print_statistics(duration, options)
|
80
85
|
failures = collect_failing_scenarios(runtime)
|
81
86
|
if !failures.empty?
|
82
87
|
print_failing_scenarios(failures, options.custom_profiles, options[:source])
|
@@ -240,8 +240,7 @@ module Cucumber
|
|
240
240
|
end
|
241
241
|
|
242
242
|
def print_summary(features)
|
243
|
-
|
244
|
-
print_stats(duration, @options)
|
243
|
+
print_stats(features, @options)
|
245
244
|
print_snippets(@options)
|
246
245
|
print_passing_wip(@options)
|
247
246
|
end
|
data/lib/cucumber/hooks.rb
CHANGED
@@ -26,13 +26,6 @@ module Cucumber
|
|
26
26
|
Core::Test::AroundHook.new(&block)
|
27
27
|
end
|
28
28
|
|
29
|
-
def location(hook)
|
30
|
-
filepath, line = *hook.source_location
|
31
|
-
Core::Ast::Location.new(
|
32
|
-
Pathname.new(filepath).relative_path_from(Pathname.new(Dir.pwd)).to_path,
|
33
|
-
line)
|
34
|
-
end
|
35
|
-
|
36
29
|
private
|
37
30
|
|
38
31
|
def build_hook_step(source, location, block, hook_type, action_type)
|
data/lib/cucumber/platform.rb
CHANGED
@@ -4,7 +4,7 @@ require 'rbconfig'
|
|
4
4
|
|
5
5
|
module Cucumber
|
6
6
|
unless defined?(Cucumber::VERSION)
|
7
|
-
VERSION = '2.0.
|
7
|
+
VERSION = '2.0.2'
|
8
8
|
BINARY = File.expand_path(File.dirname(__FILE__) + '/../../bin/cucumber')
|
9
9
|
LIBDIR = File.expand_path(File.dirname(__FILE__) + '/../../lib')
|
10
10
|
JRUBY = defined?(JRUBY_VERSION)
|
@@ -2,12 +2,14 @@ module Cucumber
|
|
2
2
|
module RbSupport
|
3
3
|
# Wrapper for Before, After and AfterStep hooks
|
4
4
|
class RbHook
|
5
|
-
attr_reader :tag_expressions
|
5
|
+
attr_reader :tag_expressions, :location
|
6
6
|
|
7
7
|
def initialize(rb_language, tag_expressions, proc)
|
8
8
|
@rb_language = rb_language
|
9
9
|
@tag_expressions = tag_expressions
|
10
10
|
@proc = proc
|
11
|
+
file, line = @proc.file_colon_line.match(/(.*):(\d+)/)[1..2]
|
12
|
+
@location = Core::Ast::Location.new(file, line)
|
11
13
|
end
|
12
14
|
|
13
15
|
def source_location
|
@@ -51,10 +51,16 @@ module Cucumber
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def patch_location_onto(block)
|
54
|
-
file, line = caller[5].
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
file, line = caller[5].match(/(.*):(\d+)/)[1..2]
|
55
|
+
file = File.expand_path(file)
|
56
|
+
pwd = File.expand_path(Dir.pwd)
|
57
|
+
pwd.force_encoding(file.encoding)
|
58
|
+
if file.index(pwd)
|
59
|
+
file = file[pwd.length+1..-1]
|
60
|
+
elsif file =~ /.*\/gems\/(.*\.rb)$/
|
61
|
+
file = $1
|
62
|
+
end
|
63
|
+
location = Core::Ast::Location.new(file, line)
|
58
64
|
block.define_singleton_method(:file_colon_line) { location.to_s }
|
59
65
|
block
|
60
66
|
end
|
@@ -17,7 +17,7 @@ module Cucumber
|
|
17
17
|
def after_hooks(source)
|
18
18
|
@hooks.map do |hook|
|
19
19
|
action = ->(result) { hook.invoke('After', @scenario.with_result(result)) }
|
20
|
-
Hooks.after_hook(source,
|
20
|
+
Hooks.after_hook(source, hook.location, &action)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -19,7 +19,7 @@ module Cucumber
|
|
19
19
|
def before_hooks(source)
|
20
20
|
@hooks.map do |hook|
|
21
21
|
action_block = ->(result) { hook.invoke('Before', @scenario.with_result(result)) }
|
22
|
-
Hooks.before_hook(source,
|
22
|
+
Hooks.before_hook(source, hook.location, &action_block)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -15,7 +15,7 @@ module Cucumber
|
|
15
15
|
def after_step_hooks(test_step)
|
16
16
|
@hooks.map do |hook|
|
17
17
|
action = ->(*args) { hook.invoke('AfterStep', args) }
|
18
|
-
Hooks.after_step_hook(test_step.source,
|
18
|
+
Hooks.after_step_hook(test_step.source, hook.location, &action)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -51,6 +51,10 @@ module Cucumber
|
|
51
51
|
@proc.source_location
|
52
52
|
end
|
53
53
|
|
54
|
+
def location
|
55
|
+
source_location
|
56
|
+
end
|
57
|
+
|
54
58
|
def invoke(pseudo_method, arguments, &block)
|
55
59
|
@proc.call
|
56
60
|
end
|
@@ -70,13 +74,13 @@ module Cucumber
|
|
70
74
|
# The adapter is built on the assumption that each test case will have at least one step. This is annoying
|
71
75
|
# for tests, but a safe assumption for production use as we always add one hook to initialize the world.
|
72
76
|
hook = proc {}
|
73
|
-
[ Hooks.before_hook(source,
|
77
|
+
[ Hooks.before_hook(source, hook.source_location, &hook) ]
|
74
78
|
end
|
75
79
|
|
76
80
|
def after_hooks(source)
|
77
81
|
# We add an after hook to make sure the adapter can cope with it
|
78
82
|
hook = proc {}
|
79
|
-
[ Hooks.after_hook(source,
|
83
|
+
[ Hooks.after_hook(source, hook.source_location, &hook) ]
|
80
84
|
end
|
81
85
|
end
|
82
86
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aslak Hellesøy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-07-
|
13
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cucumber-core
|
@@ -838,7 +838,7 @@ rubyforge_project:
|
|
838
838
|
rubygems_version: 2.2.2
|
839
839
|
signing_key:
|
840
840
|
specification_version: 4
|
841
|
-
summary: cucumber-2.0.
|
841
|
+
summary: cucumber-2.0.2
|
842
842
|
test_files:
|
843
843
|
- features/docs/api/list_step_defs_as_json.feature
|
844
844
|
- features/docs/api/run_cli_main_with_existing_runtime.feature
|