rox-client-rspec 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile +5 -4
- data/README.md +8 -62
- data/VERSION +1 -1
- data/lib/rox-client-rspec.rb +1 -1
- data/lib/rox-client-rspec/cache.rb +2 -2
- data/lib/rox-client-rspec/client.rb +2 -1
- data/lib/rox-client-rspec/formatter.rb +16 -14
- data/lib/rox-client-rspec/test_result.rb +7 -2
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGQ4ZTQwZDMyM2M0NjI0M2VjMDU4MmZjYjMzOWZjY2FmZmYyMzhiZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmIyYjVlOGMyZDg2ZmUwYzk0YzJmOTkzMGFjZWRiY2FhMTRmNTdkOA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWZkOWQxMWMwMzFiNDhiNzE4MGRhNGRlNGQ5N2ZiYjQ4OTE1OTM5MmM5ZDg1
|
10
|
+
ZDYyNTg3NzkzZTkxYWZkODU5NjAyMGE3ZDQ0YmM4MDQzZGUzYTgxMzA0ZmM0
|
11
|
+
MDlhMmUxY2M0MTRiMGM3ZjNiN2JhZDhlNzc1Y2Y0MmZiYjM2ZWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmUzMGI0YmYwODk0NWJjNDJkNDMyNTcxMGVlODg1MjFmY2UxZWMyZjQ1M2Iy
|
14
|
+
ZWJmMWFmMmEyMjFjZTM4ZjU5M2I1ZjJlZTU1ZjFlOGJmNDc4NDI4MDBlM2Fh
|
15
|
+
OWViMGVkM2E3YzA3ZTdkMjQ3MDE2MGIxNzljMmZmMDFlYTI5NmQ=
|
data/Gemfile
CHANGED
@@ -3,10 +3,10 @@ source "http://rubygems.org"
|
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
5
|
|
6
|
-
gem 'rspec', '~>
|
6
|
+
gem 'rspec', '~> 3.1'
|
7
7
|
gem 'oj', '~> 2.1'
|
8
|
-
gem 'httparty', '~> 0.
|
9
|
-
gem 'paint', '~> 0.8
|
8
|
+
gem 'httparty', '~> 0.13'
|
9
|
+
gem 'paint', '~> 0.8'
|
10
10
|
gem 'rake', '~> 10.1'
|
11
11
|
|
12
12
|
# Add dependencies to develop your gem here.
|
@@ -14,8 +14,9 @@ gem 'rake', '~> 10.1'
|
|
14
14
|
group :development do
|
15
15
|
gem 'bundler'
|
16
16
|
gem 'jeweler'
|
17
|
-
gem 'geminabox'
|
18
17
|
gem 'rake-version'
|
19
18
|
gem 'simplecov'
|
20
19
|
gem 'fakefs', require: 'fakefs/safe'
|
20
|
+
gem 'rspec-its'
|
21
|
+
gem 'rspec-collection_matchers'
|
21
22
|
end
|
data/README.md
CHANGED
@@ -6,14 +6,15 @@
|
|
6
6
|
|
7
7
|
## Requirements
|
8
8
|
|
9
|
-
* RSpec
|
9
|
+
* RSpec 3.1 (0.4.0+)
|
10
|
+
* *RSpec 2.14 is supported up to version 0.3.1*
|
10
11
|
|
11
12
|
## Installation
|
12
13
|
|
13
14
|
In your Gemfile:
|
14
15
|
|
15
16
|
```rb
|
16
|
-
gem 'rox-client-rspec', '~> 0.
|
17
|
+
gem 'rox-client-rspec', '~> 0.4.0'
|
17
18
|
```
|
18
19
|
|
19
20
|
Manually:
|
@@ -32,7 +33,7 @@ Test keys are assigned to test using RSpec metadata:
|
|
32
33
|
|
33
34
|
```rb
|
34
35
|
it "should work", rox: { key: 'abcdefghijkl' } do
|
35
|
-
expect(true).to
|
36
|
+
expect(true).to be(true)
|
36
37
|
end
|
37
38
|
|
38
39
|
it(nil, rox: { key: 'bcdefghijklm' }){ should validate_presence_of(:name) }
|
@@ -41,67 +42,12 @@ it(nil, rox: { key: 'bcdefghijklm' }){ should validate_presence_of(:name) }
|
|
41
42
|
<a name="setup"></a>
|
42
43
|
## Setup
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
You must first set up the configuration file(s) for the project.
|
46
|
+
This procedure is described in the [rox-client](https://github.com/lotaris/rox-client) repository:
|
46
47
|
|
47
|
-
|
48
|
+
* [ROX Center Client Configuration](https://github.com/lotaris/rox-client#setup-procedure)
|
48
49
|
|
49
|
-
|
50
|
-
# List of ROX Center servers you can submit test results to.
|
51
|
-
servers:
|
52
|
-
rox.example.com: # A custom name for your ROX Center server.
|
53
|
-
# You will use this in the client configuration file.
|
54
|
-
# We recommend using the domain name where you deployed it.
|
55
|
-
|
56
|
-
apiUrl: https://rox.example.com/api # The URL of your ROX Center server's API.
|
57
|
-
# This is the domain where you deployed it with /api.
|
58
|
-
|
59
|
-
apiKeyId: 39fuc7x85lsoy9c0ek2d # Your user credentials on this server.
|
60
|
-
apiKeySecret: mwpqvvmagzoegxnqptxdaxkxonjmvrlctwcrfmowibqcpnsdqd
|
61
|
-
|
62
|
-
# If true, test results will be uploaded to ROX Center.
|
63
|
-
# Set to false to temporarily disable publishing.
|
64
|
-
# You can change this at runtime from the command line by setting the
|
65
|
-
# ROX_PUBLISH environment variable to 0 (false) or 1 (true).
|
66
|
-
publish: true
|
67
|
-
```
|
68
|
-
|
69
|
-
In the project directory where you run RSpec, you must add the `rox.yml` client configuration file:
|
70
|
-
|
71
|
-
```yml
|
72
|
-
# Configuration specific to your project.
|
73
|
-
project:
|
74
|
-
apiId: 154sic93pxs0 # The API key of your project in the ROX Center server.
|
75
|
-
version: 1.2.3
|
76
|
-
|
77
|
-
# Where the client should store its temporary files.
|
78
|
-
# The client will work without it but it is required for some advanced features.
|
79
|
-
workspace: tmp/rox
|
80
|
-
|
81
|
-
# Client advanced features.
|
82
|
-
payload:
|
83
|
-
|
84
|
-
# Saves a copy of the test payload sent to the ROX Center server for debugging.
|
85
|
-
# The file will be saved in rspec/servers/<SERVER_NAME>/payload.json.
|
86
|
-
save: false
|
87
|
-
|
88
|
-
# If you track a large number of tests (more than a thousand), enabling this
|
89
|
-
# will reduce the size of the test payloads sent to ROX Center server by caching
|
90
|
-
# test information that doesn't change often such as the name.
|
91
|
-
cache: false
|
92
|
-
|
93
|
-
# Prints a copy of the test payload sent to the ROX Center server for debugging.
|
94
|
-
# Temporarily enable at runtime by setting the ROX_PRINT_PAYLOAD environment variable to 1.
|
95
|
-
print: false
|
96
|
-
|
97
|
-
# The name of the ROX Center server to upload test results to.
|
98
|
-
# This name must be one of the server names in the ~/.rox/config.yml file.
|
99
|
-
# You can change this at runtime from the command line by setting the
|
100
|
-
# ROX_SERVER environment variable.
|
101
|
-
server: rox.example.com
|
102
|
-
```
|
103
|
-
|
104
|
-
Finally, you must enable the client in your spec helper file (usually `spec/spec_helper.rb`).
|
50
|
+
You must then enable the client in your spec helper file (e.g. `spec/spec_helper.rb`).
|
105
51
|
|
106
52
|
```yml
|
107
53
|
RoxClient::RSpec.configure do |config|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/rox-client-rspec.rb
CHANGED
@@ -34,11 +34,11 @@ module RoxClient::RSpec
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def known? test_result
|
37
|
-
|
37
|
+
!!@tests[@project_api_id] && !!@tests[@project_api_id][test_result.key]
|
38
38
|
end
|
39
39
|
|
40
40
|
def stale? test_result
|
41
|
-
|
41
|
+
!!@tests[@project_api_id] && test_result_hash(test_result) != @tests[@project_api_id][test_result.key]
|
42
42
|
end
|
43
43
|
|
44
44
|
private
|
@@ -18,7 +18,6 @@ module RoxClient::RSpec
|
|
18
18
|
|
19
19
|
def process test_run
|
20
20
|
|
21
|
-
puts
|
22
21
|
return fail "No server to publish results to" if !@server
|
23
22
|
|
24
23
|
test_run.uid = @uid.load_uid
|
@@ -43,6 +42,8 @@ module RoxClient::RSpec
|
|
43
42
|
save_payload payload if @save_payload
|
44
43
|
print_payload payload if @print_payload
|
45
44
|
|
45
|
+
puts
|
46
|
+
|
46
47
|
published
|
47
48
|
end
|
48
49
|
|
@@ -4,10 +4,12 @@ require 'rspec/core/formatters/base_formatter'
|
|
4
4
|
|
5
5
|
module RoxClient::RSpec
|
6
6
|
|
7
|
-
class Formatter
|
7
|
+
class Formatter
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
RSpec::Core::Formatters.register self, :start, :stop, :close,
|
10
|
+
:example_group_started, :example_started, :example_passed, :example_failed, :example_group_finished
|
11
|
+
|
12
|
+
def initialize output
|
11
13
|
|
12
14
|
config = RoxClient::RSpec.config
|
13
15
|
@client = Client.new config.server, config.client_options
|
@@ -16,38 +18,38 @@ module RoxClient::RSpec
|
|
16
18
|
@groups = []
|
17
19
|
end
|
18
20
|
|
19
|
-
def start
|
21
|
+
def start notification
|
20
22
|
# TODO: measure milliseconds
|
21
23
|
@start_time = Time.now
|
22
24
|
end
|
23
25
|
|
24
|
-
def example_group_started
|
25
|
-
@groups << group
|
26
|
+
def example_group_started group_notification
|
27
|
+
@groups << group_notification.group
|
26
28
|
end
|
27
29
|
|
28
|
-
def example_group_finished
|
30
|
+
def example_group_finished group_notification
|
29
31
|
@groups.pop
|
30
32
|
end
|
31
33
|
|
32
|
-
def example_started
|
34
|
+
def example_started example_notification
|
33
35
|
@current_time = Time.now
|
34
36
|
end
|
35
37
|
|
36
|
-
def example_passed
|
37
|
-
add_result example, true
|
38
|
+
def example_passed example_notification
|
39
|
+
add_result example_notification.example, true
|
38
40
|
end
|
39
41
|
|
40
|
-
def example_failed
|
41
|
-
add_result example, false
|
42
|
+
def example_failed example_notification
|
43
|
+
add_result example_notification.example, false
|
42
44
|
end
|
43
45
|
|
44
|
-
def stop
|
46
|
+
def stop notification
|
45
47
|
end_time = Time.now
|
46
48
|
@test_run.end_time = end_time.to_i * 1000
|
47
49
|
@test_run.duration = ((end_time - @start_time) * 1000).round
|
48
50
|
end
|
49
51
|
|
50
|
-
def
|
52
|
+
def close notification
|
51
53
|
@client.process @test_run
|
52
54
|
end
|
53
55
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
module RoxClient::RSpec
|
3
3
|
|
4
4
|
class TestResult
|
5
|
-
attr_reader :key, :name, :category, :tags, :tickets, :duration, :message
|
5
|
+
attr_reader :key, :name, :category, :tags, :tickets, :data, :duration, :message
|
6
6
|
|
7
7
|
def initialize project, example, groups = [], options = {}
|
8
8
|
|
@@ -12,7 +12,7 @@ module RoxClient::RSpec
|
|
12
12
|
|
13
13
|
@grouped = extract_grouped example, groups
|
14
14
|
|
15
|
-
[ :key, :name, :category, :tags, :tickets ].each do |attr|
|
15
|
+
[ :key, :name, :category, :tags, :tickets, :data ].each do |attr|
|
16
16
|
instance_variable_set "@#{attr}".to_sym, send("extract_#{attr}".to_sym, example, groups)
|
17
17
|
end
|
18
18
|
|
@@ -51,6 +51,7 @@ module RoxClient::RSpec
|
|
51
51
|
h['c'] = @category if stale or (first and @category)
|
52
52
|
h['g'] = @tags if stale or (first and !@tags.empty?)
|
53
53
|
h['t'] = @tickets if stale or (first and !@tickets.empty?)
|
54
|
+
h['a'] = @data if @data # FIXME: cache custom data
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
@@ -107,6 +108,10 @@ module RoxClient::RSpec
|
|
107
108
|
(wrap(@tickets) + groups.collect{ |g| wrap meta(g)[:tickets] } + (wrap meta(example)[:tickets])).flatten.compact.uniq.collect(&:to_s)
|
108
109
|
end
|
109
110
|
|
111
|
+
def extract_data example, groups = []
|
112
|
+
meta(example)[:data]
|
113
|
+
end
|
114
|
+
|
110
115
|
def wrap a
|
111
116
|
a.kind_of?(Array) ? a : [ a ]
|
112
117
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rox-client-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Oulevay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: oj
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: '0.13'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.13'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: paint
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.8
|
61
|
+
version: '0.8'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.8
|
68
|
+
version: '0.8'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rake-version
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ! '>='
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: simplecov
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: fakefs
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ! '>='
|
@@ -151,7 +151,21 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: rspec-its
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec-collection_matchers
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - ! '>='
|
@@ -208,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
222
|
version: '0'
|
209
223
|
requirements: []
|
210
224
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.2.2
|
212
226
|
signing_key:
|
213
227
|
specification_version: 4
|
214
228
|
summary: RSpec extensions to send results to ROX Center.
|