build_eval 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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDBkZjU0NzI5ODI4NDE2YTA5ZTJjZWZjNWMzZGRlMzM0MzM0YTYzYQ==
4
+ MWJiNTEyNDFmYTUxNmZmMGE3NjRhZWQ2MjVjNWFkMDFiNGUwZGVkYw==
5
5
  data.tar.gz: !binary |-
6
- MjMxMzI4MGVlMjVjYTQzZTIzN2YyNWY2MDI5Nzg4MDg5MDAzOTc4YQ==
6
+ YWYyYTUxYjZlNDM2M2VlNzQ1YmY1NWIxZjdiM2YxOTQ0NmQyNDE3Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODNmMjliMWM2YzMwZGY1OWIzZjRkNmYxMWI4MzJmMjM3N2UyYmVhMWZlZGFh
10
- ODc4ZTdhOWQzMjhkZGYwMGViOWFlMzBiZDJiNjQ3MzdmZjEzYzhhZDJiY2Ji
11
- YjM5NjAwYjYzOGQyMWRlZDliNjc5M2JlNmYwYzQ3YmEwODY5MzA=
9
+ MDI3YTlmMGI0NzI4ZGMwZjYzMjM4NjllYjcyZTBjM2RhYTcxMDA1MDc0MjM4
10
+ ZWFhYjhhMjgxNGU0ZDA0NjkxMzViZTFkMjM2YmJiZGVhNmFlNjJiYjE5YjJm
11
+ MDNlZGYxMDY1YTljODQ5YmQwNGFmYTU1MGQxNmYxNjZkM2ZkYTg=
12
12
  data.tar.gz: !binary |-
13
- NGJlYTg2ZjAxOTMxMjExM2I4OTRkM2UxMGZlYjI4YmQ4ODIwOThhZWE1MGVm
14
- ZWZhZjI3MmUyNzc5M2JmNjk1MmEyZGU2YjQxZjBhODkwODE4ODQ4NTFlZWJk
15
- ZTdiNmE5MGNmMTdjM2U4MzMzMjgzZWI2MTA0YTJlYjBkNjFiNmM=
13
+ Y2JmMjJhODM4MzJmNzc5OTE0M2M1NjUwMmIyYjBhNWI0N2Y5NTFlZmE1MjU1
14
+ NTFkM2FmZWM0ODViMTA0ZWE0OThhMmE1MjE2Y2MwZTE4OGY2ZmI1ZDhhODdl
15
+ MzgxOTM1ODJlYmQ5Yjc1YjYwNDJjMTlhMzAyZjQyYzIxZmVlYjc=
@@ -0,0 +1,38 @@
1
+ module BuildEval
2
+ module Travis
3
+
4
+ class SessionFactory
5
+
6
+ class << self
7
+
8
+ def create(github_token)
9
+ find_session(github_token) || create_session(github_token)
10
+ end
11
+
12
+ def clear_cache
13
+ @sessions = {}
14
+ end
15
+
16
+ private
17
+
18
+ def find_session(github_token)
19
+ sessions[github_token]
20
+ end
21
+
22
+ def create_session(github_token)
23
+ travis_uri = github_token ? ::Travis::Client::PRO_URI : ::Travis::Client::ORG_URI
24
+ sessions[github_token] = ::Travis::Client::Session.new(uri: travis_uri, ssl: {}).tap do |session|
25
+ session.github_auth(github_token) if github_token
26
+ end
27
+ end
28
+
29
+ def sessions
30
+ @sessions ||= {}
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
@@ -1,25 +1,13 @@
1
1
  module BuildEval
2
2
 
3
- class Travis
4
-
5
- class << self
6
-
7
- def last_build_status(args)
8
- repository = create_session(args).repo(args[:repository_path])
9
- repository.recent_builds.find(&:finished?).passed? ? "Success" : "Failure"
10
- rescue ::Travis::Client::Error
11
- "Unknown"
12
- end
13
-
14
- private
15
-
16
- def create_session(args)
17
- travis_uri = args[:github_token] ? ::Travis::Client::PRO_URI : ::Travis::Client::ORG_URI
18
- ::Travis::Client::Session.new(uri: travis_uri, ssl: {}).tap do |session|
19
- session.github_auth(args[:github_token]) if args[:github_token]
20
- end
21
- end
22
-
3
+ module Travis
4
+
5
+ def self.last_build_status(args)
6
+ session = BuildEval::Travis::SessionFactory.create(args[:github_token])
7
+ repository = session.repo(args[:repository_path])
8
+ repository.recent_builds.find(&:finished?).passed? ? "Success" : "Failure"
9
+ rescue ::Travis::Client::Error
10
+ "Unknown"
23
11
  end
