bdd 0.0.2 → 0.0.3
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/CHANGELOG.md +7 -0
- data/README.md +30 -9
- data/lib/bdd/rspec/example_group.rb +14 -5
- data/lib/bdd/rspec/formatter.rb +63 -0
- data/lib/bdd/rspec.rb +0 -34
- data/lib/bdd/version.rb +1 -1
- metadata +3 -4
- data/lib/bdd/rspec/documentation_formatter.rb +0 -88
- data/lib/bdd/rspec/reporter.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b3071c8c5074b6bca6bdd82ba09c81b9db354e5
|
4
|
+
data.tar.gz: 45901f145dd5e74fa4afed0dd81e921211068b59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f75dff103d304b7113f40aee32b9ed767e5665ea1f729a6bea763a5122566e865098f357fc0dd95a7472fec66fb74bffcc25b65c82238782367ce58bcc0425f1
|
7
|
+
data.tar.gz: 472fdb4a93f13e82a6c3f7ee396f091f180f6c8ac590027232406d8cd453ad9fddef2cba6fadd442692506fbc919460e0ee76970aef44dde496235367b8ffe20
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
## IN PROGRESS
|
4
4
|
|
5
|
+
### June 17th 2015
|
6
|
+
|
7
|
+
> @rafaelsales
|
8
|
+
- Does not force BDD formatting when gem is included in Gemfile
|
9
|
+
To use BDD Formatter follow steps in installation section of README
|
10
|
+
- Remove monkey patch of RSpec documentation formatter
|
11
|
+
|
5
12
|
### May 19th 2015
|
6
13
|
|
7
14
|
> @thejamespinto
|
data/README.md
CHANGED
@@ -4,8 +4,16 @@ Bdd brings cucumber-style Given/When/Then/And/But steps for RSpec examples
|
|
4
4
|
|
5
5
|
### Status
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
| Master | Gem Version |
|
8
|
+
| :----: | :----: |
|
9
|
+
| [](https://travis-ci.org/thejamespinto/bdd) | [](https://rubygems.org/gems/bdd) |
|
10
|
+
|
11
|
+
|
12
|
+
[](https://rubygems.org/gems/bdd)
|
13
|
+
[](https://rubygems.org/gems/bdd)
|
14
|
+
[](https://rubygems.org/gems/bdd)
|
15
|
+
|
16
|
+
|
9
17
|
|
10
18
|
### Description
|
11
19
|
|
@@ -16,21 +24,34 @@ This gem brings two major functionality to your tests
|
|
16
24
|
|
17
25
|
|
18
26
|
|
19
|
-
|
27
|
+
## Installation
|
28
|
+
|
29
|
+
Include in your Gemfile:
|
20
30
|
|
21
31
|
```ruby
|
22
|
-
|
32
|
+
group :test do
|
33
|
+
gem 'bdd'
|
34
|
+
end
|
23
35
|
```
|
24
36
|
|
25
|
-
|
37
|
+
### RSpec
|
26
38
|
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
Run specs with custom format specified inline:
|
40
|
+
|
41
|
+
`
|
42
|
+
rspec --format Bdd::RSpec::Formatter --color spec
|
43
|
+
`
|
30
44
|
|
45
|
+
Or, if you want to use as your default formatter, simply put the options in your .rspec file:
|
31
46
|
|
47
|
+
`.rspec`
|
48
|
+
|
49
|
+
```yml
|
50
|
+
--format Bdd::RSpec::Formatter
|
51
|
+
--color
|
52
|
+
```
|
32
53
|
|
33
|
-
|
54
|
+
## Output Example
|
34
55
|
|
35
56
|
`spec/features/search_spec.rb`
|
36
57
|
|
@@ -2,13 +2,13 @@ module Bdd
|
|
2
2
|
module RSpec
|
3
3
|
module ExampleGroup
|
4
4
|
|
5
|
-
|
6
5
|
def step(array, &block)
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
unless using_bdd_formatter?
|
7
|
+
yield if block_given?
|
8
|
+
return
|
9
|
+
end
|
10
|
+
|
10
11
|
if block_given?
|
11
|
-
# m[:step_messages] << array #if m[:step_messages]
|
12
12
|
if @is_during_rspec_step
|
13
13
|
yield
|
14
14
|
else
|
@@ -74,6 +74,15 @@ module Bdd
|
|
74
74
|
# end
|
75
75
|
|
76
76
|
|
77
|
+
private
|
78
|
+
|
79
|
+
def step_messages
|
80
|
+
::RSpec.current_example.metadata[:step_messages]
|
81
|
+
end
|
82
|
+
|
83
|
+
def using_bdd_formatter?
|
84
|
+
!step_messages.nil?
|
85
|
+
end
|
77
86
|
end
|
78
87
|
end
|
79
88
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
RSpec::Support.require_rspec_core "formatters/documentation_formatter"
|
2
|
+
|
3
|
+
module Bdd
|
4
|
+
module RSpec
|
5
|
+
class Formatter < ::RSpec::Core::Formatters::DocumentationFormatter
|
6
|
+
|
7
|
+
::RSpec::Core::Formatters.register self, :example_group_started, :example_group_finished,
|
8
|
+
:example_started, :example_passed,
|
9
|
+
:example_pending, :example_failed
|
10
|
+
|
11
|
+
def example_started(notification)
|
12
|
+
notification.example.metadata[:step_messages] = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def example_passed(passed)
|
16
|
+
super
|
17
|
+
output.puts read_steps(passed.example)
|
18
|
+
end
|
19
|
+
|
20
|
+
def example_pending(pending)
|
21
|
+
super
|
22
|
+
output.puts read_steps(pending.example, :yellow)
|
23
|
+
end
|
24
|
+
|
25
|
+
def example_failed(failure)
|
26
|
+
super
|
27
|
+
output.puts read_steps(failure.example, :red)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def read_steps(example, color2=nil)
|
33
|
+
last_step_title = ""
|
34
|
+
example.metadata[:step_messages].map do |hash|
|
35
|
+
msg = hash[:msg]
|
36
|
+
color = hash[:color] || color2 || :light_black
|
37
|
+
if msg.is_a? Array
|
38
|
+
msg0 = if msg[0] == last_step_title
|
39
|
+
blank_step_title
|
40
|
+
else
|
41
|
+
msg[0].light_white.bold
|
42
|
+
end
|
43
|
+
last_step_title = msg[0]
|
44
|
+
|
45
|
+
msg = [msg0, msg[1].colorize(color)].join(' ')
|
46
|
+
end
|
47
|
+
# light_black doesn't really get used because the test failure prevents other messages from being added
|
48
|
+
r = [next_indentation, msg]
|
49
|
+
r.join(' ')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def blank_step_title
|
54
|
+
" "
|
55
|
+
end
|
56
|
+
|
57
|
+
def next_indentation
|
58
|
+
' ' * (@group_level+1)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/bdd/rspec.rb
CHANGED
@@ -1,37 +1,3 @@
|
|
1
|
-
require 'bdd/rspec/reporter'
|
2
1
|
require 'bdd/rspec/example_group'
|
3
|
-
require 'bdd/rspec/documentation_formatter'
|
4
2
|
|
5
|
-
RSpec::Core::Reporter.send :include, Bdd::RSpec::Reporter
|
6
3
|
RSpec::Core::ExampleGroup.send :include, Bdd::RSpec::ExampleGroup
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
#
|
11
|
-
# CONFIGURE
|
12
|
-
#
|
13
|
-
RSpec.configure do |config|
|
14
|
-
# Use color in STDOUT
|
15
|
-
config.color = true
|
16
|
-
|
17
|
-
# Use color not only in STDOUT but also in pagers and files
|
18
|
-
config.tty = true
|
19
|
-
|
20
|
-
# Use the specified formatter
|
21
|
-
config.formatter = :documentation # :progress, :html, :textmate
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
#
|
27
|
-
# REGISTER
|
28
|
-
#
|
29
|
-
|
30
|
-
# if formatter = RSpec.world.reporter.__bdd_find_registered_formatter(RSpec::Core::Formatters::DocumentationFormatter)
|
31
|
-
# RSpec.world.reporter.register_listener formatter, :example_started
|
32
|
-
# RSpec::Core::Formatters.register formatter
|
33
|
-
# end
|
34
|
-
|
35
|
-
formatter = RSpec::Core::Formatters::DocumentationFormatter.new($stdout)
|
36
|
-
RSpec.world.reporter.register_listener formatter, :example_started
|
37
|
-
RSpec::Core::Formatters.register formatter
|
data/lib/bdd/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bdd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Pinto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -56,9 +56,8 @@ files:
|
|
56
56
|
- bin/setup
|
57
57
|
- lib/bdd.rb
|
58
58
|
- lib/bdd/rspec.rb
|
59
|
-
- lib/bdd/rspec/documentation_formatter.rb
|
60
59
|
- lib/bdd/rspec/example_group.rb
|
61
|
-
- lib/bdd/rspec/
|
60
|
+
- lib/bdd/rspec/formatter.rb
|
62
61
|
- lib/bdd/version.rb
|
63
62
|
homepage: https://github.com/thejamespinto/bdd
|
64
63
|
licenses: []
|
@@ -1,88 +0,0 @@
|
|
1
|
-
# https://raw.githubusercontent.com/rspec/rspec-core/v3.2.2/lib/rspec/core/formatters/documentation_formatter.rb
|
2
|
-
|
3
|
-
RSpec::Support.require_rspec_core "formatters/base_text_formatter"
|
4
|
-
|
5
|
-
module RSpec
|
6
|
-
module Core
|
7
|
-
module Formatters
|
8
|
-
|
9
|
-
# @private
|
10
|
-
class DocumentationFormatter < BaseTextFormatter
|
11
|
-
|
12
|
-
def initialize(output)
|
13
|
-
super
|
14
|
-
@group_level = 0
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def example_started(notification)
|
19
|
-
notification.example.metadata[:step_messages] = []
|
20
|
-
end
|
21
|
-
|
22
|
-
def example_group_started(notification)
|
23
|
-
output.puts if @group_level == 0
|
24
|
-
output.puts "#{current_indentation}#{notification.group.description.strip}"
|
25
|
-
|
26
|
-
@group_level += 1
|
27
|
-
end
|
28
|
-
|
29
|
-
def example_group_finished(_notification)
|
30
|
-
@group_level -= 1
|
31
|
-
end
|
32
|
-
|
33
|
-
def example_passed(passed)
|
34
|
-
output.puts passed_output(passed.example)
|
35
|
-
output.puts read_steps(passed.example)
|
36
|
-
end
|
37
|
-
|
38
|
-
def example_pending(pending)
|
39
|
-
output.puts pending_output(pending.example,
|
40
|
-
pending.example.execution_result.pending_message)
|
41
|
-
output.puts read_steps(pending.example, :yellow)
|
42
|
-
end
|
43
|
-
|
44
|
-
def example_failed(failure)
|
45
|
-
output.puts failure_output(failure.example,
|
46
|
-
failure.example.execution_result.exception)
|
47
|
-
output.puts read_steps(failure.example, :red)
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def read_steps(example, color2=nil)
|
53
|
-
last_step_title = ""
|
54
|
-
example.metadata[:step_messages].map do |hash|
|
55
|
-
msg = hash[:msg]
|
56
|
-
color = hash[:color] || color2 || :light_black
|
57
|
-
if msg.is_a? Array
|
58
|
-
msg0 = if msg[0] == last_step_title
|
59
|
-
blank_step_title
|
60
|
-
else
|
61
|
-
msg[0].light_white.bold
|
62
|
-
end
|
63
|
-
last_step_title = msg[0]
|
64
|
-
|
65
|
-
msg = [msg0, msg[1].colorize(color)].join(' ')
|
66
|
-
end
|
67
|
-
# light_black doesn't really get used because the test failure prevents other messages from being added
|
68
|
-
r = [next_indentation, msg]
|
69
|
-
r.join(' ')
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def blank_step_title
|
74
|
-
" "
|
75
|
-
end
|
76
|
-
|
77
|
-
def current_indentation
|
78
|
-
' ' * @group_level
|
79
|
-
end
|
80
|
-
|
81
|
-
def next_indentation
|
82
|
-
' ' * (@group_level+1)
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
data/lib/bdd/rspec/reporter.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Bdd
|
2
|
-
module RSpec
|
3
|
-
module Reporter
|
4
|
-
|
5
|
-
def __bdd_registered_formatters
|
6
|
-
@listeners.values.map(&:to_a).flatten.uniq
|
7
|
-
end
|
8
|
-
|
9
|
-
def __bdd_find_registered_formatter(klass)
|
10
|
-
__bdd_registered_formatters.detect { |formatter| formatter.class == klass }
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|