integrity-integrity 0.1.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/.gitignore +12 -0
  2. data/CHANGES +48 -0
  3. data/README.md +82 -0
  4. data/Rakefile +58 -0
  5. data/bin/integrity +4 -0
  6. data/config/config.sample.ru +21 -0
  7. data/config/config.sample.yml +45 -0
  8. data/config/heroku/.gems +1 -0
  9. data/config/heroku/Rakefile +6 -0
  10. data/config/heroku/config.ru +7 -0
  11. data/config/heroku/integrity-config.rb +15 -0
  12. data/config/thin.sample.yml +13 -0
  13. data/integrity.gemspec +136 -0
  14. data/lib/integrity.rb +77 -0
  15. data/lib/integrity/app.rb +138 -0
  16. data/lib/integrity/author.rb +39 -0
  17. data/lib/integrity/build.rb +52 -0
  18. data/lib/integrity/commit.rb +60 -0
  19. data/lib/integrity/core_ext/object.rb +6 -0
  20. data/lib/integrity/helpers.rb +15 -0
  21. data/lib/integrity/helpers/authorization.rb +33 -0
  22. data/lib/integrity/helpers/breadcrumbs.rb +20 -0
  23. data/lib/integrity/helpers/pretty_output.rb +45 -0
  24. data/lib/integrity/helpers/rendering.rb +49 -0
  25. data/lib/integrity/helpers/resources.rb +19 -0
  26. data/lib/integrity/helpers/urls.rb +59 -0
  27. data/lib/integrity/installer.rb +145 -0
  28. data/lib/integrity/migrations.rb +151 -0
  29. data/lib/integrity/notifier.rb +44 -0
  30. data/lib/integrity/notifier/base.rb +74 -0
  31. data/lib/integrity/notifier/test.rb +52 -0
  32. data/lib/integrity/notifier/test/fixtures.rb +108 -0
  33. data/lib/integrity/notifier/test/hpricot_matcher.rb +38 -0
  34. data/lib/integrity/project.rb +93 -0
  35. data/lib/integrity/project/notifiers.rb +31 -0
  36. data/lib/integrity/project/push.rb +43 -0
  37. data/lib/integrity/project_builder.rb +56 -0
  38. data/lib/integrity/scm.rb +19 -0
  39. data/lib/integrity/scm/git.rb +84 -0
  40. data/lib/integrity/scm/git/uri.rb +57 -0
  41. data/public/buttons.css +82 -0
  42. data/public/reset.css +7 -0
  43. data/public/spinner.gif +0 -0
  44. data/test/acceptance/api_test.rb +97 -0
  45. data/test/acceptance/browse_project_builds_test.rb +65 -0
  46. data/test/acceptance/browse_project_test.rb +99 -0
  47. data/test/acceptance/build_notifications_test.rb +114 -0
  48. data/test/acceptance/create_project_test.rb +97 -0
  49. data/test/acceptance/delete_project_test.rb +53 -0
  50. data/test/acceptance/edit_project_test.rb +117 -0
  51. data/test/acceptance/error_page_test.rb +21 -0
  52. data/test/acceptance/installer_test.rb +81 -0
  53. data/test/acceptance/manual_build_project_test.rb +82 -0
  54. data/test/acceptance/not_found_page_test.rb +29 -0
  55. data/test/acceptance/project_syndication_test.rb +30 -0
  56. data/test/acceptance/stylesheet_test.rb +26 -0
  57. data/test/acceptance/unauthorized_page_test.rb +20 -0
  58. data/test/helpers.rb +75 -0
  59. data/test/helpers/acceptance.rb +82 -0
  60. data/test/helpers/acceptance/email_notifier.rb +52 -0
  61. data/test/helpers/acceptance/git_helper.rb +99 -0
  62. data/test/helpers/acceptance/notifier_helper.rb +47 -0
  63. data/test/helpers/acceptance/textfile_notifier.rb +26 -0
  64. data/test/helpers/expectations.rb +4 -0
  65. data/test/helpers/expectations/be_a.rb +23 -0
  66. data/test/helpers/expectations/change.rb +90 -0
  67. data/test/helpers/expectations/have.rb +105 -0
  68. data/test/helpers/expectations/predicates.rb +37 -0
  69. data/test/helpers/initial_migration_fixture.sql +44 -0
  70. data/test/unit/build_test.rb +72 -0
  71. data/test/unit/commit_test.rb +66 -0
  72. data/test/unit/helpers_test.rb +103 -0
  73. data/test/unit/integrity_test.rb +35 -0
  74. data/test/unit/migrations_test.rb +57 -0
  75. data/test/unit/notifier/base_test.rb +43 -0
  76. data/test/unit/notifier_test.rb +96 -0
  77. data/test/unit/project_builder_test.rb +118 -0
  78. data/test/unit/project_test.rb +344 -0
  79. data/test/unit/scm_test.rb +54 -0
  80. data/views/_commit_info.haml +24 -0
  81. data/views/build.haml +2 -0
  82. data/views/error.haml +37 -0
  83. data/views/home.haml +21 -0
  84. data/views/integrity.sass +400 -0
  85. data/views/layout.haml +29 -0
  86. data/views/new.haml +50 -0
  87. data/views/not_found.haml +31 -0
  88. data/views/notifier.haml +7 -0
  89. data/views/project.builder +21 -0
  90. data/views/project.haml +30 -0
  91. data/views/unauthorized.haml +38 -0
  92. metadata +323 -0
