integrity 0.1.8 → 0.1.9

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.
Files changed (249) hide show
  1. data/README.markdown +7 -0
  2. data/Rakefile +59 -132
  3. data/VERSION.yml +1 -1
  4. data/config/config.ru +29 -0
  5. data/config/config.sample.ru +6 -16
  6. data/config/config.sample.yml +15 -12
  7. data/config/config.yml +34 -0
  8. data/lib/integrity.rb +13 -13
  9. data/lib/integrity/app.rb +138 -0
  10. data/lib/integrity/author.rb +39 -0
  11. data/lib/integrity/build.rb +54 -31
  12. data/lib/integrity/commit.rb +71 -0
  13. data/lib/integrity/helpers.rb +3 -3
  14. data/lib/integrity/helpers/authorization.rb +2 -2
  15. data/lib/integrity/helpers/forms.rb +3 -3
  16. data/lib/integrity/helpers/pretty_output.rb +1 -1
  17. data/lib/integrity/helpers/rendering.rb +6 -1
  18. data/lib/integrity/helpers/resources.rb +9 -3
  19. data/lib/integrity/helpers/urls.rb +15 -13
  20. data/lib/integrity/installer.rb +45 -56
  21. data/lib/integrity/migrations.rb +31 -48
  22. data/lib/integrity/notifier.rb +14 -16
  23. data/lib/integrity/notifier/base.rb +29 -19
  24. data/lib/integrity/notifier/test_helpers.rb +100 -0
  25. data/lib/integrity/project.rb +69 -33
  26. data/lib/integrity/project_builder.rb +23 -14
  27. data/lib/integrity/scm/git.rb +15 -14
  28. data/lib/integrity/scm/git/uri.rb +9 -9
  29. data/test/acceptance/api_test.rb +97 -0
  30. data/test/acceptance/browse_project_builds_test.rb +65 -0
  31. data/test/acceptance/browse_project_test.rb +95 -0
  32. data/test/acceptance/build_notifications_test.rb +42 -0
  33. data/test/acceptance/create_project_test.rb +97 -0
  34. data/test/acceptance/delete_project_test.rb +53 -0
  35. data/test/acceptance/edit_project_test.rb +117 -0
  36. data/test/acceptance/error_page_test.rb +18 -0
  37. data/test/acceptance/helpers.rb +2 -0
  38. data/test/acceptance/installer_test.rb +62 -0
  39. data/test/acceptance/manual_build_project_test.rb +82 -0
  40. data/test/acceptance/notifier_test.rb +109 -0
  41. data/test/acceptance/project_syndication_test.rb +30 -0
  42. data/test/acceptance/stylesheet_test.rb +18 -0
  43. data/test/helpers.rb +59 -26
  44. data/test/helpers/acceptance.rb +19 -65
  45. data/test/helpers/acceptance/email_notifier.rb +55 -0
  46. data/test/helpers/acceptance/git_helper.rb +15 -15
  47. data/test/helpers/acceptance/textfile_notifier.rb +3 -3
  48. data/test/helpers/expectations.rb +0 -1
  49. data/test/helpers/expectations/be_a.rb +4 -4
  50. data/test/helpers/expectations/change.rb +5 -5
  51. data/test/helpers/expectations/have.rb +4 -4
  52. data/test/helpers/expectations/predicates.rb +4 -4
  53. data/test/helpers/fixtures.rb +44 -18
  54. data/test/helpers/initial_migration_fixture.sql +44 -0
  55. data/test/unit/build_test.rb +51 -0
  56. data/test/unit/commit_test.rb +83 -0
  57. data/test/unit/helpers_test.rb +56 -0
  58. data/test/unit/integrity_test.rb +18 -0
  59. data/test/unit/migrations_test.rb +56 -0
  60. data/test/unit/notifier_test.rb +123 -0
  61. data/test/unit/project_builder_test.rb +108 -0
  62. data/test/unit/project_test.rb +282 -0
  63. data/test/unit/scm_test.rb +54 -0
  64. data/vendor/webrat/History.txt +306 -0
  65. data/vendor/webrat/MIT-LICENSE.txt +19 -0
  66. data/vendor/webrat/README.rdoc +85 -0
  67. data/vendor/webrat/Rakefile +151 -0
  68. data/vendor/webrat/install.rb +1 -0
  69. data/vendor/webrat/lib/webrat.rb +34 -0
  70. data/vendor/webrat/lib/webrat/core.rb +14 -0
  71. data/vendor/webrat/lib/webrat/core/configuration.rb +98 -0
  72. data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
  73. data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
  74. data/vendor/webrat/lib/webrat/core/elements/field.rb +403 -0
  75. data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
  76. data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
  77. data/vendor/webrat/lib/webrat/core/elements/link.rb +90 -0
  78. data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
  79. data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
  80. data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
  81. data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
  82. data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  83. data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  84. data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
  85. data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
  86. data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
  87. data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
  88. data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +66 -0
  89. data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
  90. data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
  91. data/vendor/webrat/lib/webrat/core/logging.rb +21 -0
  92. data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
  93. data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
  94. data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
  95. data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
  96. data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
  97. data/vendor/webrat/lib/webrat/core/methods.rb +61 -0
  98. data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
  99. data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +50 -0
  100. data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
  101. data/vendor/webrat/lib/webrat/core/session.rb +281 -0
  102. data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
  103. data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
  104. data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
  105. data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
  106. data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
  107. data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
  108. data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  109. data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
  110. data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  111. data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
  112. data/vendor/webrat/lib/webrat/merb.rb +9 -0
  113. data/vendor/webrat/lib/webrat/merb_session.rb +65 -0
  114. data/vendor/webrat/lib/webrat/rack.rb +24 -0
  115. data/vendor/webrat/lib/webrat/rails.rb +105 -0
  116. data/vendor/webrat/lib/webrat/rspec-rails.rb +13 -0
  117. data/vendor/webrat/lib/webrat/selenium.rb +154 -0
  118. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +12 -0
  119. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
  120. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  121. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +9 -0
  122. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  123. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  124. data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
  125. data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
  126. data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
  127. data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
  128. data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  129. data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
  130. data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +247 -0
  131. data/vendor/webrat/lib/webrat/sinatra.rb +44 -0
  132. data/vendor/webrat/spec/fakes/test_session.rb +34 -0
  133. data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
  134. data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
  135. data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  136. data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +18 -0
  137. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  138. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
  139. data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
  140. data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
  141. data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
  142. data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
  143. data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
  144. data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
  145. data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
  146. data/vendor/webrat/spec/integration/merb/config/router.rb +33 -0
  147. data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
  148. data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
  149. data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +32 -0
  150. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  151. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  152. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  153. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
  154. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  155. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  156. data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
  157. data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
  158. data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +39 -0
  159. data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
  160. data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
  161. data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
  162. data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
  163. data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
  164. data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
  165. data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
  166. data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
  167. data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  168. data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  169. data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
  170. data/vendor/webrat/spec/integration/rails/config/routes.rb +14 -0
  171. data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
  172. data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
  173. data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
  174. data/vendor/webrat/spec/integration/rails/script/about +4 -0
  175. data/vendor/webrat/spec/integration/rails/script/console +3 -0
  176. data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
  177. data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
  178. data/vendor/webrat/spec/integration/rails/script/generate +3 -0
  179. data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
  180. data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
  181. data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
  182. data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
  183. data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
  184. data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
  185. data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
  186. data/vendor/webrat/spec/integration/rails/script/runner +3 -0
  187. data/vendor/webrat/spec/integration/rails/script/server +3 -0
  188. data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +80 -0
  189. data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
  190. data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
  191. data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
  192. data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
  193. data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  194. data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  195. data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
  196. data/vendor/webrat/spec/private/core/configuration_spec.rb +104 -0
  197. data/vendor/webrat/spec/private/core/field_spec.rb +67 -0
  198. data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
  199. data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
  200. data/vendor/webrat/spec/private/core/session_spec.rb +198 -0
  201. data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
  202. data/vendor/webrat/spec/private/merb/merb_session_spec.rb +42 -0
  203. data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
  204. data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
  205. data/vendor/webrat/spec/private/rails/rails_session_spec.rb +110 -0
  206. data/vendor/webrat/spec/private/selenium/selenium_session_spec.rb +44 -0
  207. data/vendor/webrat/spec/private/selenium/selenium_spec.rb +109 -0
  208. data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
  209. data/vendor/webrat/spec/public/check_spec.rb +191 -0
  210. data/vendor/webrat/spec/public/choose_spec.rb +118 -0
  211. data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
  212. data/vendor/webrat/spec/public/click_button_spec.rb +502 -0
  213. data/vendor/webrat/spec/public/click_link_spec.rb +469 -0
  214. data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
  215. data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
  216. data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +157 -0
  217. data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
  218. data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
  219. data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +135 -0
  220. data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
  221. data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +123 -0
  222. data/vendor/webrat/spec/public/reload_spec.rb +10 -0
  223. data/vendor/webrat/spec/public/save_and_open_spec.rb +51 -0
  224. data/vendor/webrat/spec/public/select_date_spec.rb +88 -0
  225. data/vendor/webrat/spec/public/select_datetime_spec.rb +106 -0
  226. data/vendor/webrat/spec/public/select_spec.rb +246 -0
  227. data/vendor/webrat/spec/public/select_time_spec.rb +79 -0
  228. data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
  229. data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
  230. data/vendor/webrat/spec/public/visit_spec.rb +58 -0
  231. data/vendor/webrat/spec/public/within_spec.rb +177 -0
  232. data/vendor/webrat/spec/rcov.opts +1 -0
  233. data/vendor/webrat/spec/spec.opts +2 -0
  234. data/vendor/webrat/spec/spec_helper.rb +50 -0
  235. data/vendor/webrat/vendor/selenium-server.jar +0 -0
  236. data/views/_commit_info.haml +24 -0
  237. data/views/build.haml +2 -2
  238. data/views/error.haml +4 -3
  239. data/views/home.haml +3 -5
  240. data/views/integrity.sass +19 -6
  241. data/views/new.haml +6 -6
  242. data/views/project.builder +9 -9
  243. data/views/project.haml +14 -12
  244. metadata +319 -124
  245. data/app.rb +0 -138
  246. data/integrity.gemspec +0 -76
  247. data/lib/integrity/core_ext/string.rb +0 -5
  248. data/test/helpers/expectations/have_tag.rb +0 -128
  249. data/views/_build_info.haml +0 -18