24
12
 
25
13
  end
@@ -1,3 +1,3 @@
1
1
  module BuildEval
2
- VERSION = "0.0.12".freeze
2
+ VERSION = "0.0.13".freeze
3
3
  end
data/lib/build_eval.rb CHANGED
@@ -6,6 +6,7 @@ require 'travis/client/session'
6
6
 
7
7
  require_relative 'build_eval/error'
8
8
  require_relative 'build_eval/http'
9
+ require_relative 'build_eval/travis/session_factory'
9
10
  require_relative 'build_eval/travis'
10
11
  require_relative 'build_eval/result/status'
11
12
  require_relative 'build_eval/result/build_result'
@@ -0,0 +1,91 @@
1
+ describe BuildEval::Travis::SessionFactory do
2
+
3
+ describe "::create" do
4
+
5
+ let(:github_token) { nil }
6
+ let(:travis_session) { instance_double(::Travis::Client::Session) }
7
+
8
+ subject { described_class.create(github_token) }
9
+
10
+ before(:example) { allow(::Travis::Client::Session).to receive(:new).and_return(travis_session) }
11
+ after(:example) { described_class.clear_cache }
12
+
13
+ shared_examples_for "a call creating a new session" do
14
+
15
+ it "creates a Travis session with empty SSL settings to avoid using local security certificates" do
16
+ expect(::Travis::Client::Session).to receive(:new).with(hash_including(ssl: {}))
17
+
18
+ subject
19
+ end
20
+
21
+ it "returns the created session" do
22
+ expect(subject).to eql(travis_session)
23
+ end
24
+
25
+ end
26
+
27
+ context "when a session for the GitHub token has not been retrieved previously" do
28
+
29
+ context "and a non-nil GitHub token is provided" do
30
+
31
+ let(:github_token) { "SOMEGITHUBAUTHTOKEN" }
32
+
33
+ before(:example) { allow(travis_session).to receive(:github_auth) }
34
+
35
+ it_behaves_like "a call creating a new session"
36
+
37
+ it "creates a Travis session connecting to the Travis Pro site" do
38
+ expect(::Travis::Client::Session).to receive(:new).with(hash_including(uri: ::Travis::Client::PRO_URI))
39
+
40
+ subject
41
+ end
42
+
43
+ it "logs-in using the provided GitHub token via the session" do
44
+ expect(travis_session).to receive(:github_auth).with(github_token)
45
+
46
+ subject
47
+ end
48
+
49
+ end
50
+
51
+ context "and a nil GitHub token is provided" do
52
+
53
+ let(:github_token) { nil }
54
+
55
+ it_behaves_like "a call creating a new session"
56
+
57
+ it "creates a Travis session connecting to the Travis Org site" do
58
+ expect(::Travis::Client::Session).to receive(:new).with(hash_including(uri: ::Travis::Client::ORG_URI))
59
+
60
+ subject
61
+ end
62
+
63
+ it "does not log-in" do
64
+ expect(travis_session).to_not receive(:github_auth)
65
+
66
+ subject
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
73
+ context "when a session for the GitHub token has been retrieved previously" do
74
+
75
+ before(:example) { subject }
76
+
77
+ it "does not create a new session" do
78
+ expect(::Travis::Client::Session).to_not receive(:new)
79
+
80
+ subject
81
+ end
82
+
83
+ it "returns the previously retrieved session" do
84
+ expect(subject).to eql(travis_session)
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ end
@@ -18,68 +18,37 @@ describe BuildEval::Travis do
18
18
  subject { described_class.last_build_status({ repository_path: repository_path }.merge(optional_args)) }
19
19
 
20
20
  before(:example) do
21
- allow(::Travis::Client::Session).to receive(:new).and_return(travis_session)
21
+ allow(BuildEval::Travis::SessionFactory).to receive(:create).and_return(travis_session)
22
22
  allow(last_finished_build).to receive(:passed?).and_return(last_finished_build_passed_flag)
23
23
  end
24
24
 
25
- context "when a GitHub token is provided" do
25
+ context "when a Github authentication token is provided" do
26
26
 
27
27
  let(:github_token) { "SOMEGITHUBAUTHTOKEN" }
28
28
  let(:optional_args) { { github_token: github_token } }
29
29
 
