build_eval 0.0.10 → 0.0.11

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
- Y2RmM2FlM2IyNDIwNGI2YmRmZjM0ODkyOTU1Y2MxNzBiZmEyNjY4MQ==
4
+ MTdkM2EyNDlhMjZkNzZmNTNhOTg0YmMxNzVkZmEzMjY1YzQzZmU4NA==
5
5
  data.tar.gz: !binary |-
6
- OTRkNzVhNjY0Njg5Y2NhZWMwN2Q2Y2NjMzYxYmEyZDZlODQxNTNiNg==
6
+ M2M2NmIwYjQ1NjNkYmE4YTZjZDYyYTBkN2I2NzIzNjNhNTU5ZDE4Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2FiMDJhZjdlYTA0Yzg0NGU2NDMyMTJhMjk4MTYzYzBhNTY5ZDA2OTAyODlm
10
- YmFlMWRmOWJiZDE2Y2VkOWEyODA4MWFkOTM4NmI0ZjcwZDNhMzE5MzhmNmI2
11
- ZTFlNjYwMzlhOWE1ODBjMGM4ZTJiMGIwNTk2YWQ2Y2U1NjU4NDY=
9
+ NWVhYWUzOTNhMmEyY2Y2ZjNkNWVkYmE3ZGQ4Nzk0ZTVlZTM5MjUwN2UyNmMw
10
+ ZmY4YjY1MjJkNjA5ZjYxODUyZjE3NzJmYzk0Y2VmZTExYTg4MDFhOWNjNjRh
11
+ ZmY3NmVjY2UyNWIwMmVkMjk1M2Y0YzU2NTc0YjA2ZjQ1NDVhOWQ=
12
12
  data.tar.gz: !binary |-
13
- NDZiYjI2Yzg4OWRhNWE2YmM0OGMzMjE3YmE2NDQ1MTZhYzQwNDY0ZjQwZGNi
14
- ODBmNmFiOGI3YTc2NjY5ZDg3NzY0YTM0ZjRmZmI2ZGU2Y2Q0MWY4NDlhOWIw
15
- NzI1MWQ3ZjhiMzg3YzQ5OWYwMDc5NWI4NTkxODg3ODYxMWEzMWM=
13
+ ZTkzNzE4M2UxN2U0ODJmZmQ1MTFlNmI4YWJjYjgzYmRlMGQ1Y2Q3ZTBhNWVk
14
+ ODY3ZjJhODI2Y2U5OGI0OTIyZjI3OWNhM2Y5NmM3OGZhNzdkMTQzZTk4YTcy
15
+ ZmIwNWM4YzExYWIxZTVlMDQzZDY1MTA4MzU5NWYyNmQ4YzcxOTg=
@@ -5,14 +5,13 @@ module BuildEval
5
5
 
6
6
  def initialize(args)
7
7
  @username = args[:username]
8
- @travis = BuildEval::Travis.new(::Travis)
9
8
  end
10
9
 
11
10
  def build_result(name)
12
11
  build_path = "#{@username}/#{name}"
13
12
  BuildEval::Result::BuildResult.create(
14
13
  build_name: build_path,
15
- status_name: @travis.last_build_status_for(build_path)
14
+ status_name: BuildEval::Travis.last_build_status(build_path: build_path)
16
15
  )
17
16
  end
18
17
 
@@ -6,25 +6,20 @@ module BuildEval
6
6
  def initialize(args)
7
7
  @username = args[:username]
8
8
  @github_token = args[:github_token]
9
- @travis = BuildEval::Travis.new(::Travis::Pro)
10
9
  end
11
10
 
12
11
  def build_result(name)
13
12
  build_path = "#{@username}/#{name}"
14
- BuildEval::Result::BuildResult.create(build_name: build_path, status_name: last_status_name(build_path))
13
+ BuildEval::Result::BuildResult.create(
14
+ build_name: build_path,
15
+ status_name: BuildEval::Travis.last_build_status(github_token: @github_token, build_path: build_path)
16
+ )
15
17
  end
16
18
 
17
19
  def to_s
18
20
  "Travis CI Pro #{@username}"
19
21
  end
20
22
 
21
- private
22
-
23
- def last_status_name(build_path)
24
- @travis.login(@github_token)
25
- @travis.last_build_status_for(build_path)
26
- end
27
-
28
23
  end
29
24
 
30
25
  end
@@ -2,18 +2,26 @@ module BuildEval
2
2
 
3
3
  class Travis
4
4
 
5
- def initialize(travis_module)
6
- @travis_module = travis_module
7
- end
5
+ class << self
8
6
 