data/app.rb DELETED
@@ -1,138 +0,0 @@
1
- require "sinatra"
2
-
3
- require File.dirname(__FILE__) + "/lib/integrity"
4
- require "integrity/helpers"
5
-
6
- set :root, Integrity.root
7
- set :public, Integrity.root / "public"
8
- set :views, Integrity.root / "views"
9
-
10
- enable :sessions
11
-
12
- include Integrity
13
-
14
- configure :development do
15
- config = Integrity.root / "config" / "config.yml"
16
- Integrity.config = config if File.exists? config
17
- end
18
-
19
- configure do
20
- Integrity.new
21
- end
22
-
23
- not_found do
24
- status 404
25
- show :not_found, :title => "lost, are we?"
26
- end
27
-
28
- error do
29
- @error = request.env['sinatra.error']
30
- status 500
31
- show :error, :title => "something has gone terribly wrong"
32
- end
33
-
34
- before do
35
- # The browser only sends http auth data for requests that are explicitly
36
- # required to do so. This way we get the real values of +#logged_in?+ and
37
- # +#current_user+
38
- login_required if session[:user]
39
- end
40
-
41
- get "/" do
42
- @projects = Project.only_public_unless(authorized?)
43
- show :home, :title => "projects"
44
- end
45
-
46
- get "/login" do
47
- login_required
48
- session[:user] = current_user
49
- redirect root_url
50
- end
51
-
52
- get "/new" do
53
- login_required
54
-
55
- @project = Project.new
56
- show :new, :title => ["projects", "new project"]
57
- end
58
-
59
- post "/" do
60
- login_required
61
-
62
- @project = Project.new(params[:project_data])
63
- if @project.save
64
- @project.enable_notifiers(params["enabled_notifiers[]"], params["notifiers"])
65
- redirect project_url(@project)
66
- else
67
- show :new, :title => ["projects", "new project"]
68
- end
69
- end
70
-
71
- get "/:project" do
72
- login_required unless current_project.public?
73
- show :project, :title => ["projects", current_project.name]
74
- end
75
-
76
- get "/:project.atom" do
77
- login_required unless current_project.public?
78
- response["Content-Type"] = "application/rss+xml; charset=utf-8"
79
- builder :project
80
- end
81
-
82
- put "/:project" do
83
- login_required
84
-
85
- if current_project.update_attributes(params[:project_data])
86
- current_project.enable_notifiers(params["enabled_notifiers"], params["notifiers"])
87
- redirect project_url(current_project)
88
- else
89
- show :new, :title => ["projects", current_project.permalink, "edit"]
90
- end
91
- end
92
-
93
- delete "/:project" do
94
- login_required
95
-
96
- current_project.destroy
97
- redirect root_url
98
- end
99
-
100
- get "/:project/edit" do
101
- login_required
102
-
103
- show :new, :title => ["projects", current_project.permalink, "edit"]
104
- end
105
-
106
- post "/:project/push" do
107
- login_required
108
-
109
- content_type "text/plain"
110
-
111
- begin
112
- current_project.push(params[:payload])
113
- "Thanks, build started."
114
- rescue JSON::ParserError => exception
115
- throw :halt, [422, exception.to_s]
116
- end
117
- end
118
-
119
- post "/:project/builds" do
120
- login_required
121
-
122
- current_project.build
123
- redirect project_url(@project)
124
- end
125
-
126
- get "/:project/builds/:build" do
127
- login_required unless current_project.public?
128
- show :build, :title => ["projects", current_project.permalink, current_build.short_commit_identifier]
129
- end
130
-
131
- get "/integrity.css" do
132
- response["Content-Type"] = "text/css; charset=utf-8"
133
- sass :integrity
134
- end
135
-
136
- helpers do
137
- include Helpers
138
- end
@@ -1,76 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{integrity}
5
- s.version = "0.1.8"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Nicol\303\241s Sanguinetti", "Simon Rozet"]
9
- s.date = %q{2009-02-12}
10
- s.default_executable = %q{integrity}
11
- s.description = %q{Your Friendly Continuous Integration server. Easy, fun and painless!}
12
- s.email = %q{contacto@nicolassanguinetti.info}
13
- s.executables = ["integrity"]
14
- s.files = ["README.markdown", "Rakefile", "VERSION.yml", "app.rb", "bin/integrity", "config/config.sample.ru", "config/config.sample.yml", "config/thin.sample.yml", "integrity.gemspec", "lib/integrity.rb", "lib/integrity/build.rb", "lib/integrity/core_ext/object.rb", "lib/integrity/core_ext/string.rb", "lib/integrity/helpers.rb", "lib/integrity/helpers/authorization.rb", "lib/integrity/helpers/breadcrumbs.rb", "lib/integrity/helpers/forms.rb", "lib/integrity/helpers/pretty_output.rb", "lib/integrity/helpers/rendering.rb", "lib/integrity/helpers/resources.rb", "lib/integrity/helpers/urls.rb", "lib/integrity/installer.rb", "lib/integrity/migrations.rb", "lib/integrity/notifier.rb", "lib/integrity/notifier/base.rb", "lib/integrity/project.rb", "lib/integrity/project_builder.rb", "lib/integrity/scm.rb", "lib/integrity/scm/git.rb", "lib/integrity/scm/git/uri.rb", "public/buttons.css", "public/reset.css", "public/spinner.gif", "test/helpers.rb", "test/helpers/acceptance.rb", "test/helpers/acceptance/git_helper.rb", "test/helpers/acceptance/textfile_notifier.rb", "test/helpers/expectations.rb", "test/helpers/expectations/be_a.rb", "test/helpers/expectations/change.rb", "test/helpers/expectations/have.rb", "test/helpers/expectations/have_tag.rb", "test/helpers/expectations/predicates.rb", "test/helpers/fixtures.rb", "views/_build_info.haml", "views/build.haml", "views/error.haml", "views/home.haml", "views/integrity.sass", "views/layout.haml", "views/new.haml", "views/not_found.haml", "views/notifier.haml", "views/project.builder", "views/project.haml", "views/unauthorized.haml"]
15
- s.homepage = %q{http://integrityapp.com}
16
- s.post_install_message = %q{Run `integrity help` for information on how to setup Integrity.}
17
- s.require_paths = ["lib"]
18
- s.rubyforge_project = %q{integrity}
19
- s.rubygems_version = %q{1.3.1}
20
- s.summary = %q{The easy and fun Continuous Integration server}
21
-
22
- if s.respond_to? :specification_version then
23
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
- s.specification_version = 2
25
-
26
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_runtime_dependency(%q<sinatra>, [">= 0.9.0.3"])
28
- s.add_runtime_dependency(%q<haml>, [">= 2.0.0"])
29
- s.add_runtime_dependency(%q<dm-core>, [">= 0.9.5"])
30
- s.add_runtime_dependency(%q<dm-validations>, [">= 0.9.5"])
31
- s.add_runtime_dependency(%q<dm-types>, [">= 0.9.5"])
32
- s.add_runtime_dependency(%q<dm-timestamps>, [">= 0.9.5"])
33
- s.add_runtime_dependency(%q<dm-aggregates>, [">= 0.9.5"])
34
- s.add_runtime_dependency(%q<dm-migrations>, [">= 0.9.5"])
35
- s.add_runtime_dependency(%q<data_objects>, [">= 0.9.5"])
36
- s.add_runtime_dependency(%q<do_sqlite3>, [">= 0.9.5"])
37
- s.add_runtime_dependency(%q<json>, [">= 0"])
38
- s.add_runtime_dependency(%q<foca-sinatra-diddies>, [">= 0.0.2"])
39
- s.add_runtime_dependency(%q<thor>, [">= 0"])
40
- s.add_runtime_dependency(%q<uuidtools>, [">= 0"])
41
- s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 0"])
42
- else
43
- s.add_dependency(%q<sinatra>, [">= 0.9.0.3"])
44
- s.add_dependency(%q<haml>, [">= 2.0.0"])
45
- s.add_dependency(%q<dm-core>, [">= 0.9.5"])
46
- s.add_dependency(%q<dm-validations>, [">= 0.9.5"])
47
- s.add_dependency(%q<dm-types>, [">= 0.9.5"])
48
- s.add_dependency(%q<dm-timestamps>, [">= 0.9.5"])
49
- s.add_dependency(%q<dm-aggregates>, [">= 0.9.5"])
50
- s.add_dependency(%q<dm-migrations>, [">= 0.9.5"])
51
- s.add_dependency(%q<data_objects>, [">= 0.9.5"])
52
- s.add_dependency(%q<do_sqlite3>, [">= 0.9.5"])
53
- s.add_dependency(%q<json>, [">= 0"])
54
- s.add_dependency(%q<foca-sinatra-diddies>, [">= 0.0.2"])
55
- s.add_dependency(%q<thor>, [">= 0"])
56
- s.add_dependency(%q<uuidtools>, [">= 0"])
57
- s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
58
- end
59
- else
60
- s.add_dependency(%q<sinatra>, [">= 0.9.0.3"])
61
- s.add_dependency(%q<haml>, [">= 2.0.0"])
62
- s.add_dependency(%q<dm-core>, [">= 0.9.5"])
63
- s.add_dependency(%q<dm-validations>, [">= 0.9.5"])
64
- s.add_dependency(%q<dm-types>, [">= 0.9.5"])
65
- s.add_dependency(%q<dm-timestamps>, [">= 0.9.5"])
66
- s.add_dependency(%q<dm-aggregates>, [">= 0.9.5"])
67
- s.add_dependency(%q<dm-migrations>, [">= 0.9.5"])
68
- s.add_dependency(%q<data_objects>, [">= 0.9.5"])
69
- s.add_dependency(%q<do_sqlite3>, [">= 0.9.5"])
70
- s.add_dependency(%q<json>, [">= 0"])
71
- s.add_dependency(%q<foca-sinatra-diddies>, [">= 0.0.2"])
72
- s.add_dependency(%q<thor>, [">= 0"])
73
- s.add_dependency(%q<uuidtools>, [">= 0"])
74
- s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
75
- end
76
- end
@@ -1,5 +0,0 @@
1
- class String
2
- def /(other)
3
- File.join(self, other)
4
- end
5
- end
@@ -1,128 +0,0 @@
1
- require 'hpricot'
2
-
3
- # evil hack to duck-type CgiResponse so that nested shoulds can use
4
- # +rspec_on_rails+ matchers without remembering to call to_s on it
5
- #
6
- # e.g.
7
- #
8
- # response.should have_tag("li") do |ul|
9
- # ul.should have_text("List Item") # with hack
10
- # ul.to_s.should have_text("List Item") # without hack
11
- # end
12
- class Hpricot::Elem
13
- alias body to_s
14
- end
15
-
16
- module Matchy::Expectations
17
- class HaveTag < Base
18
- def initialize(test_case, selector, inner_text_or_options, options, &block)
19
- #@expected = expected
20
- @test_case = test_case
21
- @selector = selector
22
-
23
- if Hash === inner_text_or_options
24
- @inner_text = nil
25
- @options = inner_text_or_options
26
- else
27
- @inner_text = inner_text_or_options
28
- @options = options
29
- end
30
- end
31
-
32
- def matches?(actual, &block)
33
- @actual = actual
34
- @doc = hpricot_document(@actual)
35
-
36
- matched_elements = @doc.search(@selector)
37
-
38
- return @options[:count] == 0 if matched_elements.empty?
39
-
40
- matched_elements = filter_on_inner_text(matched_elements) if @inner_text
41
- matched_elements = filter_on_nested_expectations(matched_elements, block) if block
42
-
43
- @actual_count = matched_elements.length
44
-
45
- return false unless acceptable_count?(@actual_count)
46
-
47
- !matched_elements.empty?
48
- end
49
-
50
- def failure_message
51
- explanation = @actual_count ? "but found #{@actual_count}" : "but did not"
52
- "expected\n#{@doc.to_s}\nto have #{failure_count_phrase} #{failure_selector_phrase}, #{explanation}"
53
- end
54
-
55
- def negative_failure_message
56
- explanation = @actual_count ? "but found #{@actual_count}" : "but did"
57
- "expected\n#{@doc.to_s}\nnot to have #{failure_count_phrase} #{failure_selector_phrase}, #{explanation}"
58
- end
59
-
60
- private
61
- def hpricot_document(input)
62
- if Hpricot === input
63
- input
64
- elsif input.respond_to?(:body)
65
- Hpricot(input.body)
66
- else
67
- Hpricot(input.to_s)
68
- end
69
- end
70
-
71
- def filter_on_inner_text(elements)
72
- elements.select do |element|
73
- next(element.inner_text =~ @inner_text) if @inner_text.is_a?(Regexp)
74
- element.inner_text == @inner_text
75
- end
76
- end
77
-
78
- def filter_on_nested_expectations(elements, block)
79
- elements.select do |el|
80
- begin
81
- block.call(el)
82
- rescue NoMethodError
83
- false
84
- else
85
- true
86
- end
87
- end
88
- end
89
-
90
- def acceptable_count?(actual_count)
91
- if @options[:count]
92
- return false unless @options[:count] === actual_count
93
- end
94
- if @options[:minimum]
95
- return false unless actual_count >= @options[:minimum]
96
- end
97
- if @options[:maximum]
98
- return false unless actual_count <= @options[:maximum]
99
- end
100
-
101
- true
102
- end
103
-
104
- def failure_count_phrase
105
- if @options[:count]
106
- "#{@options[:count]} elements matching"
107
- elsif @options[:minimum] || @options[:maximum]
108
- count_explanations = []
109
- count_explanations << "at least #{@options[:minimum]}" if @options[:minimum]
110
- count_explanations << "at most #{@options[:maximum]}" if @options[:maximum]
111
- "#{count_explanations.join(' and ')} elements matching"
112
- else
113
- "an element matching"
114
- end
115
- end
116
-
117
- def failure_selector_phrase
118
- phrase = @selector.inspect
119
- phrase << (@inner_text ? " with inner text #{@inner_text.inspect}" : "")
120
- end
121
- end
122
-
123
- module TestCaseExtensions
124
- def have_tag(selector, inner_text_or_options = nil, options = {}, &block)
125
- Matchy::Expectations::HaveTag.new(self, selector, inner_text_or_options, options, &block)
126
- end
127
- end
128
- end
@@ -1,18 +0,0 @@
1
- %h1<
2
- &== Built #{build.short_commit_identifier} #{build.successful? ? "successfully" : "and failed"}
3
- %blockquote
4
- %p&= build.commit_message
5
- %p.meta<
6
- %span.who<
7
- &== by: #{build.commit_author.name}
8
- |
9
- %span.when{ :title => build.commited_at.iso8601 }<
10
- &= pretty_date build.commited_at
11
- |
12
- %span.what<
13
- &== commit: #{build.commit_identifier}
14
-
15
- %h2 Build Output:
16
- %pre.output
17
- :preserve
18
- #{bash_color_codes h(build.output)}