build_eval 0.0.4 → 0.0.5
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/lib/build_eval/error.rb +0 -4
- data/lib/build_eval/http.rb +1 -5
- data/lib/build_eval/monitor/base.rb +2 -6
- data/lib/build_eval/monitor/composite.rb +0 -4
- data/lib/build_eval/monitor/server.rb +0 -3
- data/lib/build_eval/result/build_result.rb +2 -8
- data/lib/build_eval/result/composite_result.rb +0 -4
- data/lib/build_eval/result/server_result.rb +0 -4
- data/lib/build_eval/result/status.rb +9 -17
- data/lib/build_eval/server/cruise_control_response.rb +2 -6
- data/lib/build_eval/server/decorator.rb +3 -9
- data/lib/build_eval/server/invalid_selector_error.rb +0 -4
- data/lib/build_eval/server/jenkins.rb +0 -4
- data/lib/build_eval/server/team_city.rb +2 -6
- data/lib/build_eval/server/travis_com.rb +23 -0
- data/lib/build_eval/server/travis_org.rb +22 -0
- data/lib/build_eval/version.rb +1 -1
- data/lib/build_eval.rb +7 -11
- data/spec/lib/build_eval/error_spec.rb +4 -8
- data/spec/lib/build_eval/http_shared_context.rb +2 -4
- data/spec/lib/build_eval/http_spec.rb +30 -50
- data/spec/lib/build_eval/monitor/base_spec.rb +3 -7
- data/spec/lib/build_eval/monitor/composite_spec.rb +5 -9
- data/spec/lib/build_eval/monitor/server_spec.rb +6 -10
- data/spec/lib/build_eval/result/build_result_spec.rb +19 -30
- data/spec/lib/build_eval/result/composite_result_spec.rb +10 -18
- data/spec/lib/build_eval/result/server_result_spec.rb +14 -26
- data/spec/lib/build_eval/result/status_spec.rb +35 -73
- data/spec/lib/build_eval/server/cruise_control_response_spec.rb +33 -41
- data/spec/lib/build_eval/server/decorator_spec.rb +17 -31
- data/spec/lib/build_eval/server/invalid_selector_error_spec.rb +7 -11
- data/spec/lib/build_eval/server/jenkins_integration_spec.rb +10 -15
- data/spec/lib/build_eval/server/jenkins_spec.rb +17 -24
- data/spec/lib/build_eval/server/server_shared_examples.rb +3 -7
- data/spec/lib/build_eval/server/team_city_integration_spec.rb +18 -27
- data/spec/lib/build_eval/server/team_city_spec.rb +13 -20
- data/spec/lib/build_eval/server/travis_com_spec.rb +91 -0
- data/spec/lib/build_eval/server/travis_org_spec.rb +71 -0
- data/spec/lib/build_eval_smoke_spec.rb +11 -10
- data/spec/lib/build_eval_spec.rb +8 -16
- data/spec/spec_helper.rb +4 -4
- metadata +33 -18
- data/lib/build_eval/server/travis.rb +0 -23
- data/spec/lib/build_eval/server/travis_integration_spec.rb +0 -53
- data/spec/lib/build_eval/server/travis_spec.rb +0 -70
| @@ -0,0 +1,91 @@ | |
| 1 | 
            +
            describe BuildEval::Server::TravisCom do
         | 
| 2 | 
            +
              include_context 'stubbed http interactions'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              let(:username) { 'some_username' }
         | 
| 5 | 
            +
              let(:github_token) { 'ABCD1234' }
         | 
| 6 | 
            +
              let(:constructor_args) do
         | 
| 7 | 
            +
                {
         | 
| 8 | 
            +
                  username: username,
         | 
| 9 | 
            +
                  github_token: github_token
         | 
| 10 | 
            +
                }
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              let(:travis_server) { described_class.new(constructor_args) }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              before(:example) do
         | 
