cucumber-pro 0.0.12 → 0.0.13
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/Rakefile +1 -1
- data/features/security.feature +0 -11
- data/features/step_definitions/steps.rb +9 -3
- data/features/support/fake_results_service.rb +23 -17
- data/lib/cucumber/pro.rb +12 -6
- data/lib/cucumber/pro/errors.rb +0 -6
- data/lib/cucumber/pro/formatter.rb +8 -9
- data/lib/cucumber/pro/version +1 -1
- data/lib/cucumber/pro/web_socket/session.rb +8 -1
- data/spec/cucumber/pro/web_socket/worker_spec.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35dcec69d5a9599d4d30a57ba1edc2d3a7a0d636
|
4
|
+
data.tar.gz: b0b5af3ce80e5f81180ecf337a35ababbd919933
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed859c503bdd207631bc765d19c3432694c0434bc75637428bf8f8b5baf0f7c957411f59054db35459b89108f90e7c0605b1cc4edb15938c942ab0570b2d6c93
|
7
|
+
data.tar.gz: 4f5b098807e4539ba050640fbf354e28b0d1fa63f326faa1471e213e5e5668c4f9c4207f38e8e3730e7afad22137c191687cb21f94584fe44a6d91c6eb442d40
|
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ end
|
|
13
13
|
require 'cucumber/rake/task'
|
14
14
|
Cucumber::Rake::Task.new do |t|
|
15
15
|
t.cucumber_opts = ""
|
16
|
-
t.cucumber_opts = "--format Cucumber::Pro --out cucumber-pro.log"
|
16
|
+
t.cucumber_opts = "--format Cucumber::Pro --out cucumber-pro.log"
|
17
17
|
t.cucumber_opts << "--format pretty"
|
18
18
|
end
|
19
19
|
|
data/features/security.feature
CHANGED
@@ -14,14 +14,3 @@ Feature: Security
|
|
14
14
|
| CUCUMBER_PRO_TOKEN | invalid-token |
|
15
15
|
And I run `cucumber -f Cucumber::Pro -o /dev/null -f pretty`
|
16
16
|
And the stderr should contain "Access denied"
|
17
|
-
|
18
|
-
Scenario: No access token
|
19
|
-
Given a git repo
|
20
|
-
And a feature "features/test.feature" with:
|
21
|
-
"""
|
22
|
-
Feature:
|
23
|
-
Scenario:
|
24
|
-
Given passing
|
25
|
-
"""
|
26
|
-
When I run `cucumber -f Cucumber::Pro`
|
27
|
-
And the stderr should contain "Missing access token"
|
@@ -15,7 +15,13 @@ Given(/^a git repo$/) do
|
|
15
15
|
run_simple "git config user.name \"Test user\""
|
16
16
|
run_simple "git commit --allow-empty -m 'Initial commit'"
|
17
17
|
run_simple "git remote add origin #{repo_url}"
|
18
|
-
|
18
|
+
# TODO: this is an experiment to fix flickering build on CI. May not be required.
|
19
|
+
# wait for the git repo to be created before continuing
|
20
|
+
eventually do
|
21
|
+
run "git config --get remote.origin.url" do |process|
|
22
|
+
expect(process.output.strip).to eq repo_url
|
23
|
+
end
|
24
|
+
end
|
19
25
|
end
|
20
26
|
|
21
27
|
Given(/^a feature "(.*?)" with:$/) do |path, content|
|
@@ -24,9 +30,9 @@ end
|
|
24
30
|
|
25
31
|
Then(/^the results service should receive a header$/) do
|
26
32
|
eventually do
|
27
|
-
results_service.messages.length.
|
33
|
+
expect(results_service.messages.length).to be > 0
|
28
34
|
end
|
29
|
-
results_service.messages.first['repo_url'].
|
35
|
+
expect(results_service.messages.first['repo_url']).to eq repo_url
|
30
36
|
end
|
31
37
|
|
32
38
|
Then(/^the results service should receive these ([\w\-]+) results:$/) do |type, results|
|
@@ -63,28 +63,34 @@ module FakeResultsService
|
|
63
63
|
private :logger
|
64
64
|
end
|
65
65
|
|
66
|
+
run_em_server = -> {
|
67
|
+
app = SocketApp.new(FakeResultsService.logger)
|
68
|
+
events = Puma::Events.new(StringIO.new, StringIO.new)
|
69
|
+
binder = Puma::Binder.new(events)
|
70
|
+
binder.parse(["tcp://0.0.0.0:#{PORT}"], app)
|
71
|
+
server = Puma::Server.new(app, events)
|
72
|
+
server.binder = binder
|
73
|
+
server.run
|
74
|
+
trap("INT") do
|
75
|
+
puts "Stopping..."
|
76
|
+
server.stop(true)
|
77
|
+
EM.stop_event_loop
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
at_exit do
|
81
|
+
server.stop(true)
|
82
|
+
end
|
83
|
+
}
|
84
|
+
|
66
85
|
require 'puma'
|
67
86
|
require 'rack'
|
68
87
|
require 'eventmachine'
|
88
|
+
require 'anticipate'
|
89
|
+
extend Anticipate
|
69
90
|
$em = Thread.new do
|
70
91
|
begin
|
71
|
-
|
72
|
-
|
73
|
-
events = Puma::Events.new(StringIO.new, StringIO.new)
|
74
|
-
binder = Puma::Binder.new(events)
|
75
|
-
binder.parse(["tcp://0.0.0.0:#{PORT}"], app)
|
76
|
-
server = Puma::Server.new(app, events)
|
77
|
-
server.binder = binder
|
78
|
-
server.run
|
79
|
-
trap("INT") do
|
80
|
-
puts "Stopping..."
|
81
|
-
server.stop(true)
|
82
|
-
EM.stop_event_loop
|
83
|
-
exit
|
84
|
-
end
|
85
|
-
at_exit do
|
86
|
-
server.stop(true)
|
87
|
-
end
|
92
|
+
failing_after(3).tries do
|
93
|
+
EM.run &run_em_server
|
88
94
|
end
|
89
95
|
rescue => exception
|
90
96
|
logger.fatal(exception)
|
data/lib/cucumber/pro.rb
CHANGED
@@ -5,12 +5,20 @@ require 'cucumber/pro/errors'
|
|
5
5
|
|
6
6
|
module Cucumber
|
7
7
|
module Pro
|
8
|
-
|
9
8
|
class << self
|
10
9
|
def new(runtime, output, options)
|
11
10
|
create_logger(output)
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
working_copy = Scm::WorkingCopy.detect
|
13
|
+
|
14
|
+
if token
|
15
|
+
working_copy.check_clean
|
16
|
+
session = WebSocket::Session.new(url, logger, timeout: config.timeout)
|
17
|
+
else
|
18
|
+
session = WebSocket::NullSession.new
|
19
|
+
end
|
20
|
+
|
21
|
+
Formatter.new(session, working_copy)
|
14
22
|
end
|
15
23
|
|
16
24
|
def configure
|
@@ -35,9 +43,7 @@ module Cucumber
|
|
35
43
|
end
|
36
44
|
|
37
45
|
def token
|
38
|
-
|
39
|
-
raise(Error::MissingToken.new) if result.empty?
|
40
|
-
result
|
46
|
+
config.token
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
data/lib/cucumber/pro/errors.rb
CHANGED
@@ -8,12 +8,6 @@ module Cucumber
|
|
8
8
|
end
|
9
9
|
}
|
10
10
|
|
11
|
-
MissingToken = Class.new(StandardError) {
|
12
|
-
def initialize
|
13
|
-
super "Missing access token. Please visit https://app.cucumber.pro/my/profile for instructions."
|
14
|
-
end
|
15
|
-
}
|
16
|
-
|
17
11
|
Timeout = Class.new(StandardError) {
|
18
12
|
def initialize
|
19
13
|
super "Timed out waiting for a reply from the Cucumber Pro server."
|
@@ -6,8 +6,9 @@ module Cucumber
|
|
6
6
|
module Pro
|
7
7
|
|
8
8
|
class Formatter
|
9
|
-
def initialize(session)
|
9
|
+
def initialize(session, working_copy)
|
10
10
|
@session = session
|
11
|
+
@working_copy = working_copy
|
11
12
|
send_header
|
12
13
|
end
|
13
14
|
|
@@ -53,19 +54,17 @@ module Cucumber
|
|
53
54
|
private
|
54
55
|
|
55
56
|
def send_header
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
branch: working_copy.branch,
|
61
|
-
rev: working_copy.rev,
|
57
|
+
@session.send_message({
|
58
|
+
repo_url: @working_copy.repo_url,
|
59
|
+
branch: @working_copy.branch,
|
60
|
+
rev: @working_copy.rev,
|
62
61
|
group: get_run_id,
|
63
62
|
info: Info.new.to_h
|
64
63
|
})
|
65
64
|
end
|
66
65
|
|
67
66
|
def send_step_result(path, line, status)
|
68
|
-
@session.
|
67
|
+
@session.send_message({
|
69
68
|
path: path,
|
70
69
|
location: line.to_i,
|
71
70
|
mime_type: 'application/vnd.cucumber.test-step-result+json',
|
@@ -74,7 +73,7 @@ module Cucumber
|
|
74
73
|
end
|
75
74
|
|
76
75
|
def send_test_case_result(path, line, status)
|
77
|
-
@session.
|
76
|
+
@session.send_message({
|
78
77
|
path: path,
|
79
78
|
location: line.to_i,
|
80
79
|
mime_type: 'application/vnd.cucumber-pro.test-case-result+json',
|
data/lib/cucumber/pro/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.13
|
@@ -6,6 +6,13 @@ require 'cucumber/pro/errors'
|
|
6
6
|
module Cucumber
|
7
7
|
module Pro
|
8
8
|
module WebSocket
|
9
|
+
class NullSession
|
10
|
+
def send_message(message)
|
11
|
+
end
|
12
|
+
|
13
|
+
def close
|
14
|
+
end
|
15
|
+
end
|
9
16
|
|
10
17
|
class Session
|
11
18
|
|
@@ -23,7 +30,7 @@ module Cucumber
|
|
23
30
|
@socket = Worker.new(create_socket, logger, self, options)
|
24
31
|
end
|
25
32
|
|
26
|
-
def
|
33
|
+
def send_message(message)
|
27
34
|
logger.debug [:session, :send, message]
|
28
35
|
socket.send(message.to_json)
|
29
36
|
self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wynne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faye-websocket
|
@@ -191,7 +191,7 @@ rubyforge_project:
|
|
191
191
|
rubygems_version: 2.0.14
|
192
192
|
signing_key:
|
193
193
|
specification_version: 4
|
194
|
-
summary: cucumber-pro-0.0.
|
194
|
+
summary: cucumber-pro-0.0.13
|
195
195
|
test_files:
|
196
196
|
- features/publish_results.feature
|
197
197
|
- features/security.feature
|