30
- before(:example) { allow(travis_session).to receive(:github_auth) }
31
-
32
- it "creates a Travis session connecting to the Travis Pro site" do
33
- expect(::Travis::Client::Session).to receive(:new).with(hash_including(uri: ::Travis::Client::PRO_URI))
30
+ it "creates a Travis session using the token" do
31
+ expect(BuildEval::Travis::SessionFactory).to receive(:create).with(github_token)
34
32
 
35
33
  subject
36
34
  end
37
35
 
38
- it "logs-in using the provided GitHub token via the session" do
39
- expect(travis_session).to receive(:github_auth).with(github_token)
40
-
41
- subject
42
- end
43
-
44
- context "when an error occurs on log-in" do
45
-
46
- before(:example) do
47
- allow(travis_session).to receive(:github_auth).and_raise(::Travis::Client::Error.new("Forced error"))
48
- end
49
-
50
- it "returns 'Unknown'" do
51
- expect(subject).to eql("Unknown")
52
- end
53
-
54
- end
55
-
56
36
  end
57
37
 
58
- context "when no GitHub token is provided" do
38
+ context "when a Github authentication token is not provided" do
59
39
 
60
40
  let(:optional_args) { {} }
61
41
 
62
- it "creates a Travis session connecting to the Travis Org site" do
63
- expect(::Travis::Client::Session).to receive(:new).with(hash_including(uri: ::Travis::Client::ORG_URI))
64
-
65
- subject
66
- end
67
-
68
- it "does not log-in" do
69
- expect(travis_session).to_not receive(:github_auth)
42
+ it "creates a Travis session for a nil token" do
43
+ expect(BuildEval::Travis::SessionFactory).to receive(:create).with(nil)
70
44
 
71
45
  subject
72
46
  end
73
47
 
74
48
  end
75
49
 
76
- it "creates a Travis session with empty SSL settings to avoid using local security certificates" do
77
- expect(::Travis::Client::Session).to receive(:new).with(hash_including(ssl: {}))
78
50
 
79
- subject
80
- end
81
-
82
- it "retrieves the Travis repository for the provided repository path" do
51
+ it "retrieves the Travis repository for the provided repository path from the session" do
83
52
  expect(travis_session).to receive(:repo).with(repository_path)
84
53
 
85
54
  subject
@@ -117,7 +86,21 @@ describe BuildEval::Travis do
117
86
 
118
87
  end
119
88
 
120
- context "when an Travis Client error occurs" do
89
+ context "when an error occurs obtaining a session" do
90
+
91
+ before(:example) do
92
+ allow(BuildEval::Travis::SessionFactory).to(
93
+ receive(:create).and_raise(::Travis::Client::Error.new("Forced error"))
94
+ )
95
+ end
96
+
97
+ it "returns 'Unknown'" do
98
+ expect(subject).to eql("Unknown")
99
+ end
100
+
101
+ end
102
+
103
+ context "when an error occurs retrieving the recent builds" do
121
104
 
122
105
  before(:example) do
123
106
  allow(travis_repository).to receive(:recent_builds).and_raise(::Travis::Client::Error.new("Forced error"))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build_eval
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ueckerman
@@ -163,6 +163,7 @@ files:
163
163
  - ./lib/build_eval/server/travis.rb
164
164
  - ./lib/build_eval/server/travis_pro.rb
165
165
  - ./lib/build_eval/travis.rb
166
+ - ./lib/build_eval/travis/session_factory.rb
166
167
  - ./lib/build_eval/version.rb
167
168
  - ./spec/lib/build_eval/error_spec.rb
168
169
  - ./spec/lib/build_eval/http_shared_context.rb
@@ -184,6 +185,7 @@ files:
184
185
  - ./spec/lib/build_eval/server/team_city_spec.rb
185
186
  - ./spec/lib/build_eval/server/travis_pro_spec.rb
186
187
  - ./spec/lib/build_eval/server/travis_spec.rb
188
+ - ./spec/lib/build_eval/travis/session_factory_spec.rb
187
189
  - ./spec/lib/build_eval/travis_spec.rb
188
190
  - ./spec/lib/build_eval_smoke_spec.rb
189
191
  - ./spec/lib/build_eval_spec.rb
@@ -233,6 +235,7 @@ test_files:
233
235
  - ./spec/lib/build_eval/server/team_city_spec.rb
234
236
  - ./spec/lib/build_eval/server/travis_pro_spec.rb
235
237
  - ./spec/lib/build_eval/server/travis_spec.rb
238
+ - ./spec/lib/build_eval/travis/session_factory_spec.rb
236
239
  - ./spec/lib/build_eval/travis_spec.rb
237
240
  - ./spec/lib/build_eval_smoke_spec.rb
238
241
  - ./spec/lib/build_eval_spec.rb