allure-rspec 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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +41 -0
- data/README.md +53 -0
- data/allure-rspec.gemspec +27 -0
- data/lib/allure-rspec.rb +28 -0
- data/lib/allure-rspec/adaptor.rb +9 -0
- data/lib/allure-rspec/builder.rb +150 -0
- data/lib/allure-rspec/dsl.rb +45 -0
- data/lib/allure-rspec/formatter.rb +60 -0
- data/lib/allure-rspec/version.rb +5 -0
- data/spec/extend_steps_spec.rb +21 -0
- data/spec/spec_helper.rb +11 -0
- metadata +127 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d5172f300f2a968898c79b3db59c0fc632c2d74c
|
4
|
+
data.tar.gz: 6a63f38b078f320a38b8b4c133e032c64f7c94dd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 030995aae4cb005e6a498222a3050d484ab1aa825f63a0e3ff97768fc4f069161831a503d5e70be70a44c1d898f77b7495518700342816e77402a022ad1f100f
|
7
|
+
data.tar.gz: a49109b6de8af85d44ebcb3b49bfc101fd53bb584c59498cdebb756ac5fc29875f075e37f0f7d2f812241bbe9dbd547afa91f152dc429782eb8b7206f306b8f9
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
Allure RSpec Adaptor (0.1)
|
5
|
+
nokogiri
|
6
|
+
rspec-steps (~> 0.1.1)
|
7
|
+
uuid
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
diff-lcs (1.2.5)
|
13
|
+
macaddr (1.6.1)
|
14
|
+
systemu (~> 2.5.0)
|
15
|
+
mini_portile (0.5.2)
|
16
|
+
nokogiri (1.6.0)
|
17
|
+
mini_portile (~> 0.5.0)
|
18
|
+
rake (10.1.0)
|
19
|
+
rspec (2.13.0)
|
20
|
+
rspec-core (~> 2.13.0)
|
21
|
+
rspec-expectations (~> 2.13.0)
|
22
|
+
rspec-mocks (~> 2.13.0)
|
23
|
+
rspec-core (2.13.1)
|
24
|
+
rspec-expectations (2.13.0)
|
25
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
26
|
+
rspec-mocks (2.13.1)
|
27
|
+
rspec-steps (0.1.1)
|
28
|
+
rspec (>= 2.6, < 2.14.0)
|
29
|
+
systemu (2.5.2)
|
30
|
+
uuid (2.3.7)
|
31
|
+
macaddr (~> 1.0)
|
32
|
+
|
33
|
+
PLATFORMS
|
34
|
+
ruby
|
35
|
+
|
36
|
+
DEPENDENCIES
|
37
|
+
Allure RSpec Adaptor!
|
38
|
+
bundler
|
39
|
+
nokogiri (~> 1.6.0)
|
40
|
+
rake
|
41
|
+
rspec-steps (~> 0.1.1)
|
data/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# Allure RSpec Adaptor
|
2
|
+
|
3
|
+
Adaptor to use the Allure framework along with the RSpec
|
4
|
+
|
5
|
+
## Setup
|
6
|
+
|
7
|
+
Add the dependency to your Gemfile
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'allure-rspec'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then include it in your spec_helper.rb:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
RSpec.configure do |c|
|
17
|
+
c.include AllureRSpec::Adaptor
|
18
|
+
end
|
19
|
+
```
|
20
|
+
|
21
|
+
## Advanced options
|
22
|
+
|
23
|
+
You can specify the directory where the Allure test results will appear. By default it would be 'allure/data' within
|
24
|
+
your current directory.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
AllureRSpec.configure do |c|
|
28
|
+
c.output_dir = "/whatever/you/like"
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
## Usage examples
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
describe AllureRSpec do
|
36
|
+
|
37
|
+
it "should build" do
|
38
|
+
step "step1" do
|
39
|
+
attach_file "screenshot1", take_screenshot_as_file
|
40
|
+
end
|
41
|
+
|
42
|
+
step "step2" do
|
43
|
+
5.should be < 1
|
44
|
+
end
|
45
|
+
|
46
|
+
step "step3" do
|
47
|
+
0.should == 0
|
48
|
+
end
|
49
|
+
|
50
|
+
attach_file "screenshot2", take_screenshot_as_file
|
51
|
+
end
|
52
|
+
end
|
53
|
+
```
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
3
|
+
require "allure-rspec/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'allure-rspec'
|
7
|
+
s.version = AllureRSpec::Version::STRING
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Ilya Sadykov']
|
10
|
+
s.email = ['smecsia@yandex-team.ru']
|
11
|
+
s.description = %q{Adaptor to use Allure framework along with the RSpec 2}
|
12
|
+
s.summary = "allure-rspec-#{AllureRSpec::Version::STRING}"
|
13
|
+
s.homepage = 'http://allure.qatools.ru'
|
14
|
+
s.license = 'Apache2'
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ['lib']
|
20
|
+
|
21
|
+
s.add_dependency 'rspec-steps', '~> 0.1.1'
|
22
|
+
s.add_dependency 'nokogiri'
|
23
|
+
s.add_dependency 'uuid'
|
24
|
+
|
25
|
+
s.add_development_dependency 'bundler'
|
26
|
+
s.add_development_dependency 'rake'
|
27
|
+
end
|
data/lib/allure-rspec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'allure-rspec/version'
|
2
|
+
require 'allure-rspec/formatter'
|
3
|
+
require 'allure-rspec/adaptor'
|
4
|
+
require 'allure-rspec/dsl'
|
5
|
+
require 'allure-rspec/builder'
|
6
|
+
|
7
|
+
module AllureRSpec
|
8
|
+
include AllureRSpec::DSL
|
9
|
+
|
10
|
+
module Config
|
11
|
+
class << self
|
12
|
+
attr_accessor :output_dir
|
13
|
+
|
14
|
+
DEFAULT_OUTPUT_DIR = 'allure/data'
|
15
|
+
|
16
|
+
def output_dir
|
17
|
+
@output_dir || DEFAULT_OUTPUT_DIR
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def configure(&block)
|
24
|
+
yield Config
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'rexml/text'
|
2
|
+
|
3
|
+
module AllureRSpec
|
4
|
+
|
5
|
+
class Builder
|
6
|
+
class << self
|
7
|
+
attr_accessor :suites
|
8
|
+
MUTEX = Mutex.new
|
9
|
+
|
10
|
+
def init_suites
|
11
|
+
MUTEX.synchronize {
|
12
|
+
self.suites ||= {}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def start_suite(title)
|
17
|
+
init_suites
|
18
|
+
MUTEX.synchronize do
|
19
|
+
puts "Starting suite #{title}"
|
20
|
+
self.suites[title] = {
|
21
|
+
:title => title,
|
22
|
+
:start => timestamp,
|
23
|
+
:tests => {},
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def start_test(suite, test, severity = :normal)
|
29
|
+
MUTEX.synchronize do
|
30
|
+
puts "Starting test #{suite}.#{test}"
|
31
|
+
self.suites[suite][:tests][test] = {
|
32
|
+
:title => test,
|
33
|
+
:start => timestamp,
|
34
|
+
:severity => severity,
|
35
|
+
:failure => nil,
|
36
|
+
:steps => {},
|
37
|
+
:attachments => []
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def stop_test(suite, test, result = {})
|
43
|
+
self.suites[suite][:tests][test][:steps].each do |step_title, step|
|
44
|
+
if step[:stop].nil? || step[:stop] == 0
|
45
|
+
stop_step(suite, test, step_title, result[:status])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
MUTEX.synchronize do
|
49
|
+
puts "Stopping test #{suite}.#{test}"
|
50
|
+
self.suites[suite][:tests][test][:stop] = timestamp(result[:started_at])
|
51
|
+
self.suites[suite][:tests][test][:start] = timestamp(result[:finished_at])
|
52
|
+
self.suites[suite][:tests][test][:status] = result[:status]
|
53
|
+
if (result[:status].to_sym != :passed)
|
54
|
+
self.suites[suite][:tests][test][:failure] = {
|
55
|
+
:stacktrace => escape((result[:caller] || []).map { |s| s.to_s }.join("\r\n")),
|
56
|
+
:message => escape(result[:exception].to_s),
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def escape(text)
|
64
|
+
REXML::Text.new(text, false, nil, false)
|
65
|
+
end
|
66
|
+
|
67
|
+
def start_step(suite, test, step, severity = :normal)
|
68
|
+
MUTEX.synchronize do
|
69
|
+
puts "Starting step #{suite}.#{test}.#{step}"
|
70
|
+
self.suites[suite][:tests][test][:steps][step] = {
|
71
|
+
:title => step,
|
72
|
+
:start => timestamp,
|
73
|
+
:severity => severity || :normal,
|
74
|
+
:attachments => []
|
75
|
+
}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_attachment(suite, test, attachment, step = nil)
|
80
|
+
attach = {
|
81
|
+
:title => attachment[:title],
|
82
|
+
:source => attachment[:source],
|
83
|
+
:type => attachment[:type],
|
84
|
+
}
|
85
|
+
if step.nil?
|
86
|
+
self.suites[suite][:tests][test][:attachments] << attach
|
87
|
+
else
|
88
|
+
self.suites[suite][:tests][test][:steps][step][:attachments] << attach
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def stop_step(suite, test, step, status = :passed)
|
93
|
+
MUTEX.synchronize do
|
94
|
+
puts "Stopping step #{suite}.#{test}.#{step}"
|
95
|
+
self.suites[suite][:tests][test][:steps][step][:stop] = timestamp
|
96
|
+
self.suites[suite][:tests][test][:steps][step][:status] = status
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def stop_suite(title)
|
101
|
+
init_suites
|
102
|
+
MUTEX.synchronize do
|
103
|
+
puts "Stopping suite #{title}"
|
104
|
+
self.suites[title][:stop] = timestamp
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def timestamp(time = nil)
|
109
|
+
((time || Time.now).to_f * 1000).to_i
|
110
|
+
end
|
111
|
+
|
112
|
+
def each_suite_build(&block)
|
113
|
+
suites_xml = []
|
114
|
+
self.suites.each do |suite_title, suite|
|
115
|
+
builder = Nokogiri::XML::Builder.new do
|
116
|
+
send "test-suite", :start => suite[:start] || 0, :stop => suite[:stop] || 0 do
|
117
|
+
title suite_title
|
118
|
+
suite[:tests].each do |test_title, test|
|
119
|
+
send "test-cases", :start => test[:start] || 0, :stop => test[:stop] || 0, :status => test[:status], :severity => test[:severity] do
|
120
|
+
title test_title
|
121
|
+
unless test[:failure].nil?
|
122
|
+
failure do
|
123
|
+
message test[:failure][:message]
|
124
|
+
send "stack-trace", test[:failure][:stacktrace]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
test[:steps].each do |step_title, step_obj|
|
128
|
+
steps(:start => step_obj[:start] || 0, :stop => step_obj[:stop] || 0, :status => step_obj[:status]) do
|
129
|
+
title step_title
|
130
|
+
step_obj[:attachments].each do |attach|
|
131
|
+
attachment :source => attach[:source], :title => attach[:title], :type => attach[:type]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
test[:attachments].each do |attach|
|
136
|
+
attachment :source => attach[:source], :title => attach[:title], :type => attach[:type]
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
xml = builder.to_xml
|
143
|
+
yield suite, xml
|
144
|
+
suites_xml << xml
|
145
|
+
end
|
146
|
+
suites_xml
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module AllureRSpec
|
2
|
+
module DSL
|
3
|
+
|
4
|
+
ALLOWED_ATTACH_EXTS = %w[txt html xml png jpg json]
|
5
|
+
|
6
|
+
def __mutex
|
7
|
+
@@__mutex ||= Mutex.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def __current_step
|
11
|
+
if defined? @@__current_step
|
12
|
+
@@__current_step
|
13
|
+
else
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def __with_step(step, &block)
|
19
|
+
__mutex.synchronize do
|
20
|
+
@@__current_step = step
|
21
|
+
yield
|
22
|
+
@@__current_step = nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def step(step, &block)
|
27
|
+
suite = self.example.metadata[:example_group][:description_args].first
|
28
|
+
test = self.example.metadata[:description]
|
29
|
+
AllureRSpec::Builder.start_step(suite, test, step)
|
30
|
+
__with_step step, &block
|
31
|
+
AllureRSpec::Builder.stop_step(suite, test, step)
|
32
|
+
end
|
33
|
+
|
34
|
+
def attach_file(title, file)
|
35
|
+
step = __current_step
|
36
|
+
suite = self.example.metadata[:example_group][:description_args].first
|
37
|
+
test = self.example.metadata[:description]
|
38
|
+
type = :other
|
39
|
+
file_extname = File.extname(file.path.downcase)
|
40
|
+
type = file_extname if ALLOWED_ATTACH_EXTS.include?(file_extname)
|
41
|
+
AllureRSpec::Builder.add_attachment(suite, test, {:type => type, :title => title, :source => file.path}, step)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'uuid'
|
3
|
+
|
4
|
+
module AllureRSpec
|
5
|
+
|
6
|
+
class Formatter < RSpec::Core::Formatters::BaseFormatter
|
7
|
+
|
8
|
+
def example_failed(example)
|
9
|
+
AllureRSpec::Builder.stop_test(
|
10
|
+
example.metadata[:example_group][:description_args].first,
|
11
|
+
example.metadata[:description],
|
12
|
+
example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
|
13
|
+
)
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def example_group_finished(group)
|
18
|
+
AllureRSpec::Builder.stop_suite(group.metadata[:example_group][:description_args].first)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def example_group_started(group)
|
23
|
+
AllureRSpec::Builder.start_suite(group.metadata[:example_group][:description_args].first)
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
def example_passed(example)
|
28
|
+
AllureRSpec::Builder.stop_test(
|
29
|
+
example.metadata[:example_group][:description_args].first,
|
30
|
+
example.metadata[:description],
|
31
|
+
example.metadata[:execution_result].merge(:caller => example.metadata[:caller])
|
32
|
+
)
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def example_pending(example)
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
40
|
+
def example_started(example)
|
41
|
+
suite = example.metadata[:example_group][:description_args].first
|
42
|
+
test = example.metadata[:description]
|
43
|
+
AllureRSpec::Builder.start_test(suite, test)
|
44
|
+
super
|
45
|
+
end
|
46
|
+
|
47
|
+
def stop
|
48
|
+
AllureRSpec::Builder.each_suite_build do |suite, xml|
|
49
|
+
dir = Pathname.new(AllureRSpec::Config.output_dir)
|
50
|
+
FileUtils.rm_rf(dir)
|
51
|
+
FileUtils.mkdir_p(dir)
|
52
|
+
File.open(dir.join("#{UUID.new.generate}.xml"), 'w+') do |file|
|
53
|
+
file.write(xml)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
super
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
describe AllureRSpec do
|
5
|
+
it "should build" do
|
6
|
+
attach_file "test-file1", Tempfile.new("test")
|
7
|
+
step "step1" do
|
8
|
+
attach_file "test-file2", Tempfile.new("test")
|
9
|
+
end
|
10
|
+
|
11
|
+
step "step2" do
|
12
|
+
|
13
|
+
5.should be < 1
|
14
|
+
end
|
15
|
+
|
16
|
+
step "step3" do
|
17
|
+
|
18
|
+
0.should == 0
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: allure-rspec
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ilya Sadykov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec-steps
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: nokogiri
|
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: uuid
|
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: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Adaptor to use Allure framework along with the RSpec 2
|
84
|
+
email:
|
85
|
+
- smecsia@yandex-team.ru
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- Gemfile
|
92
|
+
- Gemfile.lock
|
93
|
+
- README.md
|
94
|
+
- allure-rspec.gemspec
|
95
|
+
- lib/allure-rspec.rb
|
96
|
+
- lib/allure-rspec/adaptor.rb
|
97
|
+
- lib/allure-rspec/builder.rb
|
98
|
+
- lib/allure-rspec/dsl.rb
|
99
|
+
- lib/allure-rspec/formatter.rb
|
100
|
+
- lib/allure-rspec/version.rb
|
101
|
+
- spec/extend_steps_spec.rb
|
102
|
+
- spec/spec_helper.rb
|
103
|
+
homepage: http://allure.qatools.ru
|
104
|
+
licenses:
|
105
|
+
- Apache2
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 2.0.3
|
124
|
+
signing_key:
|
125
|
+
specification_version: 4
|
126
|
+
summary: allure-rspec-0.1
|
127
|
+
test_files: []
|