9
- def login(auth_token)
10
- @travis_module.github_auth(auth_token)
11
- end
7
+ def last_build_status(args)
8
+ repository = travis_module_for(args)::Repository.find(args[:build_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 travis_module_for(args)
17
+ travis_module = ::Travis
18
+ if args[:github_token]
19
+ travis_module = ::Travis::Pro
20
+ travis_module.github_auth(args[:github_token])
21
+ end
22
+ travis_module
23
+ end
12
24
 
13
- def last_build_status_for(build_path)
14
- @travis_module::Repository.find(build_path).recent_builds.find(&:finished?).passed? ? "Success" : "Failure"
15
- rescue ::Travis::Client::Error
16
- "Unknown"
17
25
  end
18
26
 
19
27
  end
@@ -1,3 +1,3 @@
1
1
  module BuildEval
2
- VERSION = "0.0.10".freeze
2
+ VERSION = "0.0.11".freeze
3
3
  end
@@ -16,35 +16,32 @@ describe BuildEval::Server::TravisPro do
16
16
 
17
17
  let(:build_name) { "some_build_name" }
18
18
  let(:last_build_status) { "Unknown" }
19
- let(:travis) { instance_double(BuildEval::Travis, login: nil, last_build_status_for: last_build_status) }
20
19
  let(:build_result) { instance_double(BuildEval::Result::BuildResult) }
21
20
 
22
21
  subject { travis_pro_server.build_result(build_name) }
23
22
 
24
23
  before(:example) do
25
- allow(BuildEval::Travis).to receive(:new).and_return(travis)
24
+ allow(BuildEval::Travis).to receive(:last_build_status).and_return(last_build_status)
26
25
  allow(BuildEval::Result::BuildResult).to receive(:create).and_return(build_result)
27
26
  end
28
27
 
29
- it "creates a Travis API wrapping the Pro module" do
30
- expect(BuildEval::Travis).to receive(:new).with(::Travis::Pro)
31
-
32
- subject
33
- end
34
-
35
- it "logs-in to the Travis API using the provided GitHub token" do
36
- expect(travis).to receive(:login).with(github_token)
28
+ it "retrieves the last build status from Travis using the provided GitHub token" do
29
+ expect(BuildEval::Travis).to(
30
+ receive(:last_build_status).with(hash_including(github_token: github_token))
31
+ )
37
32
 
38
33
  subject
39
34
  end
40
35
 
41
- it "retrieves the last build status for the GitHub repository" do
42
- expect(travis).to receive(:last_build_status_for).with("#{username}/#{build_name}")
36
+ it "retrieves the last build status from Travis for the users build" do
37
+ expect(BuildEval::Travis).to(
38
+ receive(:last_build_status).with(hash_including(build_path: "#{username}/#{build_name}"))
39
+ )
43
40
 
44
41
  subject
45
42
  end
46
43
 
47
- it "creates a build result whose build name is the path to the GitHub repository" do
44
+ it "creates a build result whose build name is the path to users build" do
48
45
  expect(BuildEval::Result::BuildResult).to(
49
46
  receive(:create).with(hash_including(build_name: "#{username}/#{build_name}"))
50
47
  )
@@ -10,29 +10,24 @@ describe BuildEval::Server::Travis do
10
10
 
11
11
  let(:build_name) { "some_build_name" }
12
12
  let(:last_build_status) { "Failure" }
13
- let(:travis) { instance_double(BuildEval::Travis, last_build_status_for: last_build_status) }
14
13
  let(:build_result) { instance_double(BuildEval::Result::BuildResult) }
15
14
 
16
15
  subject { travis_server.build_result(build_name) }
17
16
 
18
17
  before(:example) do
19
- allow(BuildEval::Travis).to receive(:new).and_return(travis)
18
+ allow(BuildEval::Travis).to receive(:last_build_status).and_return(last_build_status)
20
19
  allow(BuildEval::Result::BuildResult).to receive(:create).and_return(build_result)
21
20
  end
22
21
 
23
- it "creates a Travis API wrapping the Standard module" do
24
- expect(BuildEval::Travis).to receive(:new).with(::Travis)
25
-
26
- subject
27
- end
28
-
29
- it "retrieves the last build status for the GitHub repository" do
30
- expect(travis).to receive(:last_build_status_for).with("#{username}/#{build_name}")
22
+ it "retrieves the last build status from Travis for the users build" do
23
+ expect(BuildEval::Travis).to(
24
+ receive(:last_build_status).with(hash_including(build_path: "#{username}/#{build_name}"))
25
+ )
31
26
 
32
27
  subject
33
28
  end
34
29
 
35
- it "creates a build result whose build name is the path to the GitHub repository" do
30
+ it "creates a build result whose build name is the path to users build" do
36
31
  expect(BuildEval::Result::BuildResult).to(
37
32
  receive(:create).with(hash_including(build_name: "#{username}/#{build_name}"))
38
33
  )
@@ -1,7 +1,50 @@
1
1
  shared_context "stubbed Travis API interactions" do
2
2
 
3
- let(:travis_namespace) { instance_double(::Travis::Client::Namespace) }
3
+ module StubTravisBuild
4
4
 
5
- before(:each) { allow(::Travis::Client::Namespace).to receive(:new).and_return(travis_namespace) }
5
+ def finished?
6
+ # Intentionally blank
7
+ end
8
+
9
+ def passed?
10
+ # Intentionally blank
11
+ end
12
+
13
+ end
14
+
15
+ module StubTravisRepository
16
+
17
+ def recent_builds
18
+ # Intentionally blank
19
+ end
20
+
21
+ end
22
+
23
+ module StubTravisPro
24
+
25
+ Repository = StubTravisRepository
26
+
27
+ def self.github_auth(auth_token)
28
+ # Intentionally blank
29
+ end
30
+
31
+ end
32
+
33
+ module StubTravis
34
+
35
+ Repository = StubTravisRepository
36
+ Pro = StubTravisPro
37
+
38
+ module Client
39
+ Repository = StubTravisRepository
40
+ Build = StubTravisBuild
41
+ Error = ::StandardError
42
+ end
43
+
44
+ end
45
+
46
+ before(:context) do
47
+ ::Travis = StubTravis
48
+ end
6
49
 
7
50
  end
@@ -1,27 +1,10 @@
1
1
  describe BuildEval::Travis do
2
2
  include_context "stubbed Travis API interactions"
3
3
 
4
- let(:travis_module) { ::Travis }
4
+ describe "::last_build_status" do
5
5
 
6
- let(:travis) { described_class.new(travis_module) }
7
-
8
- describe "#login" do
9
-
10
- let(:github_token) { "SOMEGITHUBTOKEN" }
11
-
12
- subject { travis.login(github_token) }
13
-
14
- it "logs-in to Travis using the GitHub Auth token provided" do
15
- expect(travis_module).to receive(:github_auth).with(github_token)
16
-
17
- subject
18
- end
19
-
20
- end
21
-
22
- describe "#last_build_status_for" do
23
-
24
- let(:build_path) { "some/build_path" }
6
+ let(:build_path) { "some/build_path" }
7
+ let(:optional_args) { {} }
25
8
 
26
9
  let(:recent_builds) do
27
10
  (1..3).map { |i| instance_double(::Travis::Client::Build, finished?: i > 1) }
@@ -32,20 +15,63 @@ describe BuildEval::Travis do
32
15
  instance_double(::Travis::Client::Repository, recent_builds: recent_builds)
33
16
  end
34
17
 
35
- subject { travis.last_build_status_for(build_path) }
18
+ subject { described_class.last_build_status({ build_path: build_path }.merge(optional_args)) }
36
19
 
37
20
  before(:example) do
38
- allow(travis_module::Repository).to receive(:find).and_return(travis_repository)
21
+ allow(::Travis::Repository).to receive(:find).and_return(travis_repository)
39
22
  allow(last_finished_build).to receive(:passed?).and_return(last_finished_build_passed_flag)
40
23
  end
41
24
 
42
- it "retrieves the Travis Repository for the provided build path" do
43
- expect(travis_module::Repository).to receive(:find).with(build_path)
25
+ context "when a GitHub token is provided" do
26
+
27
+ let(:github_token) { "SOMEGITHUBAUTHTOKEN" }
28
+ let(:optional_args) { { github_token: github_token } }
29
+
30
+ it "logs-in to the Travis Pro API with the provided GitHub token" do
31
+ expect(::Travis::Pro).to receive(:github_auth).with(github_token)
32
+
33
+ subject
34
+ end
35
+
36
+ it "uses the Travis Pro modules Repository" do
37
+ expect(::Travis::Pro::Repository).to receive(:find)
38
+
39
+ subject
40
+ end
41
+
42
+ context "when a Travis Client error occurs on log-in" do
43
+
44
+ before(:example) do
45
+ allow(::Travis::Pro).to receive(:github_auth).and_raise(::Travis::Client::Error.new("Forced error"))
46
+ end
47
+
48
+ it "returns 'Unknown'" do
49
+ expect(subject).to eql("Unknown")
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ context "when no GitHub token is provided" do
57
+
58
+ let(:optional_args) { {} }
59
+
60
+ it "uses the Travis modules Repository" do
61
+ expect(::Travis::Repository).to receive(:find)
62
+
63
+ subject
64
+ end
65
+
66
+ end
67
+
68
+ it "retrieves the repository for the provided build path" do
69
+ expect(::Travis::Repository).to receive(:find).with(build_path)
44
70
 
45
71
  subject
46
72
  end
47
73
 
48
- it "retrieves the recent builds from the Travis Repository" do
74
+ it "retrieves the recent builds from the repository" do
49
75
  expect(travis_repository).to receive(:recent_builds)
50
76
 
51
77
  subject
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.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ueckerman