data/views/layout.haml ADDED
@@ -0,0 +1,29 @@
1
+ !!! Strict
2
+ %html{ :lang => "en", :"xml:lang" => "en", :xmlns => "http://www.w3.org/1999/xhtml" }
3
+ %head
4
+ %meta{ :content => "text/html; charset=utf-8", :"http-equiv" => "Content-Type" }
5
+ %meta{ :content => "en", :"http-equiv" => "Content-Language" }
6
+ %title= "#{@title.last} | integrity"
7
+ - stylesheets(:reset, :buttons, :integrity)
8
+ - unless @project.nil?
9
+ %link{ :rel => "alternate", |
10
+ :type => "application/atom+xml", |
11
+ :title => "Build history Atom", |
12
+ :href => "#{project_path(@project)}.atom"} |
13
+
14
+ %body
15
+ #header
16
+ %h1= @title.join(" / ")
17
+ %address.watermark
18
+ checked with
19
+ %a{ :href => "http://integrityapp.com", :title => "The fun continuous integration server" } integrity
20
+ #content= yield
21
+ - if Integrity.config && Integrity.config[:use_basic_auth]
22
+ #footer
23
+ - if authorized?
24
+ Oh, hello
25
+ %strong&= current_user
26
+ - else
27
+ Hey there!
28
+ %a{ :href => root_path("/login") } Log In
29
+ if you have a user
data/views/new.haml ADDED
@@ -0,0 +1,50 @@
1
+ %form{ :method => "post", :action => (@project.new_record? ? root_path("/") : project_path(@project)) }
2
+ - unless @project.new_record?
3
+ .hidden
4
+ %input{ :name => "_method", :type => "hidden", :value => "put" }
5
+
6
+ %p.required{ :class => error_class(@project, :name) }
7
+ %label{ :for => "project_name" }<
8
+ &== Name #{errors_on @project, :name}
9
+ %input.text#project_name{ :name => "project_data[name]", :type => "text", :value => h(@project.name) }
10
+
11
+ %p.required{ :class => error_class(@project, :uri) }
12
+ %label{ :for => "project_repository" }<
13
+ &== Git repository #{errors_on @project, :uri}
14
+ %input.text#project_repository{ :name => "project_data[uri]", :type => "text", :value => h(@project.uri) }
15
+
16
+ %p.normal{ :class => error_class(@project, :branch) }
17
+ %label{ :for => "project_branch" }<
18
+ &== Branch to track #{errors_on @project, :branch}
19
+ %input.text#project_branch{ :name => "project_data[branch]", :type => "text", :value => "master", :value => h(@project.branch) }
20
+
21
+ %p.normal{ :class => error_class(@project, :command) }
22
+ %label{ :for => "project_build_script" }
23
+ &== Build script #{errors_on @project, :command}
24
+ %textarea#project_build_script{ :name => "project_data[command]", :cols => 40, :rows => 2 }
25
+ &== #{@project.command.to_s}
26
+
27
+ %p.normal.checkbox
28
+ %label{ :for => "project_public" } Public project
29
+ %input.hidden{ :name => "project_data[public]", :value => "0", :type => "hidden" }
30
+ %input.checkbox#project_public{ checkbox("project_data[public]", @project.public?) }
31
+
32
+ - notifier_form
33
+
34
+ %p.submit
35
+ %button.positive{ :type => "submit" }= @project.new_record? ? "Create Project" : "Update Project"
36
+
37
+ - unless @project.new_record?
38
+ %h2 Push URL
39
+ %p
40
+ You can use this Push URL with your GitHub project to enable automated continuous integration.
41
+ %p
42
+ %code#push_url= push_url_for(@project)
43
+
44
+ %form{ :method => "post", :action => project_path(@project) }
45
+ .hidden
46
+ %input{ :name => "_method", :type => "hidden", :value => "delete" }
47
+ %h2 Delete this project
48
+ %p.submit.destroy
49
+ This will delete the project and all the builds in the system
50
+ %button.negative{ :type => "submit" } Yes, I'm sure, nuke it
@@ -0,0 +1,31 @@
1
+ .error
2
+ %h1
3
+ Ehm, you seem a bit lost, sir. Maybe going to the
4
+ %a{ :href => root_path("/"), :rel => "home" } list of projects
5
+ will help?
6
+ %dl
7
+ %dt Ouch. This is a 404 error-thingie, right?
8
+ %dd Yeah, you browsed to a page that doesn't exist in this server.
9
+
10
+ %dt What can I do?
11
+ %dd
12
+ As a very good book says on its cover:
13
+ = succeed "." do
14
+ %strong DON'T PANIC
15
+ / if you didn't get the reference you aren't as nerd as you should be
16
+ You should probably just go back to
17
+ %a{ :href => root_path("/"), :rel => "home" } the projects list
18
+ or, alternatively, go
19
+ = succeed "." do
20
+ %a{ :href => request.referer } back from whence you came
21
+
22
+ %dt
23
+ What the hell is
24
+ = succeed "?" do
25
+ %strong Integrity
26
+ %dd
27
+ Integrity is your friendly
28
+ %a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
29
+ server. If you want to know more about us, check our website at
30
+ = succeed "." do
31
+ %a{ :href => "http://integrityapp.com" } integrityapp.com
@@ -0,0 +1,7 @@
1
+ %h2.notifier
2
+ %label
3
+ %input.checkbox{ checkbox("enabled_notifiers[]", enabled, :value => notifier, :id => "enabled_notifiers_#{notifier.downcase}") }
4
+ == #{notifier} Notifications
5
+ %span.warning be aware that no validation will be made on these fields
6
+ %fieldset{ :id => "#{notifier.downcase}_config" }
7
+ = yield
@@ -0,0 +1,21 @@
1
+ xml.instruct!
2
+ xml.feed :xmlns => "http://www.w3.org/2005/Atom" do
3
+ xml.title "Build history for #{@project.name}"
4
+ xml.subtitle @project.uri
5
+ xml.updated @project.last_commit.updated_at
6
+ xml.link :href => "#{project_url(@project)}.atom", :rel => "self"
7
+ xml.id "#{project_url(@project)}.atom"
8
+
9
+ @project.commits.each do |commit|
10
+ xml.entry do
11
+ xml.id commit_url(commit)
12
+ xml.link :href => commit_url(commit), :rel => "alternate", :type => "text/html"
13
+ xml.updated commit.created_at
14
+ xml.published commit.created_at
15
+
16
+ xml.title commit.human_readable_status
17
+ xml.author { xml.name(commit.author.name) }
18
+ xml.content("<div>#{partial(:commit_info, :commit => commit)}</div>", :type => "html")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ #administrative
2
+ %a{ :href => project_path(@project, :edit) } Edit Project
3
+
4
+ - if @project.commits.empty?
5
+ %form.blank_slate{ :action => project_path(@project, :builds), :method => :post }
6
+ %p No builds for this project, buddy
7
+ %h1
8
+ You can request a
9
+ %button{ :type => :submit } manual build
10
+ - else
11
+ - @commit = @project.last_commit
12
+ #last_build{ :class => @commit.status }
13
+ = partial(:commit_info, :commit => @commit)
14
+
15
+ %form{ :action => project_path(@project, :builds), :method => :post }
16
+ %p.submit.manual-build
17
+ %button{ :type => :submit, :title => "Fetch the last commit and build it" }<
18
+ Build the last commit
19
+ in the repository (or rebuild the latest)
20
+
21
+ - unless @project.previous_commits.empty?
22
+ %h2 Previous builds
23
+ %ul#previous_builds
24
+ - @project.previous_commits.each do |commit|
25
+ %li{ :class => commit.status }
26
+ %a{ :href => commit_path(commit) }
27
+ %strong.build<
28
+ &== Build #{commit.short_identifier}
29
+ %span.attribution<
30
+ == by #{commit.author.name}, #{pretty_date commit.committed_at}
@@ -0,0 +1,38 @@
1
+ .error
2
+ %h1
3
+ So... you don't know the password? Hmm... You can
4
+ %a{ :href => root_path("/login") } try again
5
+ or
6
+ = succeed "." do
7
+ %a{ :href => root_path("/"), :rel => "home" } go back
8
+
9
+ %dl
10
+ %dt Er... So... I'm trying to login without a password...
11
+ %dd
12
+ Hey pal, sorry, but I can't let in anyone that isn't
13
+ = succeed "." do
14
+ %strong on the list
15
+ I could lose my job you know? You'll have to come up with
16
+ a valid password :-(
17
+
18
+ %dt What can I do?
19
+ %dd
20
+ This just means that you can't access some part of this Integrity
21
+ server, but that shouldn't let you out of some of the
22
+ %a{ :href => root_path("/") } awesome projects
23
+ hosted here. If this was just a misunderstanding and you
24
+ %strong do
25
+ have a password, then
26
+ = succeed "." do
27
+ %a{ :href => root_path("/login") } click here to try again
28
+
29
+ %dt
30
+ So what the hell is
31
+ = succeed "?" do
32
+ %strong Integrity
33
+ %dd
34
+ Integrity is your friendly
35
+ %a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
36
+ server. If you want to know more about us, check our website at
37
+ = succeed "." do
38
+ %a{ :href => "http://integrityapp.com" } integrityapp.com
metadata ADDED
@@ -0,0 +1,323 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: integrity-integrity
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.9.3
5
+ platform: ruby
6
+ authors:
7
+ - "Nicol\xC3\xA1s Sanguinetti"
8
+ - Simon Rozet
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-04-06 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: sinatra
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.9.1.1
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: sinatra-authorization
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: haml
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 2.0.0
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: data_mapper
48
+ type: :runtime
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.11
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: uuidtools
58
+ type: :runtime
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0"
65
+ version:
66
+ - !ruby/object:Gem::Dependency
67
+ name: bcrypt-ruby
68
+ type: :runtime
69
+ version_requirement:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ - !ruby/object:Gem::Dependency
77
+ name: json
78
+ type: :runtime
79
+ version_requirement:
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ - !ruby/object:Gem::Dependency
87
+ name: thor
88
+ type: :runtime
89
+ version_requirement:
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "0"
95
+ version:
96
+ - !ruby/object:Gem::Dependency
97
+ name: rr
98
+ type: :development
99
+ version_requirement:
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ - !ruby/object:Gem::Dependency
107
+ name: mocha
108
+ type: :development
109
+ version_requirement:
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: "0"
115
+ version:
116
+ - !ruby/object:Gem::Dependency
117
+ name: webrat
118
+ type: :development
119
+ version_requirement:
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ version:
126
+ - !ruby/object:Gem::Dependency
127
+ name: do_sqlite3
128
+ type: :development
129
+ version_requirement:
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: "0"
135
+ version:
136
+ - !ruby/object:Gem::Dependency
137
+ name: dm-sweatshop
138
+ type: :development
139
+ version_requirement:
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: "0"
145
+ version:
146
+ - !ruby/object:Gem::Dependency
147
+ name: ParseTree
148
+ type: :development
149
+ version_requirement:
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ version:
156
+ - !ruby/object:Gem::Dependency
157
+ name: jeremymcanally-context
158
+ type: :development
159
+ version_requirement:
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: "0"
165
+ version:
166
+ - !ruby/object:Gem::Dependency
167
+ name: jeremymcanally-matchy
168
+ type: :development
169
+ version_requirement:
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
175
+ version:
176
+ - !ruby/object:Gem::Dependency
177
+ name: jeremymcanally-pending
178
+ type: :development
179
+ version_requirement:
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: "0"
185
+ version:
186
+ - !ruby/object:Gem::Dependency
187
+ name: foca-storyteller
188
+ type: :development
189
+ version_requirement:
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: "0"
195
+ version:
196
+ description: Your Friendly Continuous Integration server. Easy, fun and painless!
197
+ email: info@integrityapp.com
198
+ executables:
199
+ - integrity
200
+ extensions: []
201
+
202
+ extra_rdoc_files: []
203
+
204
+ files:
205
+ - .gitignore
206
+ - CHANGES
207
+ - README.md
208
+ - Rakefile
209
+ - bin/integrity
210
+ - config/config.sample.ru
211
+ - config/config.sample.yml
212
+ - config/heroku/.gems
213
+ - config/heroku/Rakefile
214
+ - config/heroku/config.ru
215
+ - config/heroku/integrity-config.rb
216
+ - config/thin.sample.yml
217
+ - integrity.gemspec
218
+ - lib/integrity.rb
219
+ - lib/integrity/app.rb
220
+ - lib/integrity/author.rb
221
+ - lib/integrity/build.rb
222
+ - lib/integrity/commit.rb
223
+ - lib/integrity/core_ext/object.rb
224
+ - lib/integrity/helpers.rb
225
+ - lib/integrity/helpers/authorization.rb
226
+ - lib/integrity/helpers/breadcrumbs.rb
227
+ - lib/integrity/helpers/pretty_output.rb
228
+ - lib/integrity/helpers/rendering.rb
229
+ - lib/integrity/helpers/resources.rb
230
+ - lib/integrity/helpers/urls.rb
231
+ - lib/integrity/installer.rb
232
+ - lib/integrity/migrations.rb
233
+ - lib/integrity/notifier.rb
234
+ - lib/integrity/notifier/base.rb
235
+ - lib/integrity/notifier/test.rb
236
+ - lib/integrity/notifier/test/fixtures.rb
237
+ - lib/integrity/notifier/test/hpricot_matcher.rb
238
+ - lib/integrity/project.rb
239
+ - lib/integrity/project/notifiers.rb
240
+ - lib/integrity/project/push.rb
241
+ - lib/integrity/project_builder.rb
242
+ - lib/integrity/scm.rb
243
+ - lib/integrity/scm/git.rb
244
+ - lib/integrity/scm/git/uri.rb
245
+ - public/buttons.css
246
+ - public/reset.css
247
+ - public/spinner.gif
248
+ - test/acceptance/api_test.rb
249
+ - test/acceptance/browse_project_builds_test.rb
250
+ - test/acceptance/browse_project_test.rb
251
+ - test/acceptance/build_notifications_test.rb
252
+ - test/acceptance/create_project_test.rb
253
+ - test/acceptance/delete_project_test.rb
254
+ - test/acceptance/edit_project_test.rb
255
+ - test/acceptance/error_page_test.rb
256
+ - test/acceptance/installer_test.rb
257
+ - test/acceptance/manual_build_project_test.rb
258
+ - test/acceptance/not_found_page_test.rb
259
+ - test/acceptance/project_syndication_test.rb
260
+ - test/acceptance/stylesheet_test.rb
261
+ - test/acceptance/unauthorized_page_test.rb
262
+ - test/helpers.rb
263
+ - test/helpers/acceptance.rb
264
+ - test/helpers/acceptance/email_notifier.rb
265
+ - test/helpers/acceptance/git_helper.rb
266
+ - test/helpers/acceptance/notifier_helper.rb
267
+ - test/helpers/acceptance/textfile_notifier.rb
268
+ - test/helpers/expectations.rb
269
+ - test/helpers/expectations/be_a.rb
270
+ - test/helpers/expectations/change.rb
271
+ - test/helpers/expectations/have.rb
272
+ - test/helpers/expectations/predicates.rb
273
+ - test/helpers/initial_migration_fixture.sql
274
+ - test/unit/build_test.rb
275
+ - test/unit/commit_test.rb
276
+ - test/unit/helpers_test.rb
277
+ - test/unit/integrity_test.rb
278
+ - test/unit/migrations_test.rb
279
+ - test/unit/notifier/base_test.rb
280
+ - test/unit/notifier_test.rb
281
+ - test/unit/project_builder_test.rb
282
+ - test/unit/project_test.rb
283
+ - test/unit/scm_test.rb
284
+ - views/_commit_info.haml
285
+ - views/build.haml
286
+ - views/error.haml
287
+ - views/home.haml
288
+ - views/integrity.sass
289
+ - views/layout.haml
290
+ - views/new.haml
291
+ - views/not_found.haml
292
+ - views/notifier.haml
293
+ - views/project.builder
294
+ - views/project.haml
295
+ - views/unauthorized.haml
296
+ has_rdoc: false
297
+ homepage: http://integrityapp.com
298
+ post_install_message: Run `integrity help` for information on how to setup Integrity.
299
+ rdoc_options: []
300
+
301
+ require_paths:
302
+ - lib
303
+ required_ruby_version: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: "0"
308
+ version:
309
+ required_rubygems_version: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: "0"
314
+ version:
315
+ requirements: []
316
+
317
+ rubyforge_project: integrity
318
+ rubygems_version: 1.2.0
319
+ signing_key:
320
+ specification_version: 2
321
+ summary: The easy and fun Continuous Integration server
322
+ test_files: []
323
+