travis-async-listener 1.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +2486 -0
  4. data/Rakefile +63 -0
  5. data/assets/cacert.pem +69 -0
  6. data/assets/init/c.yml +4 -0
  7. data/assets/init/clojure.yml +1 -0
  8. data/assets/init/cpp.yml +4 -0
  9. data/assets/init/erlang.yml +3 -0
  10. data/assets/init/go.yml +4 -0
  11. data/assets/init/groovy.yml +1 -0
  12. data/assets/init/haskell.yml +1 -0
  13. data/assets/init/java.yml +4 -0
  14. data/assets/init/node_js.yml +4 -0
  15. data/assets/init/objective-c.yml +1 -0
  16. data/assets/init/perl.yml +4 -0
  17. data/assets/init/php.yml +4 -0
  18. data/assets/init/python.yml +5 -0
  19. data/assets/init/ruby.yml +6 -0
  20. data/assets/init/scala.yml +4 -0
  21. data/assets/notifications/Travis CI.app/Contents/Info.plist +52 -0
  22. data/assets/notifications/Travis CI.app/Contents/MacOS/Travis CI +0 -0
  23. data/assets/notifications/Travis CI.app/Contents/PkgInfo +1 -0
  24. data/assets/notifications/Travis CI.app/Contents/Resources/Travis CI.icns +0 -0
  25. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/Credits.rtf +29 -0
  26. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  27. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/MainMenu.nib +0 -0
  28. data/assets/notifications/Travis CI.app/Contents/_CodeSignature/CodeResources +173 -0
  29. data/assets/notifications/Travis CI.app/Contents/embedded.provisionprofile +0 -0
  30. data/assets/notifications/icon.png +0 -0
  31. data/assets/travis.sh +163 -0
  32. data/assets/travis.sh.erb +64 -0
  33. data/bin/travis +18 -0
  34. data/examples/org_overview.rb +3 -0
  35. data/examples/pro_auth.rb +23 -0
  36. data/examples/stream.rb +6 -0
  37. data/lib/travis.rb +8 -0
  38. data/lib/travis/auto_login.rb +3 -0
  39. data/lib/travis/cli.rb +126 -0
  40. data/lib/travis/cli/accounts.rb +31 -0
  41. data/lib/travis/cli/api_command.rb +180 -0
  42. data/lib/travis/cli/branches.rb +25 -0
  43. data/lib/travis/cli/cache.rb +76 -0
  44. data/lib/travis/cli/cancel.rb +18 -0
  45. data/lib/travis/cli/command.rb +422 -0
  46. data/lib/travis/cli/console.rb +31 -0
  47. data/lib/travis/cli/disable.rb +15 -0
  48. data/lib/travis/cli/enable.rb +31 -0
  49. data/lib/travis/cli/encrypt.rb +108 -0
  50. data/lib/travis/cli/encrypt_file.rb +140 -0
  51. data/lib/travis/cli/endpoint.rb +35 -0
  52. data/lib/travis/cli/env.rb +66 -0
  53. data/lib/travis/cli/help.rb +23 -0
  54. data/lib/travis/cli/history.rb +49 -0
  55. data/lib/travis/cli/init.rb +82 -0
  56. data/lib/travis/cli/lint.rb +49 -0
  57. data/lib/travis/cli/login.rb +76 -0
  58. data/lib/travis/cli/logout.rb +14 -0
  59. data/lib/travis/cli/logs.rb +65 -0
  60. data/lib/travis/cli/monitor.rb +110 -0
  61. data/lib/travis/cli/open.rb +39 -0
  62. data/lib/travis/cli/parser.rb +43 -0
  63. data/lib/travis/cli/pubkey.rb +30 -0
  64. data/lib/travis/cli/raw.rb +20 -0
  65. data/lib/travis/cli/repo_command.rb +154 -0
  66. data/lib/travis/cli/report.rb +101 -0
  67. data/lib/travis/cli/repos.rb +53 -0
  68. data/lib/travis/cli/requests.rb +47 -0
  69. data/lib/travis/cli/restart.rb +18 -0
  70. data/lib/travis/cli/settings.rb +77 -0
  71. data/lib/travis/cli/setup.rb +66 -0
  72. data/lib/travis/cli/setup/anynines.rb +21 -0
  73. data/lib/travis/cli/setup/appfog.rb +19 -0
  74. data/lib/travis/cli/setup/artifacts.rb +23 -0
  75. data/lib/travis/cli/setup/biicode.rb +19 -0
  76. data/lib/travis/cli/setup/cloud_66.rb +20 -0
  77. data/lib/travis/cli/setup/cloud_control.rb +21 -0
  78. data/lib/travis/cli/setup/cloud_files.rb +20 -0
  79. data/lib/travis/cli/setup/cloud_foundry.rb +23 -0
  80. data/lib/travis/cli/setup/code_deploy.rb +55 -0
  81. data/lib/travis/cli/setup/deis.rb +20 -0
  82. data/lib/travis/cli/setup/divshot.rb +18 -0
  83. data/lib/travis/cli/setup/elastic_beanstalk.rb +23 -0
  84. data/lib/travis/cli/setup/engine_yard.rb +24 -0
  85. data/lib/travis/cli/setup/gcs.rb +22 -0
  86. data/lib/travis/cli/setup/hackage.rb +18 -0
  87. data/lib/travis/cli/setup/heroku.rb +20 -0
  88. data/lib/travis/cli/setup/modulus.rb +18 -0
  89. data/lib/travis/cli/setup/ninefold.rb +20 -0
  90. data/lib/travis/cli/setup/nodejitsu.rb +27 -0
  91. data/lib/travis/cli/setup/npm.rb +20 -0
  92. data/lib/travis/cli/setup/open_shift.rb +20 -0
  93. data/lib/travis/cli/setup/opsworks.rb +22 -0
  94. data/lib/travis/cli/setup/pypi.rb +22 -0
  95. data/lib/travis/cli/setup/releases.rb +35 -0
  96. data/lib/travis/cli/setup/ruby_gems.rb +25 -0
  97. data/lib/travis/cli/setup/s3.rb +25 -0
  98. data/lib/travis/cli/setup/sauce_connect.rb +21 -0
  99. data/lib/travis/cli/setup/service.rb +73 -0
  100. data/lib/travis/cli/show.rb +69 -0
  101. data/lib/travis/cli/sshkey.rb +118 -0
  102. data/lib/travis/cli/status.rb +19 -0
  103. data/lib/travis/cli/sync.rb +30 -0
  104. data/lib/travis/cli/token.rb +14 -0
  105. data/lib/travis/cli/version.rb +17 -0
  106. data/lib/travis/cli/whatsup.rb +30 -0
  107. data/lib/travis/cli/whoami.rb +15 -0
  108. data/lib/travis/client.rb +39 -0
  109. data/lib/travis/client/account.rb +56 -0
  110. data/lib/travis/client/annotation.rb +21 -0
  111. data/lib/travis/client/artifact.rb +88 -0
  112. data/lib/travis/client/auto_login.rb +45 -0
  113. data/lib/travis/client/broadcast.rb +14 -0
  114. data/lib/travis/client/build.rb +47 -0
  115. data/lib/travis/client/cache.rb +25 -0
  116. data/lib/travis/client/commit.rb +28 -0
  117. data/lib/travis/client/entity.rb +238 -0
  118. data/lib/travis/client/env_var.rb +102 -0
  119. data/lib/travis/client/error.rb +38 -0
  120. data/lib/travis/client/has_uuid.rb +13 -0
  121. data/lib/travis/client/job.rb +61 -0
  122. data/lib/travis/client/lint_result.rb +25 -0
  123. data/lib/travis/client/listener.rb +184 -0
  124. data/lib/travis/client/methods.rb +104 -0
  125. data/lib/travis/client/namespace.rb +85 -0
  126. data/lib/travis/client/not_loadable.rb +13 -0
  127. data/lib/travis/client/repository.rb +224 -0
  128. data/lib/travis/client/request.rb +36 -0
  129. data/lib/travis/client/restartable.rb +23 -0
  130. data/lib/travis/client/session.rb +339 -0
  131. data/lib/travis/client/settings.rb +25 -0
  132. data/lib/travis/client/singleton_setting.rb +36 -0
  133. data/lib/travis/client/ssh_key.rb +11 -0
  134. data/lib/travis/client/states.rb +98 -0
  135. data/lib/travis/client/user.rb +67 -0
  136. data/lib/travis/client/weak_entity.rb +26 -0
  137. data/lib/travis/pro.rb +5 -0
  138. data/lib/travis/pro/auto_login.rb +3 -0
  139. data/lib/travis/tools/assets.rb +21 -0
  140. data/lib/travis/tools/completion.rb +54 -0
  141. data/lib/travis/tools/formatter.rb +50 -0
  142. data/lib/travis/tools/github.rb +279 -0
  143. data/lib/travis/tools/notification.rb +69 -0
  144. data/lib/travis/tools/safe_string.rb +22 -0
  145. data/lib/travis/tools/ssl_key.rb +48 -0
  146. data/lib/travis/tools/system.rb +88 -0
  147. data/lib/travis/version.rb +3 -0
  148. data/spec/cli/cancel_spec.rb +15 -0
  149. data/spec/cli/encrypt_spec.rb +43 -0
  150. data/spec/cli/endpoint_spec.rb +34 -0
  151. data/spec/cli/help_spec.rb +33 -0
  152. data/spec/cli/history_spec.rb +38 -0
  153. data/spec/cli/init_spec.rb +226 -0
  154. data/spec/cli/login_spec.rb +13 -0
  155. data/spec/cli/logs_spec.rb +8 -0
  156. data/spec/cli/open_spec.rb +33 -0
  157. data/spec/cli/repo_command_spec.rb +25 -0
  158. data/spec/cli/restart_spec.rb +15 -0
  159. data/spec/cli/setup_spec.rb +5 -0
  160. data/spec/cli/show_spec.rb +9 -0
  161. data/spec/cli/status_spec.rb +28 -0
  162. data/spec/cli/token_spec.rb +22 -0
  163. data/spec/cli/version_spec.rb +18 -0
  164. data/spec/cli/whoami_spec.rb +34 -0
  165. data/spec/client/account_spec.rb +32 -0
  166. data/spec/client/annotation_spec.rb +14 -0
  167. data/spec/client/broadcast_spec.rb +10 -0
  168. data/spec/client/build_spec.rb +31 -0
  169. data/spec/client/commit_spec.rb +22 -0
  170. data/spec/client/job_spec.rb +30 -0
  171. data/spec/client/methods_spec.rb +15 -0
  172. data/spec/client/namespace_spec.rb +19 -0
  173. data/spec/client/repository_spec.rb +39 -0
  174. data/spec/client/session_spec.rb +165 -0
  175. data/spec/client/user_spec.rb +16 -0
  176. data/spec/client_spec.rb +17 -0
  177. data/spec/pro_spec.rb +10 -0
  178. data/spec/spec_helper.rb +29 -0
  179. data/spec/support/fake_api.rb +738 -0
  180. data/spec/support/fake_github.rb +24 -0
  181. data/spec/support/helpers.rb +45 -0
  182. data/spec/travis_spec.rb +10 -0
  183. data/travis.gemspec +323 -0
  184. metadata +489 -0
