rox-client-rspec 0.3.1 → 0.4.0
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 +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.
|