| 16 | 
            +
                allow(Travis::Pro).to receive(:github_auth)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              describe '#initialize' do
         | 
| 20 | 
            +
                subject { described_class.new(constructor_args) }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                it 'should set the github auth token' do
         | 
| 23 | 
            +
                  expect(Travis::Pro).to receive(:github_auth).with(github_token)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  subject
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              describe '#build_result' do
         | 
| 30 | 
            +
                let(:build_name)              { 'some_build_name' }
         | 
| 31 | 
            +
                let(:travis_repository)       { instance_double(Travis::Client::Repository) }
         | 
| 32 | 
            +
                let(:travis_build)            { instance_double(Travis::Client::Build) }
         | 
| 33 | 
            +
                let(:build_result)            { instance_double(BuildEval::Result::BuildResult) }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                subject { travis_server.build_result(build_name) }
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                before(:example) do
         | 
| 38 | 
            +
                  allow(Travis::Pro::Repository).to receive(:find).and_return(travis_repository)
         | 
| 39 | 
            +
                  allow(travis_repository).to receive(:last_build).and_return(travis_build)
         | 
| 40 | 
            +
                  allow(travis_build).to receive(:failed?).and_return(false)
         | 
| 41 | 
            +
                  allow(BuildEval::Result::BuildResult).to receive(:create).and_return(build_result)
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                it 'retrieves the relevant Travis repository' do
         | 
| 45 | 
            +
                  expect(Travis::Pro::Repository).to receive(:find).with("#{username}/#{build_name}").and_return(travis_repository)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  begin
         | 
| 48 | 
            +
                    subject
         | 
| 49 | 
            +
                  rescue
         | 
| 50 | 
            +
                    Exception
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                it 'retrieves the last build on the Travis repository' do
         | 
| 55 | 
            +
                  expect(travis_repository).to receive(:last_build).and_return(travis_build)
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  subject
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                it 'retrieves the build status from the build' do
         | 
| 61 | 
            +
                  expect(travis_build).to receive(:failed?).and_return(false)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  subject
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                it 'creates a build result' do
         | 
| 67 | 
            +
                  expect(BuildEval::Result::BuildResult).to receive(:create).with(
         | 
| 68 | 
            +
                    build_name:  "#{username}/#{build_name}",
         | 
| 69 | 
            +
                    status_name: 'Success'
         | 
| 70 | 
            +
                  ).and_return(build_result)
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  subject
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                it 'returns the parsed build result' do
         | 
| 76 | 
            +
                  expect(subject).to eql(build_result)
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              describe '#to_s' do
         | 
| 81 | 
            +
                subject { travis_server.to_s }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                it 'returns a string indicating it uses the Travis CI Org service' do
         | 
| 84 | 
            +
                  expect(subject).to include('Travis CI Com')
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                it 'returns a string containing the username' do
         | 
| 88 | 
            +
                  expect(subject).to include(username)
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
            end
         | 
| @@ -0,0 +1,71 @@ | |
| 1 | 
            +
            describe BuildEval::Server::TravisOrg do
         | 
| 2 | 
            +
              include_context 'stubbed http interactions'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              let(:username)         { 'some_username' }
         | 
| 5 | 
            +
              let(:constructor_args) { { username: username } }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              let(:travis_server) { described_class.new(constructor_args) }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              describe '#build_result' do
         | 
| 10 | 
            +
                let(:build_name)              { 'some_build_name' }
         | 
| 11 | 
            +
                let(:travis_repository)       { instance_double(Travis::Client::Repository) }
         | 
| 12 | 
            +
                let(:travis_build)            { instance_double(Travis::Client::Build) }
         | 
| 13 | 
            +
                let(:build_result)            { instance_double(BuildEval::Result::BuildResult) }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                subject { travis_server.build_result(build_name) }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                before(:example) do
         | 
| 18 | 
            +
                  allow(Travis::Repository).to receive(:find).and_return(travis_repository)
         | 
