bdd 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 26bc9edd12abbfb44efd8697966b255f6c899347
4
+ data.tar.gz: 8a9572f9e28559163428f23f78bb0a060f2512f3
5
+ SHA512:
6
+ metadata.gz: d7100c8e7cbfe604d8b15fe0a5db80008240e0ec32a163b79efd25e288657da4321052972f547eedae3655c7cae34bf6c468a777bf9866cf26839e708e65bdca
7
+ data.tar.gz: 196f90b2f5b424220cbffe9e4a4cb490946b1a66b867b232168f82f546a300d760a5d8c41453399a5da29892203f97a59bdcd4ffc6b1ca596766282f2e671fda
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /*.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rspec-step.gemspec
4
+ gemspec
@@ -0,0 +1,43 @@
1
+ # Bdd
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/bdd`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'bdd'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install bdd
22
+
23
+ ## Usage
24
+
25
+ Add this to your spec_helper.rb file
26
+
27
+ ```ruby
28
+ require 'bdd'
29
+ ```
30
+
31
+ ## Development
32
+
33
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
34
+
35
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
36
+
37
+ ## Contributing
38
+
39
+ 1. Fork it ( https://github.com/[my-github-username]/bdd/fork )
40
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
41
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
42
+ 4. Push to the branch (`git push origin my-new-feature`)
43
+ 5. Create a new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'bdd/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "bdd"
8
+ spec.version = Bdd::VERSION
9
+ spec.authors = ["James Pinto"]
10
+ spec.email = ["thejamespinto@gmail.com"]
11
+
12
+ spec.summary = %q{Cucumber style in your RSpec tests}
13
+ spec.description = %q{Cucumber style in your RSpec tests}
14
+ spec.homepage = "https://github.com/thejamespinto/bdd"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ # if spec.respond_to?(:metadata)
22
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
23
+ # end
24
+
25
+ spec.add_runtime_dependency 'rspec-example_steps'
26
+ spec.add_runtime_dependency 'rspec'
27
+ spec.add_runtime_dependency 'colorize'
28
+
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.9"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ # spec.add_development_dependency 'rspec'
33
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "bdd"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,14 @@
1
+ require "bdd/version"
2
+
3
+ require "colorize"
4
+
5
+
6
+
7
+ require "bdd/rspec" # if defined? ::RSpec
8
+ # TODO: require "bdd/test_unit" # if
9
+ # TODO: require "bdd/minitest" # if
10
+
11
+
12
+ module Bdd
13
+ # Your code goes here...
14
+ end
@@ -0,0 +1,8 @@
1
+ require "rspec/example_steps"
2
+ require "bdd/rspec/code"
3
+
4
+ module Bdd
5
+ module RSpec
6
+ # Your code goes here...
7
+ end
8
+ end
@@ -0,0 +1,170 @@
1
+ # https://raw.githubusercontent.com/rspec/rspec-core/v3.2.2/lib/rspec/core/formatters/documentation_formatter.rb
2
+ # require "rspec/core/formatters/documentation_formatter"
3
+
4
+ RSpec::Support.require_rspec_core "formatters/base_text_formatter"
5
+
6
+ class RSpec::Core::ExampleGroup
7
+ def step(msg)
8
+ m = RSpec.current_example.metadata
9
+
10
+ if block_given?
11
+ # m[:step_messages] << msg #if m[:step_messages]
12
+ if @is_during_rspec_step
13
+ yield
14
+ else
15
+ m[:step_messages] << hash = {msg: msg}
16
+ @is_during_rspec_step = true
17
+ yield
18
+ # apply green color if example passes
19
+ hash[:color] = :green
20
+ @is_during_rspec_step = false
21
+ end
22
+ else
23
+ m[:step_messages] << {msg: "SKIPPED #{msg}"}
24
+ end
25
+ end
26
+
27
+ def Given(msg, &block)
28
+ step(["Given", msg], &block)
29
+ end
30
+
31
+ def When(msg, &block)
32
+ step([" When", msg], &block)
33
+ end
34
+
35
+ def Then(msg, &block)
36
+ step([" Then", msg], &block)
37
+ end
38
+
39
+ def And(msg, &block)
40
+ step([" And", msg], &block)
41
+ end
42
+
43
+ def But(msg, &block)
44
+ step([" But", msg], &block)
45
+ end
46
+
47
+ # def AndGiven(msg, &block)
48
+ # step("And Given #{msg}", &block)
49
+ # end
50
+
51
+ # def AndWhen(msg, &block)
52
+ # step(" And When #{msg}", &block)
53
+ # end
54
+
55
+ # def AndThen(msg, &block)
56
+ # step(" And Then #{msg}", &block)
57
+ # end
58
+
59
+ # def ButGiven(msg, &block)
60
+ # step("But Given #{msg}", &block)
61
+ # end
62
+
63
+ # def ButWhen(msg, &block)
64
+ # step(" But When #{msg}", &block)
65
+ # end
66
+
67
+ # def ButThen(msg, &block)
68
+ # step(" But Then #{msg}", &block)
69
+ # end
70
+ end
71
+
72
+
73
+ module RSpec
74
+ module Core
75
+ module Formatters
76
+ # @private
77
+ class DocumentationFormatter < BaseTextFormatter
78
+ Formatters.register self
79
+ # , :example_group_started, :example_group_finished,
80
+ # :example_passed, :example_pending, :example_failed
81
+
82
+ def initialize(output)
83
+ super
84
+ @group_level = 0
85
+ end
86
+
87
+
88
+ def example_started(notification)
89
+ notification.example.metadata[:step_messages] = []
90
+ end
91
+
92
+ def example_group_started(notification)
93
+ output.puts if @group_level == 0
94
+ output.puts "#{current_indentation}#{notification.group.description.strip}"
95
+
96
+ @group_level += 1
97
+ end
98
+
99
+ def example_group_finished(_notification)
100
+ @group_level -= 1
101
+ end
102
+
103
+ def example_passed(passed)
104
+ output.puts passed_output(passed.example)
105
+ output.puts read_steps(passed.example)
106
+ end
107
+
108
+ def example_pending(pending)
109
+ output.puts pending_output(pending.example,
110
+ pending.example.execution_result.pending_message)
111
+ output.puts read_steps(pending.example, :yellow)
112
+ end
113
+
114
+ def example_failed(failure)
115
+ output.puts failure_output(failure.example,
116
+ failure.example.execution_result.exception)
117
+ output.puts read_steps(failure.example, :red)
118
+ end
119
+
120
+ private
121
+
122
+ def read_steps(example, color2=nil)
123
+ last_step_title = ""
124
+ example.metadata[:step_messages].map do |hash|
125
+ msg = hash[:msg]
126
+ color = hash[:color] || color2 || :light_black
127
+ if msg.is_a? Array
128
+ msg0 = if msg[0] == last_step_title
129
+ blank_step_title
130
+ else
131
+ msg[0].light_white.bold
132
+ end
133
+ # msg0 = msg[0].white.bold
134
+ last_step_title = msg[0]
135
+
136
+ msg = [msg0, msg[1].colorize(color)].join(' ')
137
+ end
138
+ # light_black doesn't really get used because the test failure prevents other messages from being added
139
+ r = [next_indentation, msg]
140
+ r.join(' ')
141
+ # r = [next_indentation, "-".colorize(color), msg]
142
+ # r.join(' ').colorize(color)
143
+ end
144
+ end
145
+
146
+ def blank_step_title
147
+ " "
148
+ end
149
+
150
+
151
+ def next_failure_index
152
+ @next_failure_index ||= 0
153
+ @next_failure_index += 1
154
+ end
155
+
156
+ def current_indentation
157
+ ' ' * @group_level
158
+ end
159
+
160
+ def next_indentation
161
+ ' ' * (@group_level+1)
162
+ end
163
+
164
+ def example_group_chain
165
+ example_group.parent_groups.reverse
166
+ end
167
+ end
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,3 @@
1
+ module Bdd
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bdd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Pinto
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-05-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec-example_steps
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ description: Cucumber style in your RSpec tests
84
+ email:
85
+ - thejamespinto@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - Gemfile
94
+ - README.md
95
+ - Rakefile
96
+ - bdd.gemspec
97
+ - bin/console
98
+ - bin/setup
99
+ - lib/bdd.rb
100
+ - lib/bdd/rspec.rb
101
+ - lib/bdd/rspec/code.rb
102
+ - lib/bdd/version.rb
103
+ homepage: https://github.com/thejamespinto/bdd
104
+ licenses: []
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.4.5
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Cucumber style in your RSpec tests
126
+ test_files: []