@@ -0,0 +1,165 @@
1
+ require 'spec_helper'
2
+
3
+ describe Travis::Client::Session do
4
+ it { should be_a(Travis::Client::Methods) }
5
+
6
+ describe "uri" do
7
+ its(:uri) { should be == "https://api.travis-ci.org/" }
8
+
9
+ it 'can be set as argument' do
10
+ Travis::Client::Session.new('http://foo/').uri.should be == 'http://foo/'
11
+ end
12
+
13
+ it 'can be set as hash argument' do
14
+ Travis::Client::Session.new(:uri => 'http://foo/').uri.should be == 'http://foo/'
15
+ end
16
+ end
17
+
18
+ describe "access_token" do
19
+ its(:access_token) { should be_nil }
20
+
21
+ it 'gives authenticated access if set' do
22
+ subject.access_token = 'token'
23
+ subject.user.login.should be == 'rkh'
24
+ end
25
+
26
+ it 'raises if token is not set' do
27
+ expect { subject.user.login }.to raise_error(Travis::Client::Error)
28
+ end
29
+ end
30
+
31
+ describe "connection" do
32
+ its(:connection) { should be_a(Faraday::Connection) }
33
+
34
+ it 'creates a new connection when changing the uri' do
35
+ old_connection = subject.connection
36
+ subject.uri = 'http://localhost:3000'
37
+ subject.connection.should_not be == old_connection
38
+ end
39
+ end
40
+
41
+ describe "headers" do
42
+ it 'propagates headers to connection headers' do
43
+ subject.headers['foo'] = 'bar'
44
+ subject.connection.headers.should include('foo')
45
+ end
46
+
47
+ it 'propagates headers to new connections' do
48
+ subject.headers['foo'] = 'bar'
49
+ subject.connection = Faraday::Connection.new
50
+ subject.connection.headers.should include('foo')
51
+ end
52
+
53
+ it 'is possible to set headers as constructor option' do
54
+ Travis::Client::Session.new(:headers => {'foo' => 'bar'}, :uri => 'http://localhost:3000/').
55
+ connection.headers['foo'].should be == 'bar'
56
+ end
57
+
58
+ it 'sets a User-Agent' do
59
+ subject.headers['User-Agent'].should include("Travis/#{Travis::VERSION}")
60
+ subject.headers['User-Agent'].should include("Faraday/#{Faraday::VERSION}")
61
+ subject.headers['User-Agent'].should include("Rack/#{Rack.version}")
62
+ subject.headers['User-Agent'].should include("Ruby #{RUBY_VERSION}")
63
+ end
64
+
65
+ it 'allows adding custom infos to the User-Agent' do
66
+ subject.agent_info = "foo"
67
+ subject.headers['User-Agent'].should include("foo")
68
+ subject.headers['User-Agent'].should include("Travis/#{Travis::VERSION}")
69
+ subject.headers['User-Agent'].should include("Faraday/#{Faraday::VERSION}")
70
+ subject.headers['User-Agent'].should include("Rack/#{Rack.version}")
71
+ subject.headers['User-Agent'].should include("Ruby #{RUBY_VERSION}")
72
+ end
73
+ end
74
+
75
+ describe "find_one" do
76
+ it 'finds one instance' do
77
+ repo = subject.find_one(Travis::Client::Repository, 'rails/rails')
78
+ repo.should be_a(Travis::Client::Repository)
79
+ repo.slug.should be == 'rails/rails'
80
+ end
81
+ end
82
+
83
+ describe "find_many" do
84
+ it 'finds many instances' do
85
+ repos = subject.find_many(Travis::Client::Repository)
86
+ repos.should be_an(Array)
87
+ repos.each { |repo| repo.should be_a(Travis::Client::Repository) }
88
+ repos.first.slug.should be == "pypug/django-mango"
89
+ end
90
+ end
91
+
92
+ describe "find_one_or_many" do
93
+ it 'finds one instance' do
94
+ subject.access_token = 'token'
95
+ subject.find_one_or_many(Travis::Client::User).should be_a(Travis::Client::User)
96
+ end
97
+
98
+ it 'finds many instances' do
99
+ subject.find_one_or_many(Travis::Client::Repository).should be_an(Array)
100
+ end
101
+ end
102
+
103
+ describe "reload" do
104
+ it 'reloads an instance' do
105
+ Travis::Client::Session::FakeAPI.rails_description = "Ruby on Rails"
106
+ rails = subject.find_one(Travis::Client::Repository, 'rails/rails')
107
+ rails.description.should be == 'Ruby on Rails'
108
+ Travis::Client::Session::FakeAPI.rails_description = 'Rails on the Rubies'
109
+ rails.description.should be == 'Ruby on Rails'
110
+ subject.reload(rails)
111
+ rails.description.should be == 'Rails on the Rubies'
112
+ end
113
+ end
114
+
115
+ describe "get" do
116
+ it 'fetches a payload and substitutes values with entities' do
117
+ result = subject.get('/repos/')
118
+ result['repos'].first.slug.should be == "pypug/django-mango"
119
+ end
120
+ end
121
+
122
+ describe "clear_cache" do
123
+ it 'resets all the entities' do
124
+ Travis::Client::Session::FakeAPI.rails_description = "Ruby on Rails"
125
+ rails = subject.find_one(Travis::Client::Repository, 'rails/rails')
126
+ rails.description.should be == 'Ruby on Rails'
127
+ Travis::Client::Session::FakeAPI.rails_description = 'Rails on the Rubies'
128
+ rails.description.should be == 'Ruby on Rails'
129
+ subject.clear_cache
130
+ rails.description.should be == 'Rails on the Rubies'
131
+ end
132
+
133
+ it 'keeps entries in the identity map' do
134
+ rails = subject.repo('rails/rails')
135
+ subject.clear_cache
136
+ subject.repo('rails/rails').should be_equal(rails)
137
+ end
138
+ end
139
+
140
+ describe "clear_cache!" do
141
+ it 'resets all the entities' do
142
+ Travis::Client::Session::FakeAPI.rails_description = "Ruby on Rails"
143
+ rails = subject.find_one(Travis::Client::Repository, 'rails/rails')
144
+ rails.description.should be == 'Ruby on Rails'
145
+ Travis::Client::Session::FakeAPI.rails_description = 'Rails on the Rubies'
146
+ rails.description.should be == 'Ruby on Rails'
147
+ subject.clear_cache!
148
+ rails.description.should be == 'Rails on the Rubies'
149
+ end
150
+
151
+ it 'does not keep entries in the identity map' do
152
+ rails = subject.repo('rails/rails')
153
+ subject.clear_cache!
154
+ subject.repo('rails/rails').should_not be_equal(rails)
155
+ end
156
+ end
157
+
158
+ describe "session" do
159
+ its(:session) { should eq(subject) }
160
+ end
161
+
162
+ describe "config" do
163
+ its(:config) { should be == {"host" => "travis-ci.org"}}
164
+ end
165
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Travis::Client::User do
4
+ # attributes :login, :name, :email, :gravatar_id, :locale, :is_syncing, :synced_at, :correct_scopes
5
+ subject { Travis::Client.new(:access_token => 'token').user }
6
+ its(:login) { should be == 'rkh' }
7
+ its(:name) { should be == 'Konstantin Haase' }
8
+ its(:email) { should be == 'konstantin.haase@gmail.com' }
9
+ its(:gravatar_id) { should be == '5c2b452f6eea4a6d84c105ebd971d2a4' }
10
+ its(:locale) { should be == 'en' }
11
+ its(:is_syncing) { should be_false }
12
+ its(:synced_at) { should be_a(Time) }
13
+
14
+ it { should_not be_syncing }
15
+ it { should be_correct_scopes }
16
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Travis::Client do
4
+ its(:new) { should be_a(Travis::Client::Session) }
5
+
6
+ it 'accepts string argument' do
7
+ Travis::Client.new('http://foo/').uri.should be == 'http://foo/'
8
+ end
9
+
10
+ it 'accepts options hash with string keys' do
11
+ Travis::Client.new('uri' => 'http://foo/').uri.should be == 'http://foo/'
12
+ end
13
+
14
+ it 'accepts options hash with symbol keys' do
15
+ Travis::Client.new(:uri => 'http://foo/').uri.should be == 'http://foo/'
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe Travis::Pro do
4
+ it { should be_a(Travis::Client::Namespace) }
5
+ its(:api_endpoint) { should be == 'https://api.travis-ci.com/' }
6
+
7
+ it 'has a nice inspect on entities' do
8
+ Travis::Pro::Repository.find('rails/rails').inspect.should be == "#<Travis::Pro::Repository: rails/rails>"
9
+ end
10
+ end
@@ -0,0 +1,29 @@
1
+ require 'support/fake_api'
2
+ require 'support/fake_github'
3
+ require 'support/helpers'
4
+
5
+ require 'fileutils'
6
+ require 'travis'
7
+ require 'highline'
8
+ require 'tmpdir'
9
+
10
+ temp_dir = nil
11
+
12
+ HighLine.use_color = false
13
+ HighLine.define_singleton_method(:use_color=) { |_| }
14
+
15
+ RSpec.configure do |c|
16
+ c.include Helpers
17
+
18
+ c.before do
19
+ temp_dir = File.expand_path('travis-spec', Dir.tmpdir)
20
+ FileUtils.rm_rf(temp_dir)
21
+ FileUtils.mkdir_p(temp_dir)
22
+ ENV.delete_if { |k,v| k.start_with? "TRAVIS_" }
23
+ ENV['TRAVIS_CONFIG_PATH'] = File.expand_path('travis', temp_dir)
24
+ end
25
+
26
+ c.after do
27
+ FileUtils.rm_rf(temp_dir)
28
+ end
29
+ end
@@ -0,0 +1,738 @@
1
+ require 'sinatra/base'
2
+ require 'travis/client/session'
3
+
4
+ RAILS_KEY = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnOGqjSJGeWIlTFLm5qjEIs/7l\nEx4v0LMGld6+7RwaFjIptr/slaJXPsE8gJxxaDs5aqpD2wT0IXLYw4RDhlwOYnHI\nXjlPwak+sJycfVolhY9QAJJbADD+kwjlnnDAe5QzQg1xVLusUr9QXzZ93nftb0m7\n+Lntq91SxE1r8F/+zQIDAQAB\n-----END PUBLIC KEY-----\n"
5
+
6
+ module Travis
7
+ module Client
8
+ class Session
9
+ class FakeAPI < Sinatra::Base
10
+ disable :protection
11
+ enable :raise_errors
12
+ set :rails_description, "Ruby on Rails"
13
+
14
+ before do
15
+ content_type :json
16
+ end
17
+
18
+ def authorized?
19
+ env['HTTP_AUTHORIZATION'] == 'token token'
20
+ end
21
+
22
+ get '/' do
23
+ "{}"
24
+ end
25
+
26
+ get '/users/' do
27
+ halt(403, 'wrong token') unless authorized?
28
+ {"user"=>
29
+ {"id"=>267,
30
+ "name"=>"Konstantin Haase",
31
+ "login"=>"rkh",
32
+ "email"=>"konstantin.haase@gmail.com",
33
+ "gravatar_id"=>"5c2b452f6eea4a6d84c105ebd971d2a4",
34
+ "locale"=>"en",
35
+ "is_syncing"=>false,
36
+ "synced_at"=>"2012-10-27T12:52:25Z",
37
+ "correct_scopes"=>true}}.to_json
38
+ end
39
+
40
+ get '/jobs/4125097' do
41
+ {"job"=>
42
+ {"id"=>4125097,
43
+ "repository_id"=>891,
44
+ "repository_slug"=>"rails/rails",
45
+ "build_id"=>4125095,
46
+ "commit_id"=>1201631,
47
+ "log_id"=>3168319,
48
+ "number"=>"6180.2",
49
+ "config"=>
50
+ {"script"=>"ci/travis.rb",
51
+ "before_install"=>["gem install bundler"],
52
+ "rvm"=>"1.9.3",
53
+ "env"=>"GEM=ap,am,amo,as",
54
+ "notifications"=>
55
+ {"email"=>false,
56
+ "irc"=>
57
+ {"on_success"=>"change",
58
+ "on_failure"=>"always",
59
+ "channels"=>["irc.freenode.org#rails-contrib"]},
60
+ "campfire"=>
61
+ {"on_success"=>"change",
62
+ "on_failure"=>"always",
63
+ "rooms"=>
64
+ [{"secure"=>
65
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
66
+ "bundler_args"=>"--path vendor/bundle",
67
+ ".result"=>"configured"},
68
+ "state"=>"passed",
69
+ "started_at"=>"2013-01-13T15:55:59Z",
70
+ "finished_at"=>"2013-01-13T16:11:04Z",
71
+ "queue"=>"builds.rails",
72
+ "allow_failure"=>false,
73
+ "tags"=>"",
74
+ "annotation_ids"=>[1]},
75
+ "commit"=>
76
+ {"id"=>1201631,
77
+ "sha"=>"a0265b98f16c6e33be32aa3f57231d1189302400",
78
+ "branch"=>"master",
79
+ "message"=>"Associaton -> Association",
80
+ "committed_at"=>"2013-01-13T15:43:24Z",
81
+ "author_name"=>"Steve Klabnik",
82
+ "author_email"=>"steve@steveklabnik.com",
83
+ "committer_name"=>"Steve Klabnik",
84
+ "committer_email"=>"steve@steveklabnik.com",
85
+ "compare_url"=>
86
+ "https://github.com/rails/rails/compare/6581d798e830...a0265b98f16c"},
87
+ "annotations"=>
88
+ [{"id"=>1,
89
+ "job_id"=>4125097,
90
+ "description"=>"The job passed.",
91
+ "provider_name"=>"Travis CI",
92
+ "url"=>"https://travis-ci.org/rails/rails/jobs/4125097",
93
+ "status"=>''}]}.to_json
94
+ end
95
+
96
+ get '/builds/4125095' do
97
+ {"build"=>
98
+ {"id"=>4125095,
99
+ "repository_id"=>891,
100
+ "commit_id"=>1201631,
101
+ "number"=>"6180",
102
+ "pull_request"=>false,
103
+ "config"=>
104
+ {"script"=>"ci/travis.rb",
105
+ "before_install"=>["gem install bundler"],
106
+ "rvm"=>["1.9.3", "2.0.0"],
107
+ "env"=>
108
+ ["GEM=railties",
109
+ "GEM=ap,am,amo,as",
110
+ "GEM=ar:mysql",
111
+ "GEM=ar:mysql2",
112
+ "GEM=ar:sqlite3",
113
+ "GEM=ar:postgresql"],
114
+ "notifications"=>
115
+ {"email"=>false,
116
+ "irc"=>
117
+ {"on_success"=>"change",
118
+ "on_failure"=>"always",
119
+ "channels"=>["irc.freenode.org#rails-contrib"]},
120
+ "campfire"=>
121
+ {"on_success"=>"change",
122
+ "on_failure"=>"always",
123
+ "rooms"=>
124
+ [{"secure"=>
125
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
126
+ "bundler_args"=>"--path vendor/bundle",
127
+ ".result"=>"configured"},
128
+ "state"=>"failed",
129
+ "started_at"=>"2013-01-13T15:55:17Z",
130
+ "finished_at"=>nil,
131
+ "duration"=>5019,
132
+ "job_ids"=>
133
+ [4125096,
134
+ 4125097,
135
+ 4125098,
136
+ 4125099,
137
+ 4125100,
138
+ 4125101,
139
+ 4125102,
140
+ 4125103,
141
+ 4125104,
142
+ 4125105,
143
+ 4125106,
144
+ 4125107]},
145
+ "commit"=>
146
+ {"id"=>1201631,
147
+ "sha"=>"a0265b98f16c6e33be32aa3f57231d1189302400",
148
+ "branch"=>"master",
149
+ "message"=>"Associaton -> Association",
150
+ "committed_at"=>"2013-01-13T15:43:24Z",
151
+ "author_name"=>"Steve Klabnik",
152
+ "author_email"=>"steve@steveklabnik.com",
153
+ "committer_name"=>"Steve Klabnik",
154
+ "committer_email"=>"steve@steveklabnik.com",
155
+ "compare_url"=>
156
+ "https://github.com/rails/rails/compare/6581d798e830...a0265b98f16c"},
157
+ "jobs"=>
158
+ [{"id"=>4125096,
159
+ "repository_id"=>891,
160
+ "build_id"=>4125095,
161
+ "commit_id"=>1201631,
162
+ "log_id"=>3168318,
163
+ "state"=>"failed",
164
+ "number"=>"6180.1",
165
+ "config"=>
166
+ {"script"=>"ci/travis.rb",
167
+ "before_install"=>["gem install bundler"],
168
+ "rvm"=>"1.9.3",
169
+ "env"=>"GEM=railties",
170
+ "notifications"=>
171
+ {"email"=>false,
172
+ "irc"=>
173
+ {"on_success"=>"change",
174
+ "on_failure"=>"always",
175
+ "channels"=>["irc.freenode.org#rails-contrib"]},
176
+ "campfire"=>
177
+ {"on_success"=>"change",
178
+ "on_failure"=>"always",
179
+ "rooms"=>
180
+ [{"secure"=>
181
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
182
+ "bundler_args"=>"--path vendor/bundle",
183
+ ".result"=>"configured"},
184
+ "started_at"=>"2013-01-13T15:55:59Z",
185
+ "finished_at"=>"2013-01-13T16:10:15Z",
186
+ "queue"=>"builds.rails",
187
+ "allow_failure"=>false,
188
+ "tags"=>""},
189
+ {"id"=>4125097,
190
+ "repository_id"=>891,
191
+ "build_id"=>4125095,
192
+ "commit_id"=>1201631,
193
+ "log_id"=>3168319,
194
+ "state"=>"passed",
195
+ "number"=>"6180.2",
196
+ "config"=>
197
+ {"script"=>"ci/travis.rb",
198
+ "before_install"=>["gem install bundler"],
199
+ "rvm"=>"1.9.3",
200
+ "env"=>"GEM=ap,am,amo,as",
201
+ "notifications"=>
202
+ {"email"=>false,
203
+ "irc"=>
204
+ {"on_success"=>"change",
205
+ "on_failure"=>"always",
206
+ "channels"=>["irc.freenode.org#rails-contrib"]},
207
+ "campfire"=>
208
+ {"on_success"=>"change",
209
+ "on_failure"=>"always",
210
+ "rooms"=>
211
+ [{"secure"=>
212
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
213
+ "bundler_args"=>"--path vendor/bundle",
214
+ ".result"=>"configured"},
215
+ "started_at"=>"2013-01-13T15:55:59Z",
216
+ "finished_at"=>"2013-01-13T16:11:04Z",
217
+ "queue"=>"builds.rails",
218
+ "allow_failure"=>false,
219
+ "tags"=>""},
220
+ {"id"=>4125098,
221
+ "repository_id"=>891,
222
+ "build_id"=>4125095,
223
+ "commit_id"=>1201631,
224
+ "log_id"=>3168320,
225
+ "state"=>"passed",
226
+ "number"=>"6180.3",
227
+ "config"=>
228
+ {"script"=>"ci/travis.rb",
229
+ "before_install"=>["gem install bundler"],
230
+ "rvm"=>"1.9.3",
231
+ "env"=>"GEM=ar:mysql",
232
+ "notifications"=>
233
+ {"email"=>false,
234
+ "irc"=>
235
+ {"on_success"=>"change",
236
+ "on_failure"=>"always",
237
+ "channels"=>["irc.freenode.org#rails-contrib"]},
238
+ "campfire"=>
239
+ {"on_success"=>"change",
240
+ "on_failure"=>"always",
241
+ "rooms"=>
242
+ [{"secure"=>
243
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
244
+ "bundler_args"=>"--path vendor/bundle",
245
+ ".result"=>"configured"},
246
+ "started_at"=>"2013-01-13T15:55:59Z",
247
+ "finished_at"=>"2013-01-13T16:08:14Z",
248
+ "queue"=>"builds.rails",
249
+ "allow_failure"=>false,
250
+ "tags"=>""},
251
+ {"id"=>4125099,
252
+ "repository_id"=>891,
253
+ "build_id"=>4125095,
254
+ "commit_id"=>1201631,
255
+ "log_id"=>3168321,
256
+ "state"=>"passed",
257
+ "number"=>"6180.4",
258
+ "config"=>
259
+ {"script"=>"ci/travis.rb",
260
+ "before_install"=>["gem install bundler"],
261
+ "rvm"=>"1.9.3",
262
+ "env"=>"GEM=ar:mysql2",
263
+ "notifications"=>
264
+ {"email"=>false,
265
+ "irc"=>
266
+ {"on_success"=>"change",
267
+ "on_failure"=>"always",
268
+ "channels"=>["irc.freenode.org#rails-contrib"]},
269
+ "campfire"=>
270
+ {"on_success"=>"change",
271
+ "on_failure"=>"always",
272
+ "rooms"=>
273
+ [{"secure"=>
274
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
275
+ "bundler_args"=>"--path vendor/bundle",
276
+ ".result"=>"configured"},
277
+ "started_at"=>"2013-01-13T15:55:17Z",
278
+ "finished_at"=>"2013-01-13T16:06:15Z",
279
+ "queue"=>"builds.rails",
280
+ "allow_failure"=>false,
281
+ "tags"=>""},
282
+ {"id"=>4125100,
283
+ "repository_id"=>891,
284
+ "build_id"=>4125095,
285
+ "commit_id"=>1201631,
286
+ "log_id"=>3168322,
287
+ "state"=>"passed",
288
+ "number"=>"6180.5",
289
+ "config"=>
290
+ {"script"=>"ci/travis.rb",
291
+ "before_install"=>["gem install bundler"],
292
+ "rvm"=>"1.9.3",
293
+ "env"=>"GEM=ar:sqlite3",
294
+ "notifications"=>
295
+ {"email"=>false,
296
+ "irc"=>
297
+ {"on_success"=>"change",
298
+ "on_failure"=>"always",
299
+ "channels"=>["irc.freenode.org#rails-contrib"]},
300
+ "campfire"=>
301
+ {"on_success"=>"change",
302
+ "on_failure"=>"always",
303
+ "rooms"=>
304
+ [{"secure"=>
305
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
306
+ "bundler_args"=>"--path vendor/bundle",
307
+ ".result"=>"configured"},
308
+ "started_at"=>"2013-01-13T15:55:58Z",
309
+ "finished_at"=>"2013-01-13T16:08:07Z",
310
+ "queue"=>"builds.rails",
311
+ "allow_failure"=>false,
312
+ "tags"=>""},
313
+ {"id"=>4125101,
314
+ "repository_id"=>891,
315
+ "build_id"=>4125095,
316
+ "commit_id"=>1201631,
317
+ "log_id"=>3168323,
318
+ "state"=>"passed",
319
+ "number"=>"6180.6",
320
+ "config"=>
321
+ {"script"=>"ci/travis.rb",
322
+ "before_install"=>["gem install bundler"],
323
+ "rvm"=>"1.9.3",
324
+ "env"=>"GEM=ar:postgresql",
325
+ "notifications"=>
326
+ {"email"=>false,
327
+ "irc"=>
328
+ {"on_success"=>"change",
329
+ "on_failure"=>"always",
330
+ "channels"=>["irc.freenode.org#rails-contrib"]},
331
+ "campfire"=>
332
+ {"on_success"=>"change",
333
+ "on_failure"=>"always",
334
+ "rooms"=>
335
+ [{"secure"=>
336
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
337
+ "bundler_args"=>"--path vendor/bundle",
338
+ ".result"=>"configured"},
339
+ "started_at"=>"2013-01-13T15:55:28Z",
340
+ "finished_at"=>"2013-01-13T16:08:41Z",
341
+ "queue"=>"builds.rails",
342
+ "allow_failure"=>false,
343
+ "tags"=>""},
344
+ {"id"=>4125102,
345
+ "repository_id"=>891,
346
+ "build_id"=>4125095,
347
+ "commit_id"=>1201631,
348
+ "log_id"=>3168324,
349
+ "state"=>"failed",
350
+ "number"=>"6180.7",
351
+ "config"=>
352
+ {"script"=>"ci/travis.rb",
353
+ "before_install"=>["gem install bundler"],
354
+ "rvm"=>"2.0.0",
355
+ "env"=>"GEM=railties",
356
+ "notifications"=>
357
+ {"email"=>false,
358
+ "irc"=>
359
+ {"on_success"=>"change",
360
+ "on_failure"=>"always",
361
+ "channels"=>["irc.freenode.org#rails-contrib"]},
362
+ "campfire"=>
363
+ {"on_success"=>"change",
364
+ "on_failure"=>"always",
365
+ "rooms"=>
366
+ [{"secure"=>
367
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
368
+ "bundler_args"=>"--path vendor/bundle",
369
+ ".result"=>"configured"},
370
+ "started_at"=>"2013-01-13T15:55:17Z",
371
+ "finished_at"=>"2013-01-13T15:56:16Z",
372
+ "queue"=>"builds.rails",
373
+ "allow_failure"=>false,
374
+ "tags"=>""},
375
+ {"id"=>4125103,
376
+ "repository_id"=>891,
377
+ "build_id"=>4125095,
378
+ "commit_id"=>1201631,
379
+ "log_id"=>3168325,
380
+ "state"=>"failed",
381
+ "number"=>"6180.8",
382
+ "config"=>
383
+ {"script"=>"ci/travis.rb",
384
+ "before_install"=>["gem install bundler"],
385
+ "rvm"=>"2.0.0",
386
+ "env"=>"GEM=ap,am,amo,as",
387
+ "notifications"=>
388
+ {"email"=>false,
389
+ "irc"=>
390
+ {"on_success"=>"change",
391
+ "on_failure"=>"always",
392
+ "channels"=>["irc.freenode.org#rails-contrib"]},
393
+ "campfire"=>
394
+ {"on_success"=>"change",
395
+ "on_failure"=>"always",
396
+ "rooms"=>
397
+ [{"secure"=>
398
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
399
+ "bundler_args"=>"--path vendor/bundle",
400
+ ".result"=>"configured"},
401
+ "started_at"=>"2013-01-13T15:55:58Z",
402
+ "finished_at"=>"2013-01-13T15:56:57Z",
403
+ "queue"=>"builds.rails",
404
+ "allow_failure"=>false,
405
+ "tags"=>""},
406
+ {"id"=>4125104,
407
+ "repository_id"=>891,
408
+ "build_id"=>4125095,
409
+ "commit_id"=>1201631,
410
+ "log_id"=>3168326,
411
+ "state"=>"failed",
412
+ "number"=>"6180.9",
413
+ "config"=>
414
+ {"script"=>"ci/travis.rb",
415
+ "before_install"=>["gem install bundler"],
416
+ "rvm"=>"2.0.0",
417
+ "env"=>"GEM=ar:mysql",
418
+ "notifications"=>
419
+ {"email"=>false,
420
+ "irc"=>
421
+ {"on_success"=>"change",
422
+ "on_failure"=>"always",
423
+ "channels"=>["irc.freenode.org#rails-contrib"]},
424
+ "campfire"=>
425
+ {"on_success"=>"change",
426
+ "on_failure"=>"always",
427
+ "rooms"=>
428
+ [{"secure"=>
429
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
430
+ "bundler_args"=>"--path vendor/bundle",
431
+ ".result"=>"configured"},
432
+ "started_at"=>"2013-01-13T15:55:18Z",
433
+ "finished_at"=>"2013-01-13T15:56:16Z",
434
+ "queue"=>"builds.rails",
435
+ "allow_failure"=>false,
436
+ "tags"=>""},
437
+ {"id"=>4125105,
438
+ "repository_id"=>891,
439
+ "build_id"=>4125095,
440
+ "commit_id"=>1201631,
441
+ "log_id"=>3168327,
442
+ "state"=>"failed",
443
+ "number"=>"6180.10",
444
+ "config"=>
445
+ {"script"=>"ci/travis.rb",
446
+ "before_install"=>["gem install bundler"],
447
+ "rvm"=>"2.0.0",
448
+ "env"=>"GEM=ar:mysql2",
449
+ "notifications"=>
450
+ {"email"=>false,
451
+ "irc"=>
452
+ {"on_success"=>"change",
453
+ "on_failure"=>"always",
454
+ "channels"=>["irc.freenode.org#rails-contrib"]},
455
+ "campfire"=>
456
+ {"on_success"=>"change",
457
+ "on_failure"=>"always",
458
+ "rooms"=>
459
+ [{"secure"=>
460
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
461
+ "bundler_args"=>"--path vendor/bundle",
462
+ ".result"=>"configured"},
463
+ "started_at"=>"2013-01-13T15:55:27Z",
464
+ "finished_at"=>"2013-01-13T15:56:23Z",
465
+ "queue"=>"builds.rails",
466
+ "allow_failure"=>false,
467
+ "tags"=>""},
468
+ {"id"=>4125106,
469
+ "repository_id"=>891,
470
+ "build_id"=>4125095,
471
+ "commit_id"=>1201631,
472
+ "log_id"=>3168328,
473
+ "state"=>"failed",
474
+ "number"=>"6180.11",
475
+ "config"=>
476
+ {"script"=>"ci/travis.rb",
477
+ "before_install"=>["gem install bundler"],
478
+ "rvm"=>"2.0.0",
479
+ "env"=>"GEM=ar:sqlite3",
480
+ "notifications"=>
481
+ {"email"=>false,
482
+ "irc"=>
483
+ {"on_success"=>"change",
484
+ "on_failure"=>"always",
485
+ "channels"=>["irc.freenode.org#rails-contrib"]},
486
+ "campfire"=>
487
+ {"on_success"=>"change",
488
+ "on_failure"=>"always",
489
+ "rooms"=>
490
+ [{"secure"=>
491
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
492
+ "bundler_args"=>"--path vendor/bundle",
493
+ ".result"=>"configured"},
494
+ "started_at"=>"2013-01-13T15:56:47Z",
495
+ "finished_at"=>"2013-01-13T15:57:43Z",
496
+ "queue"=>"builds.rails",
497
+ "allow_failure"=>false,
498
+ "tags"=>""},
499
+ {"id"=>4125107,
500
+ "repository_id"=>891,
501
+ "build_id"=>4125095,
502
+ "commit_id"=>1201631,
503
+ "log_id"=>3168329,
504
+ "state"=>"failed",
505
+ "number"=>"6180.12",
506
+ "config"=>
507
+ {"script"=>"ci/travis.rb",
508
+ "before_install"=>["gem install bundler"],
509
+ "rvm"=>"2.0.0",
510
+ "env"=>"GEM=ar:postgresql",
511
+ "notifications"=>
512
+ {"email"=>false,
513
+ "irc"=>
514
+ {"on_success"=>"change",
515
+ "on_failure"=>"always",
516
+ "channels"=>["irc.freenode.org#rails-contrib"]},
517
+ "campfire"=>
518
+ {"on_success"=>"change",
519
+ "on_failure"=>"always",
520
+ "rooms"=>
521
+ [{"secure"=>
522
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
523
+ "bundler_args"=>"--path vendor/bundle",
524
+ ".result"=>"configured"},
525
+ "started_at"=>"2013-01-13T15:56:54Z",
526
+ "finished_at"=>"2013-01-13T15:57:49Z",
527
+ "queue"=>"builds.rails",
528
+ "allow_failure"=>false,
529
+ "tags"=>""}]}.to_json
530
+ end
531
+
532
+ get '/builds/' do
533
+ return {"builds"=>[]}.to_json if params[:after_number]
534
+ {"builds"=>
535
+ [{"id"=>4125095,
536
+ "repository_id"=>891,
537
+ "commit_id"=>1201631,
538
+ "number"=>"6180",
539
+ "pull_request"=>false,
540
+ "config"=>
541
+ {"script"=>"ci/travis.rb",
542
+ "before_install"=>["gem install bundler"],
543
+ "rvm"=>["1.9.3", "2.0.0"],
544
+ "env"=>
545
+ ["GEM=railties",
546
+ "GEM=ap,am,amo,as",
547
+ "GEM=ar:mysql",
548
+ "GEM=ar:mysql2",
549
+ "GEM=ar:sqlite3",
550
+ "GEM=ar:postgresql"],
551
+ "notifications"=>
552
+ {"email"=>false,
553
+ "irc"=>
554
+ {"on_success"=>"change",
555
+ "on_failure"=>"always",
556
+ "channels"=>["irc.freenode.org#rails-contrib"]},
557
+ "campfire"=>
558
+ {"on_success"=>"change",
559
+ "on_failure"=>"always",
560
+ "rooms"=>
561
+ [{"secure"=>
562
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
563
+ "bundler_args"=>"--path vendor/bundle",
564
+ ".result"=>"configured"},
565
+ "state"=>"failed",
566
+ "started_at"=>"2013-01-13T15:55:17Z",
567
+ "finished_at"=>nil,
568
+ "duration"=>5019,
569
+ "job_ids"=>
570
+ [4125096,
571
+ 4125097,
572
+ 4125098,
573
+ 4125099,
574
+ 4125100,
575
+ 4125101,
576
+ 4125102,
577
+ 4125103,
578
+ 4125104,
579
+ 4125105,
580
+ 4125106,
581
+ 4125107]}],
582
+ "commits"=>
583
+ [{"id"=>1201631,
584
+ "sha"=>"a0265b98f16c6e33be32aa3f57231d1189302400",
585
+ "branch"=>"master",
586
+ "message"=>"Associaton -> Association",
587
+ "committed_at"=>"2013-01-13T15:43:24Z",
588
+ "author_name"=>"Steve Klabnik",
589
+ "author_email"=>"steve@steveklabnik.com",
590
+ "committer_name"=>"Steve Klabnik",
591
+ "committer_email"=>"steve@steveklabnik.com",
592
+ "compare_url"=>
593
+ "https://github.com/rails/rails/compare/6581d798e830...a0265b98f16c"}]}.to_json
594
+ end
595
+
596
+ get '/jobs/4125096' do
597
+ {"job"=>
598
+ {"id"=>4125096,
599
+ "repository_id"=>891,
600
+ "repository_slug"=>"rails/rails",
601
+ "build_id"=>4125095,
602
+ "commit_id"=>1201631,
603
+ "log_id"=>3168318,
604
+ "number"=>"6180.1",
605
+ "config"=>
606
+ {"script"=>"ci/travis.rb",
607
+ "before_install"=>["gem install bundler"],
608
+ "rvm"=>"1.9.3",
609
+ "env"=>"GEM=railties",
610
+ "notifications"=>
611
+ {"email"=>false,
612
+ "irc"=>
613
+ {"on_success"=>"change",
614
+ "on_failure"=>"always",
615
+ "channels"=>["irc.freenode.org#rails-contrib"]},
616
+ "campfire"=>
617
+ {"on_success"=>"change",
618
+ "on_failure"=>"always",
619
+ "rooms"=>
620
+ [{"secure"=>
621
+ "YA1alef1ESHWGFNVwvmVGCkMe4cUy4j+UcNvMUESraceiAfVyRMAovlQBGs6\n9kBRm7DHYBUXYC2ABQoJbQRLDr/1B5JPf/M8+Qd7BKu8tcDC03U01SMHFLpO\naOs/HLXcDxtnnpL07tGVsm0zhMc5N8tq4/L3SHxK7Vi+TacwQzI="}]}},
622
+ "bundler_args"=>"--path vendor/bundle",
623
+ ".result"=>"configured"},
624
+ "state"=>"failed",
625
+ "started_at"=>"2013-01-13T15:55:59Z",
626
+ "finished_at"=>"2013-01-13T16:10:15Z",
627
+ "queue"=>"builds.rails",
628
+ "allow_failure"=>false,
629
+ "tags"=>""},
630
+ "commit"=>
631
+ {"id"=>1201631,
632
+ "sha"=>"a0265b98f16c6e33be32aa3f57231d1189302400",
633
+ "branch"=>"master",
634
+ "message"=>"Associaton -> Association",
635
+ "committed_at"=>"2013-01-13T15:43:24Z",
636
+ "author_name"=>"Steve Klabnik",
637
+ "author_email"=>"steve@steveklabnik.com",
638
+ "committer_name"=>"Steve Klabnik",
639
+ "committer_email"=>"steve@steveklabnik.com",
640
+ "compare_url"=>
641
+ "https://github.com/rails/rails/compare/6581d798e830...a0265b98f16c"}}.to_json
642
+ end
643
+
644
+ get '/repos/' do
645
+ {"repos"=>
646
+ [{"id"=>107495,
647
+ "slug"=>"pypug/django-mango",
648
+ "description"=>"More Mango, less Django!",
649
+ "last_build_id"=>4125823,
650
+ "last_build_number"=>"39",
651
+ "last_build_state"=>"failed",
652
+ "last_build_duration"=>31,
653
+ "last_build_language"=>nil,
654
+ "last_build_started_at"=>"2013-01-13T16:58:43Z",
655
+ "last_build_finished_at"=>"2013-01-13T16:55:08Z"}]}.to_json
656
+ end
657
+
658
+ get '/config' do
659
+ {"config" => {"host" => "travis-ci.org"}}.to_json
660
+ end
661
+
662
+ get '/logs/3168318' do
663
+ {"log"=>
664
+ {"id"=>3168318,
665
+ "job_id"=>4125096,
666
+ "type"=>"Log",
667
+ "body"=>
668
+ "$ export GEM=railties\n"}}.to_json
669
+ end
670
+
671
+ get '/repos/*/travis.rb' do
672
+ # hack hack
673
+ request.path_info = '/repos/rails/rails'
674
+ pass
675
+ end
676
+
677
+ get '/repos/891' do
678
+ request.path_info = '/repos/rails/rails'
679
+ pass
680
+ end
681
+
682
+ get '/repos/rails/rails' do
683
+ {"repo"=>
684
+ {"id"=>891,
685
+ "slug"=>"rails/rails",
686
+ "description"=>settings.rails_description,
687
+ "last_build_id"=>4125095,
688
+ "last_build_number"=>"6180",
689
+ "last_build_state"=>"failed",
690
+ "last_build_duration"=>5019,
691
+ "last_build_language"=>nil,
692
+ "last_build_started_at"=>"2013-01-13T15:55:17Z",
693
+ "last_build_finished_at"=>nil,
694
+ "github_language"=>"Ruby"}}.to_json
695
+ end
696
+
697
+ get '/repos/891/key' do
698
+ {"key"=>RAILS_KEY, "fingerprint"=>"foobar"}.to_json
699
+ end
700
+
701
+ get '/accounts/' do
702
+ {"accounts"=>
703
+ [{'name' => "Konstantin Haase",
704
+ 'login' => 'rkh',
705
+ 'type' => 'user',
706
+ 'repos_count' => 200
707
+ }]}.to_json
708
+ end
709
+
710
+ get '/broadcasts/' do
711
+ {"broadcasts"=>
712
+ [{'id' => 1,
713
+ 'message' => 'Hello!'
714
+ }]}.to_json
715
+ end
716
+
717
+ post '/requests' do
718
+ $params = params
719
+ "{}"
720
+ end
721
+
722
+ post '/:entity/:id/cancel' do
723
+ $params = params
724
+ {}
725
+ end
726
+
727
+ post '/auth/github' do
728
+ halt(403) unless params[:github_token] == 'github_token'
729
+ { 'access_token' => 'token' }.to_json
730
+ end
731
+ end
732
+
733
+ def faraday_adapter
734
+ [:rack, FakeAPI.new]
735
+ end
736
+ end
737
+ end
738
+ end