| 19 | 
            +
                  allow(travis_repository).to receive(:last_build).and_return(travis_build)
         | 
| 20 | 
            +
                  allow(travis_build).to receive(:failed?).and_return(false)
         | 
| 21 | 
            +
                  allow(BuildEval::Result::BuildResult).to receive(:create).and_return(build_result)
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it 'retrieves the relevant Travis repository' do
         | 
| 25 | 
            +
                  expect(Travis::Repository).to receive(:find).with("#{username}/#{build_name}").and_return(travis_repository)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  begin
         | 
| 28 | 
            +
                    subject
         | 
| 29 | 
            +
                  rescue
         | 
| 30 | 
            +
                    Exception
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                it 'retrieves the last build on the Travis repository' do
         | 
| 35 | 
            +
                  expect(travis_repository).to receive(:last_build).and_return(travis_build)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  subject
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                it 'retrieves the build status from the build' do
         | 
| 41 | 
            +
                  expect(travis_build).to receive(:failed?).and_return(false)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  subject
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                it 'creates a build result' do
         | 
| 47 | 
            +
                  expect(BuildEval::Result::BuildResult).to receive(:create).with(
         | 
| 48 | 
            +
                    build_name:  "#{username}/#{build_name}",
         | 
| 49 | 
            +
                    status_name: 'Success'
         | 
| 50 | 
            +
                  ).and_return(build_result)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  subject
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                it 'returns the parsed build result' do
         | 
| 56 | 
            +
                  expect(subject).to eql(build_result)
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              describe '#to_s' do
         | 
| 61 | 
            +
                subject { travis_server.to_s }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                it 'returns a string indicating it uses the Travis CI Org service' do
         | 
| 64 | 
            +
                  expect(subject).to include('Travis CI Org')
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                it 'returns a string containing the username' do
         | 
| 68 | 
            +
                  expect(subject).to include(username)
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
            end
         | 
| @@ -1,25 +1,26 @@ | |
| 1 | 
            -
            describe BuildEval,  | 
| 1 | 
            +
            describe BuildEval, 'integrating with a real CI server', smoke: true do
         | 
| 2 | 
            +
              let(:server) { BuildEval.server(type: :TravisOrg, username: 'MYOB-Technology') }
         | 
| 2 3 |  | 
| 3 | 
            -
              let(: | 
| 4 | 
            -
             | 
| 5 | 
            -
              let(:monitor) { server.monitor("build_eval") }
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              describe "the evaluated results from a build monitor for the server" do
         | 
| 4 | 
            +
              let(:monitor) { server.monitor('build_eval') }
         | 
| 8 5 |  | 
| 6 | 
            +
              describe 'the evaluated results from a build monitor for the server' do
         | 
| 9 7 | 
             
                let(:tolerated_statuses) do
         | 
| 10 | 
            -
                  [ | 
| 8 | 
            +
                  [
         | 
| 9 | 
            +
                    BuildEval::Result::Status::SUCCESS,
         | 
| 10 | 
            +
                    BuildEval::Result::Status::UNKNOWN,
         | 
| 11 | 
            +
                    BuildEval::Result::Status::FAILURE,
         | 
| 12 | 
            +
                    BuildEval::Result::Status::ERROR
         | 
| 13 | 
            +
                  ]
         | 
| 11 14 | 
             
                end
         | 
| 12 15 |  | 
| 13 16 | 
             
                subject { monitor.evaluate }
         | 
| 14 17 |  | 
| 15 | 
            -
                it  | 
| 18 | 
            +
                it 'indicate the builds status' do
         | 
| 16 19 | 
             
                  expect(tolerated_statuses).to include(subject.status)
         | 
| 17 20 | 
             
                end
         | 
| 18 21 |  | 
| 19 22 | 
             
                it "describe the build and it's status" do
         | 
| 20 23 | 
             
                  expect(subject.to_s).to match(/build_eval: (#{tolerated_statuses.map(&:to_s).join("|")})/)
         | 
| 21 24 | 
             
                end
         | 
| 22 | 
            -
             | 
| 23 25 | 
             
              end
         | 
| 24 | 
            -
             | 
| 25 26 | 
             
            end
         | 
    
        data/spec/lib/build_eval_spec.rb
    CHANGED
    
    | @@ -1,34 +1,30 @@ | |
| 1 1 | 
             
            describe BuildEval do
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              describe "::server" do
         | 
| 4 | 
            -
             | 
| 2 | 
            +
              describe '::server' do
         | 
| 5 3 | 
             
                class BuildEval::Server::TestableServer
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
                  def initialize(_args)
         | 
| 8 5 | 
             
                    # Intentionally blank
         | 
| 9 6 | 
             
                  end
         | 
| 10 | 
            -
             | 
| 11 7 | 
             
                end
         | 
| 12 8 |  | 
| 13 9 | 
             
                let(:server_type)      { :TestableServer }
         | 
| 14 | 
            -
                let(:server_arguments) { { key1:  | 
| 10 | 
            +
                let(:server_arguments) { { key1: 'value1', key2: 'value2', key3: 'value3' } }
         | 
| 15 11 | 
             
                let(:args)             { { type: server_type }.merge(server_arguments) }
         | 
| 16 12 |  | 
| 17 13 | 
             
                subject { described_class.server(args) }
         | 
| 18 14 |  | 
| 19 | 
            -
                it  | 
| 15 | 
            +
                it 'constructs an instance of the server with the provided type' do
         | 
| 20 16 | 
             
                  expect(BuildEval::Server::TestableServer).to receive(:new)
         | 
| 21 17 |  | 
| 22 18 | 
             
                  subject
         | 
| 23 19 | 
             
                end
         | 
| 24 20 |  | 
| 25 | 
            -
                it  | 
| 21 | 
            +
                it 'constructs the instance with additional arguments' do
         | 
| 26 22 | 
             
                  expect(BuildEval::Server::TestableServer).to receive(:new).with(server_arguments)
         | 
| 27 23 |  | 
| 28 24 | 
             
                  subject
         | 
| 29 25 | 
             
                end
         | 
| 30 26 |  | 
| 31 | 
            -
                it  | 
| 27 | 
            +
                it 'decorates the server with standard server behaviour' do
         | 
| 32 28 | 
             
                  server = instance_double(BuildEval::Server::TestableServer)
         | 
| 33 29 | 
             
                  allow(BuildEval::Server::TestableServer).to receive(:new).and_return(server)
         | 
| 34 30 | 
             
                  expect(BuildEval::Server::Decorator).to receive(:new).with(server)
         | 
| @@ -36,23 +32,19 @@ describe BuildEval do | |
| 36 32 | 
             
                  subject
         | 
| 37 33 | 
             
                end
         | 
| 38 34 |  | 
| 39 | 
            -
                it  | 
| 35 | 
            +
                it 'returns the decorated server' do
         | 
| 40 36 | 
             
                  server_decorator = instance_double(BuildEval::Server::Decorator)
         | 
| 41 37 | 
             
                  allow(BuildEval::Server::Decorator).to receive(:new).and_return(server_decorator)
         | 
| 42 38 |  | 
| 43 39 | 
             
                  expect(subject).to eql(server_decorator)
         | 
| 44 40 | 
             
                end
         | 
| 45 41 |  | 
| 46 | 
            -
                context  | 
| 47 | 
            -
             | 
| 42 | 
            +
                context 'when a server of the provided type is not found' do
         | 
| 48 43 | 
             
                  let(:server_type) { :invalid_type }
         | 
| 49 44 |  | 
| 50 | 
            -
                  it  | 
| 45 | 
            +
                  it 'raises an error indicating the server type is invalid' do
         | 
| 51 46 | 
             
                    expect { subject }.to raise_error("Server type '#{server_type}' is invalid")
         | 
| 52 47 | 
             
                  end
         | 
| 53 | 
            -
             | 
| 54 48 | 
             
                end
         | 
| 55 | 
            -
             | 
| 56 49 | 
             
              end
         | 
| 57 | 
            -
             | 
| 58 50 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            require 'bundler'
         | 
| 2 2 | 
             
            Bundler.require(:development)
         | 
| 3 3 |  | 
| 4 | 
            -
            if ENV[ | 
| 4 | 
            +
            if ENV['coverage']
         | 
| 5 5 | 
             
              CodeClimate::TestReporter.start
         | 
| 6 6 |  | 
| 7 7 | 
             
              SimpleCov.start do
         | 
| 8 | 
            -
                coverage_dir  | 
| 8 | 
            +
                coverage_dir 'tmp/coverage'
         | 
| 9 9 |  | 
| 10 | 
            -
                add_filter  | 
| 10 | 
            +
                add_filter '/spec/'
         | 
| 11 11 |  | 
| 12 12 | 
             
                minimum_coverage 100
         | 
| 13 13 | 
             
                refuse_coverage_drop
         | 
| @@ -16,6 +16,6 @@ end | |
| 16 16 |  | 
| 17 17 | 
             
            require_relative '../lib/build_eval'
         | 
| 18 18 |  | 
| 19 | 
            -
            %w | 
| 19 | 
            +
            %w( shared_examples shared_context ).each do |file_type|
         | 
| 20 20 | 
             
              Dir[::File.expand_path("../**/*_#{file_type}.rb", __FILE__)].each { |file| require file }
         | 
| 21 21 | 
             
            end
         | 
    
        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. | 
| 4 | 
            +
              version: 0.0.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Matthew Ueckerman
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2016-06-01 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: nokogiri
         | 
| @@ -25,20 +25,34 @@ dependencies: | |
| 25 25 | 
             
                - - "~>"
         | 
| 26 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 27 27 | 
             
                    version: '1.6'
         | 
| 28 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 29 | 
            +
              name: travis
         | 
| 30 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 31 | 
            +
                requirements:
         | 
| 32 | 
            +
                - - "~>"
         | 
| 33 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            +
                    version: '1.8'
         | 
| 35 | 
            +
              type: :runtime
         | 
| 36 | 
            +
              prerelease: false
         | 
| 37 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 38 | 
            +
                requirements:
         | 
| 39 | 
            +
                - - "~>"
         | 
| 40 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 41 | 
            +
                    version: '1.8'
         | 
| 28 42 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 29 43 | 
             
              name: rake
         | 
| 30 44 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 31 45 | 
             
                requirements:
         | 
| 32 46 | 
             
                - - "~>"
         | 
| 33 47 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            -
                    version: ' | 
| 48 | 
            +
                    version: '11.1'
         | 
| 35 49 | 
             
              type: :development
         | 
| 36 50 | 
             
              prerelease: false
         | 
| 37 51 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 38 52 | 
             
                requirements:
         | 
| 39 53 | 
             
                - - "~>"
         | 
| 40 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 41 | 
            -
                    version: ' | 
| 55 | 
            +
                    version: '11.1'
         | 
| 42 56 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 43 57 | 
             
              name: travis-lint
         | 
| 44 58 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -54,19 +68,19 @@ dependencies: | |
| 54 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 55 69 | 
             
                    version: '2.0'
         | 
| 56 70 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 57 | 
            -
              name:  | 
| 71 | 
            +
              name: rubocop
         | 
| 58 72 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 59 73 | 
             
                requirements:
         | 
| 60 74 | 
             
                - - "~>"
         | 
| 61 75 | 
             
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            -
                    version:  | 
| 76 | 
            +
                    version: 0.40.0
         | 
| 63 77 | 
             
              type: :development
         | 
| 64 78 | 
             
              prerelease: false
         | 
| 65 79 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 66 80 | 
             
                requirements:
         | 
| 67 81 | 
             
                - - "~>"
         | 
| 68 82 | 
             
                  - !ruby/object:Gem::Version
         | 
| 69 | 
            -
                    version:  | 
| 83 | 
            +
                    version: 0.40.0
         | 
| 70 84 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 71 85 | 
             
              name: rspec
         | 
| 72 86 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -101,29 +115,29 @@ dependencies: | |
| 101 115 | 
             
                requirements:
         | 
| 102 116 | 
             
                - - "~>"
         | 
| 103 117 | 
             
                  - !ruby/object:Gem::Version
         | 
| 104 | 
            -
                    version: '0. | 
| 118 | 
            +
                    version: '0.11'
         | 
| 105 119 | 
             
              type: :development
         | 
| 106 120 | 
             
              prerelease: false
         | 
| 107 121 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 108 122 | 
             
                requirements:
         | 
| 109 123 | 
             
                - - "~>"
         | 
| 110 124 | 
             
                  - !ruby/object:Gem::Version
         | 
| 111 | 
            -
                    version: '0. | 
| 125 | 
            +
                    version: '0.11'
         | 
| 112 126 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 113 127 | 
             
              name: codeclimate-test-reporter
         | 
| 114 128 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 115 129 | 
             
                requirements:
         | 
| 116 130 | 
             
                - - "~>"
         | 
| 117 131 | 
             
                  - !ruby/object:Gem::Version
         | 
| 118 | 
            -
                    version: '0. | 
| 132 | 
            +
                    version: '0.5'
         | 
| 119 133 | 
             
              type: :development
         | 
| 120 134 | 
             
              prerelease: false
         | 
| 121 135 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 122 136 | 
             
                requirements:
         | 
| 123 137 | 
             
                - - "~>"
         | 
| 124 138 | 
             
                  - !ruby/object:Gem::Version
         | 
| 125 | 
            -
                    version: '0. | 
| 126 | 
            -
            description: Evaluates the effective status of continuous integration builds. | 
| 139 | 
            +
                    version: '0.5'
         | 
| 140 | 
            +
            description: Evaluates the effective status of continuous integration builds. Useful
         | 
| 127 141 | 
             
              for subsequent display on information radiators.
         | 
| 128 142 | 
             
            email: matthew.ueckerman@myob.com
         | 
| 129 143 | 
             
            executables: []
         | 
| @@ -145,7 +159,8 @@ files: | |
| 145 159 | 
             
            - "./lib/build_eval/server/invalid_selector_error.rb"
         | 
| 146 160 | 
             
            - "./lib/build_eval/server/jenkins.rb"
         | 
| 147 161 | 
             
            - "./lib/build_eval/server/team_city.rb"
         | 
| 148 | 
            -
            - "./lib/build_eval/server/ | 
| 162 | 
            +
            - "./lib/build_eval/server/travis_com.rb"
         | 
| 163 | 
            +
            - "./lib/build_eval/server/travis_org.rb"
         | 
| 149 164 | 
             
            - "./lib/build_eval/version.rb"
         | 
| 150 165 | 
             
            - "./spec/lib/build_eval/error_spec.rb"
         | 
| 151 166 | 
             
            - "./spec/lib/build_eval/http_shared_context.rb"
         | 
| @@ -165,8 +180,8 @@ files: | |
| 165 180 | 
             
            - "./spec/lib/build_eval/server/server_shared_examples.rb"
         | 
| 166 181 | 
             
            - "./spec/lib/build_eval/server/team_city_integration_spec.rb"
         | 
| 167 182 | 
             
            - "./spec/lib/build_eval/server/team_city_spec.rb"
         | 
| 168 | 
            -
            - "./spec/lib/build_eval/server/ | 
| 169 | 
            -
            - "./spec/lib/build_eval/server/ | 
| 183 | 
            +
            - "./spec/lib/build_eval/server/travis_com_spec.rb"
         | 
| 184 | 
            +
            - "./spec/lib/build_eval/server/travis_org_spec.rb"
         | 
| 170 185 | 
             
            - "./spec/lib/build_eval_smoke_spec.rb"
         | 
| 171 186 | 
             
            - "./spec/lib/build_eval_spec.rb"
         | 
| 172 187 | 
             
            - "./spec/spec_helper.rb"
         | 
| @@ -190,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 190 205 | 
             
                  version: '0'
         | 
| 191 206 | 
             
            requirements: []
         | 
| 192 207 | 
             
            rubyforge_project: build_eval
         | 
| 193 | 
            -
            rubygems_version: 2. | 
| 208 | 
            +
            rubygems_version: 2.5.1
         | 
| 194 209 | 
             
            signing_key: 
         | 
| 195 210 | 
             
            specification_version: 4
         | 
| 196 211 | 
             
            summary: Evaluates the effective status of continuous integration builds
         | 
| @@ -213,8 +228,8 @@ test_files: | |
| 213 228 | 
             
            - "./spec/lib/build_eval/server/server_shared_examples.rb"
         | 
| 214 229 | 
             
            - "./spec/lib/build_eval/server/team_city_integration_spec.rb"
         | 
| 215 230 | 
             
            - "./spec/lib/build_eval/server/team_city_spec.rb"
         | 
| 216 | 
            -
            - "./spec/lib/build_eval/server/ | 
| 217 | 
            -
            - "./spec/lib/build_eval/server/ | 
| 231 | 
            +
            - "./spec/lib/build_eval/server/travis_com_spec.rb"
         | 
| 232 | 
            +
            - "./spec/lib/build_eval/server/travis_org_spec.rb"
         | 
| 218 233 | 
             
            - "./spec/lib/build_eval_smoke_spec.rb"
         | 
| 219 234 | 
             
            - "./spec/lib/build_eval_spec.rb"
         | 
| 220 235 | 
             
            - "./spec/spec_helper.rb"
         | 
| @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            module BuildEval
         | 
| 2 | 
            -
              module Server
         | 
| 3 | 
            -
             | 
| 4 | 
            -
                class Travis
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  def initialize(args)
         | 
| 7 | 
            -
                    @http     = BuildEval::Http.new(args)
         | 
| 8 | 
            -
                    @username = args[:username]
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def build_result(name)
         | 
| 12 | 
            -
                    raw_response = @http.get("https://api.travis-ci.org/repositories/#{@username}/#{name}/cc.xml")
         | 
| 13 | 
            -
                    BuildEval::Server::CruiseControlResponse.new(raw_response).parse_result("//Project")
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  def to_s
         | 
| 17 | 
            -
                    "Travis CI #{@username}"
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
            end
         | 
| @@ -1,53 +0,0 @@ | |
| 1 | 
            -
            describe BuildEval::Server::Travis, "integrating with a response parser", integration: true do
         | 
| 2 | 
            -
              include_context "stubbed http interactions"
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              let(:username) { "some_username" }
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              let(:travis) { described_class.new(username: username) }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              describe "#build_result" do
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                let(:build_name) { "some_build_name" }
         | 
| 11 | 
            -
                let(:response)   { instance_double(Net::HTTPResponse, body: response_body) }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                subject { travis.build_result(build_name) }
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                before(:example) { allow(http).to receive(:get).and_return(response) }
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                context "when the server responds successfully with build results" do
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  let(:latest_build_status) { "Success" }
         | 
| 20 | 
            -
                  let(:response_body)       do
         | 
| 21 | 
            -
                    <<-RESPONSE
         | 
| 22 | 
            -
                      <Projects>
         | 
| 23 | 
            -
                        <Project name="#{username}/#{build_name}" activity="Sleeping" lastBuildStatus="#{latest_build_status}" lastBuildLabel="2" lastBuildTime="2015-08-13T08:31:27.000+0000" webUrl="https://travis-ci.org/#{username}/#{build_name}" />
         | 
| 24 | 
            -
                      </Projects>
         | 
| 25 | 
            -
                    RESPONSE
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  it "creates a build result containing the build name" do
         | 
| 29 | 
            -
                    expect(BuildEval::Result::BuildResult).to receive(:create).with(hash_including(build_name: build_name))
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                    subject
         | 
| 32 | 
            -
                  end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  it "creates a build result containing the latest build status" do
         | 
| 35 | 
            -
                    expect(BuildEval::Result::BuildResult).to(
         | 
| 36 | 
            -
                      receive(:create).with(hash_including(status_name: latest_build_status))
         | 
| 37 | 
            -
                    )
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                    subject
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  it "returns the created result" do
         | 
| 43 | 
            -
                    build_result = instance_double(BuildEval::Result::BuildResult)
         | 
| 44 | 
            -
                    allow(BuildEval::Result::BuildResult).to receive(:create).and_return(build_result)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                    expect(subject).to eql(build_result)
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
              end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            end
         | 
| @@ -1,70 +0,0 @@ | |
| 1 | 
            -
            describe BuildEval::Server::Travis do
         | 
| 2 | 
            -
              include_context "stubbed http interactions"
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              let(:username)         { "some_username" }
         | 
| 5 | 
            -
              let(:constructor_args) { { username: username } }
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              let(:travis_server) { described_class.new(constructor_args) }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              it_behaves_like "a continuous integration server" do
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                let(:server) { travis_server }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              describe "#build_result" do
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                let(:build_name)              { "some_build_name" }
         | 
| 18 | 
            -
                let(:response)                { instance_double(Net::HTTPResponse) }
         | 
| 19 | 
            -
                let(:build_result)            { instance_double(BuildEval::Result::BuildResult) }
         | 
| 20 | 
            -
                let(:cruise_control_response) do
         | 
| 21 | 
            -
                  instance_double(BuildEval::Server::CruiseControlResponse, parse_result: build_result)
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                subject { travis_server.build_result(build_name) }
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                before(:example) do
         | 
| 27 | 
            -
                  allow(http).to receive(:get).and_return(response)
         | 
| 28 | 
            -
                  allow(BuildEval::Server::CruiseControlResponse).to receive(:new).and_return(cruise_control_response)
         | 
| 29 | 
            -
                  allow(cruise_control_response).to receive(:parse_result).and_return(build_result)
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                it "issues a GET request for the build" do
         | 
| 33 | 
            -
                  expect(http).to receive(:get).with("https://api.travis-ci.org/repositories/#{username}/#{build_name}/cc.xml")
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                  subject rescue Exception
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                it "creates a Cruise Control response containing the GET request response" do
         | 
| 39 | 
            -
                  expect(BuildEval::Server::CruiseControlResponse).to receive(:new).with(response)
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                  subject
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                it "parses the Cruise Control response to return the project" do
         | 
| 45 | 
            -
                  expect(cruise_control_response).to receive(:parse_result).with("//Project")
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                  subject
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                it "returns the parsed build result" do
         | 
| 51 | 
            -
                  expect(subject).to eql(build_result)
         | 
| 52 | 
            -
                end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
              describe "#to_s" do
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                subject { travis_server.to_s }
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                it "returns a string indicating it uses the Travis CI service" do
         | 
| 61 | 
            -
                  expect(subject).to include("Travis CI")
         | 
| 62 | 
            -
                end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                it "returns a string containing the username" do
         | 
| 65 | 
            -
                  expect(subject).to include(username)
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
              end
         | 
| 69 | 
            -
             | 
| 70 | 
            -
            end
         |