integrity-integrity 0.1.9.3 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +35 -0
- data/CHANGES +21 -3
- data/LICENSE +20 -0
- data/README.md +10 -52
- data/integrity.gemspec +6 -3
- data/lib/integrity.rb +2 -0
- data/lib/integrity/helpers/urls.rb +3 -3
- data/lib/integrity/installer.rb +3 -2
- data/lib/integrity/migrations.rb +23 -2
- data/lib/integrity/notifier.rb +1 -1
- data/lib/integrity/project.rb +2 -0
- data/test/acceptance/build_notifications_test.rb +26 -2
- data/test/acceptance/manual_build_project_test.rb +1 -1
- data/test/acceptance/notifier_test_test.rb +37 -0
- data/test/unit/helpers_test.rb +7 -0
- data/test/unit/migrations_test.rb +6 -4
- data/test/unit/project_test.rb +18 -2
- data/views/project.haml +2 -3
- metadata +6 -3
data/AUTHORS
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
Integrity is maintained by Nicolás Sanguinetti and Simon Rozet.
|
2
|
+
|
3
|
+
Thanks to the following people for their feedbacks, ideas and patches :
|
4
|
+
|
5
|
+
* Bodaniel Jeanes
|
6
|
+
* James Golick
|
7
|
+
* Wilson Bilkovich
|
8
|
+
* Mislav Marohnić
|
9
|
+
* Miles Z. Sterrett
|
10
|
+
* Kyle Hargraves
|
11
|
+
* Josh Nichols
|
12
|
+
* Jeremy Hinegardner
|
13
|
+
* Chris Wanstrath
|
14
|
+
* Will Leinweber
|
15
|
+
* Pier-Hugues Pellerin
|
16
|
+
* Justin Knowlden
|
17
|
+
* Elliott Cable
|
18
|
+
* dbr
|
19
|
+
* Scott Taylor
|
20
|
+
* Jeff Whitmire
|
21
|
+
* Diego Algorta
|
22
|
+
* Eric Mill
|
23
|
+
* Pat Nakajima
|
24
|
+
* Nick Quaranto
|
25
|
+
* Levent Ali
|
26
|
+
* Jeff Schoolcraft
|
27
|
+
* James Adam
|
28
|
+
* Harry Vangberg
|
29
|
+
* Guilherme Chapiewski
|
30
|
+
* David Dollar
|
31
|
+
* Corey Donohoe
|
32
|
+
* Christopher Redinger
|
33
|
+
* Alexander Lang
|
34
|
+
|
35
|
+
NOTE: Please let us know if your name is missing
|
data/CHANGES
CHANGED
@@ -1,8 +1,26 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.10 / 2009-05-14
|
2
2
|
====================
|
3
3
|
|
4
|
-
*
|
5
|
-
|
4
|
+
* Bundle the NULL commit author/message fix as a migration
|
5
|
+
|
6
|
+
* Fix issue with stale notifier. See 693c95e for details
|
7
|
+
|
8
|
+
* Rename the "Build the last commit" button to "Fetch and build"
|
9
|
+
|
10
|
+
* Fix the rebuild button (Eric Mill)
|
11
|
+
|
12
|
+
* Various improvements to the Heroku install (Miles Z. Sterrett)
|
13
|
+
|
14
|
+
* Documentation to the default config.yml for the
|
15
|
+
:build_all_commits option. (Jeff Whitmire)
|
16
|
+
|
17
|
+
* `integrity launch` now saves the database into $HOME/.integrity.sqlite3
|
18
|
+
|
19
|
+
* Changed the Notifier::Test API. Notifiers tests are expected
|
20
|
+
to break. That API is still not defined and might change at
|
21
|
+
any time. See [#130] to discuss this.
|
22
|
+
|
23
|
+
* Send notifications to enabled notifiers only
|
6
24
|
|
7
25
|
0.1.9.3 / 2009-04-06
|
8
26
|
====================
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008, 2009 Nicolás Sanguinetti <http://nicolassanguinetti.info>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -11,9 +11,9 @@ Integrity
|
|
11
11
|
Try it!
|
12
12
|
-------
|
13
13
|
|
14
|
-
$ git clone git://github.com/
|
14
|
+
$ git clone git://github.com/integrity/integrity.git
|
15
15
|
$ rake launch
|
16
|
-
|
16
|
+
$ open http://0.0.0.0:4567/
|
17
17
|
|
18
18
|
Run the test suite
|
19
19
|
------------------
|
@@ -24,59 +24,17 @@ Run the test suite
|
|
24
24
|
`gem build integrity.gemspec && gem install *.gem --development`.
|
25
25
|
3. Run the test suite: `rake test`
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
Why we don't `require "rubygems"`
|
28
|
+
---------------------------------
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
* [Elliott Cable][ec]
|
34
|
-
* [Corey Donohoe][atmos]
|
35
|
-
* [Kyle Hargraves][kyle]
|
36
|
-
* [Pier-Hugues Pellerin][ph]
|
37
|
-
* [Simon Rozet][sr]
|
38
|
-
* [Scott Taylor][scott]
|
39
|
-
|
40
|
-
License
|
41
|
-
-------
|
42
|
-
|
43
|
-
(The MIT License)
|
44
|
-
|
45
|
-
Copyright (c) 2008 [Nicolás Sanguinetti][foca], [entp][]
|
46
|
-
|
47
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
48
|
-
a copy of this software and associated documentation files (the
|
49
|
-
'Software'), to deal in the Software without restriction, including
|
50
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
51
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
52
|
-
permit persons to whom the Software is furnished to do so, subject to
|
53
|
-
the following conditions:
|
54
|
-
|
55
|
-
The above copyright notice and this permission notice shall be
|
56
|
-
included in all copies or substantial portions of the Software.
|
57
|
-
|
58
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
59
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
60
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
61
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
62
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
63
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
64
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
30
|
+
We decided to leave that choice up to the user. For more information, please
|
31
|
+
see [Why "require 'rubygems'" In Your Library/App/Tests Is Wrong][rubygems]
|
32
|
+
by [Ryan Tomayko][rtomayko].
|
65
33
|
|
66
34
|
[website]: http://integrityapp.com
|
67
35
|
[demo]: http://builder.integrityapp.com
|
68
|
-
[repo]: http://github.com/
|
36
|
+
[repo]: http://github.com/integrity/integrity
|
69
37
|
[lighthouse]: http://integrity.lighthouseapp.com/projects/14308-integrity
|
70
38
|
[irc-channel]: irc://irc.freenode.net/integrity
|
71
|
-
|
72
|
-
[
|
73
|
-
[entp]: http://entp.com
|
74
|
-
|
75
|
-
[james]: http://github.com/lazyatom
|
76
|
-
[ec]: http://github.com/elliotcabble
|
77
|
-
[atmos]: http://github.com/atmos
|
78
|
-
[kyle]: http://github.com/pd
|
79
|
-
[ph]: http://github.com/ph
|
80
|
-
[sr]: http://purl.org/net/sr/
|
81
|
-
[scott]: http://github.com/smtlaissezfaire
|
82
|
-
|
39
|
+
[rubygems]: http://gist.github.com/54177
|
40
|
+
[rtomayko]: http://tomayko.com/about
|
data/integrity.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "integrity"
|
3
|
-
s.version = "0.1.
|
4
|
-
s.date = "2009-
|
3
|
+
s.version = "0.1.10"
|
4
|
+
s.date = "2009-05-14"
|
5
5
|
|
6
6
|
s.description = "Your Friendly Continuous Integration server. Easy, fun and painless!"
|
7
7
|
s.summary = "The easy and fun Continuous Integration server"
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.has_rdoc = false
|
19
19
|
s.rubygems_version = "1.3.1"
|
20
20
|
|
21
|
-
s.add_dependency "sinatra", ["
|
21
|
+
s.add_dependency "sinatra", ["= 0.9.1.1"]
|
22
22
|
s.add_dependency "sinatra-authorization"
|
23
23
|
s.add_dependency "haml", [">= 2.0.0"]
|
24
24
|
s.add_dependency "data_mapper", ["= 0.9.11"]
|
@@ -42,7 +42,9 @@ Gem::Specification.new do |s|
|
|
42
42
|
|
43
43
|
s.files = %w[
|
44
44
|
.gitignore
|
45
|
+
AUTHORS
|
45
46
|
CHANGES
|
47
|
+
LICENSE
|
46
48
|
README.md
|
47
49
|
Rakefile
|
48
50
|
bin/integrity
|
@@ -95,6 +97,7 @@ test/acceptance/error_page_test.rb
|
|
95
97
|
test/acceptance/installer_test.rb
|
96
98
|
test/acceptance/manual_build_project_test.rb
|
97
99
|
test/acceptance/not_found_page_test.rb
|
100
|
+
test/acceptance/notifier_test_test.rb
|
98
101
|
test/acceptance/project_syndication_test.rb
|
99
102
|
test/acceptance/stylesheet_test.rb
|
100
103
|
test/acceptance/unauthorized_page_test.rb
|
data/lib/integrity.rb
CHANGED
@@ -17,12 +17,12 @@ module Integrity
|
|
17
17
|
project_url(project, path).path
|
18
18
|
end
|
19
19
|
|
20
|
-
def commit_url(commit)
|
21
|
-
project_url(commit.project, "commits", commit.identifier)
|
20
|
+
def commit_url(commit, *path)
|
21
|
+
project_url(commit.project, ["commits", commit.identifier, *path].flatten)
|
22
22
|
end
|
23
23
|
|
24
24
|
def commit_path(commit, *path)
|
25
|
-
commit_url(commit).path
|
25
|
+
commit_url(commit, *path).path
|
26
26
|
end
|
27
27
|
|
28
28
|
def build_path(build, *path)
|
data/lib/integrity/installer.rb
CHANGED
@@ -47,7 +47,8 @@ module Integrity
|
|
47
47
|
require "thin"
|
48
48
|
require "do_sqlite3"
|
49
49
|
|
50
|
-
options[:port]
|
50
|
+
port = options[:port] || 4567
|
51
|
+
|
51
52
|
config = { :database_uri => "sqlite3://#{ENV["HOME"]}/.integrity.db",
|
52
53
|
:base_uri => "http://0.0.0.0:#{options[:port]}",
|
53
54
|
:export_directory => "/tmp/integrity-exports" }
|
@@ -55,7 +56,7 @@ module Integrity
|
|
55
56
|
|
56
57
|
migrate_db(config)
|
57
58
|
|
58
|
-
Thin::Server.start("0.0.0.0",
|
59
|
+
Thin::Server.start("0.0.0.0", port, Integrity::App)
|
59
60
|
rescue LoadError => boom
|
60
61
|
$stderr << "Make sure thin and do_sqlite3 are insatalled\n\n"
|
61
62
|
raise
|
data/lib/integrity/migrations.rb
CHANGED
@@ -84,8 +84,8 @@ module Integrity
|
|
84
84
|
create_table :integrity_commits do
|
85
85
|
column :id, Integer, :serial => true
|
86
86
|
column :identifier, String, :nullable => false
|
87
|
-
column :message, String, :nullable =>
|
88
|
-
column :author, String, :nullable =>
|
87
|
+
column :message, String, :nullable => false, :length => 255
|
88
|
+
column :author, String, :nullable => false, :length => 255
|
89
89
|
column :committed_at, DateTime, :nullable => false
|
90
90
|
column :created_at, DateTime
|
91
91
|
column :updated_at, DateTime
|
@@ -147,5 +147,26 @@ module Integrity
|
|
147
147
|
# modify_table(:integrity_notifiers) { drop_column :enabled }
|
148
148
|
end
|
149
149
|
end
|
150
|
+
|
151
|
+
migration 4, :nil_commit_metadata do
|
152
|
+
up do
|
153
|
+
all_commits = Commit.all.collect { |c| c.dup }
|
154
|
+
drop_table :integrity_commits
|
155
|
+
|
156
|
+
create_table :integrity_commits do
|
157
|
+
column :id, Integer, :serial => true
|
158
|
+
column :identifier, String, :nullable => false
|
159
|
+
column :message, String, :nullable => true, :length => 255
|
160
|
+
column :author, String, :nullable => true, :length => 255
|
161
|
+
column :committed_at, DateTime, :nullable => false
|
162
|
+
column :created_at, DateTime
|
163
|
+
column :updated_at, DateTime
|
164
|
+
|
165
|
+
column :project_id, Integer
|
166
|
+
end
|
167
|
+
|
168
|
+
all_commits.each { |commit| Commit.create(commit.attributes) }
|
169
|
+
end
|
170
|
+
end
|
150
171
|
end
|
151
172
|
end
|
data/lib/integrity/notifier.rb
CHANGED
data/lib/integrity/project.rb
CHANGED
@@ -17,6 +17,8 @@ module Integrity
|
|
17
17
|
property :created_at, DateTime
|
18
18
|
property :updated_at, DateTime
|
19
19
|
|
20
|
+
default_scope(:default).update(:order => [:name.asc])
|
21
|
+
|
20
22
|
has n, :commits, :class_name => "Integrity::Commit"
|
21
23
|
has n, :notifiers, :class_name => "Integrity::Notifier"
|
22
24
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/../helpers/acceptance"
|
2
2
|
require "helpers/acceptance/notifier_helper"
|
3
|
-
require "helpers/acceptance/textfile_notifier"
|
4
3
|
require "helpers/acceptance/email_notifier"
|
5
4
|
|
6
5
|
class BuildNotificationsTest < Test::Unit::AcceptanceTestCase
|
@@ -14,7 +13,11 @@ class BuildNotificationsTest < Test::Unit::AcceptanceTestCase
|
|
14
13
|
|
15
14
|
before(:each) do
|
16
15
|
# This is needed before any available notifier is unset
|
17
|
-
# in the global #before
|
16
|
+
# in the global #before.
|
17
|
+
# But, we need the reload this one because we remove_const
|
18
|
+
# it in a test case. Sigh.
|
19
|
+
load "helpers/acceptance/textfile_notifier.rb"
|
20
|
+
|
18
21
|
Notifier.register(Integrity::Notifier::Textfile)
|
19
22
|
Notifier.register(Integrity::Notifier::Email)
|
20
23
|
end
|
@@ -79,6 +82,27 @@ class BuildNotificationsTest < Test::Unit::AcceptanceTestCase
|
|
79
82
|
assert_have_email_notifier
|
80
83
|
end
|
81
84
|
|
85
|
+
scenario "an admin enables the Textfile notifier and get rid of it later" do
|
86
|
+
git_repo(:my_test_project).add_successful_commit
|
87
|
+
Project.gen(:my_test_project, :uri => git_repo(:my_test_project).path)
|
88
|
+
|
89
|
+
login_as "admin", "test"
|
90
|
+
visit "/my-test-project"
|
91
|
+
|
92
|
+
click_link "Edit Project"
|
93
|
+
check "enabled_notifiers_textfile"
|
94
|
+
fill_in "File", :with => "/tmp/textfile_notifications.txt"
|
95
|
+
click_button "Update Project"
|
96
|
+
|
97
|
+
Notifier.send(:remove_const, :Textfile)
|
98
|
+
Notifier.available.clear
|
99
|
+
rm_f "/tmp/textfile_notifications.txt"
|
100
|
+
|
101
|
+
click_button "manual build"
|
102
|
+
|
103
|
+
assert ! File.file?("/tmp/textfile_notifications.txt")
|
104
|
+
end
|
105
|
+
|
82
106
|
scenario "an admin configures various notifiers accros multiple projects" do
|
83
107
|
Project.first(:permalink => "integrity").should be_nil
|
84
108
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../helpers/acceptance"
|
2
|
+
require "helpers/acceptance/email_notifier"
|
3
|
+
require "helpers/acceptance/textfile_notifier"
|
4
|
+
|
5
|
+
require "integrity/notifier/test"
|
6
|
+
|
7
|
+
class NotifierTestTest < Test::Unit::TestCase
|
8
|
+
include Integrity::Notifier::Test
|
9
|
+
|
10
|
+
setup do
|
11
|
+
@notifier = Integrity::Notifier::Textfile
|
12
|
+
@config = {"file" => "/tmp/integrity.txt"}
|
13
|
+
|
14
|
+
FileUtils.rm @config["file"] if File.exists?(@config["file"])
|
15
|
+
end
|
16
|
+
|
17
|
+
def notifier
|
18
|
+
"Textfile"
|
19
|
+
end
|
20
|
+
|
21
|
+
test "it provides a formulary to configure options" do
|
22
|
+
assert provides_option?("file")
|
23
|
+
assert provides_option?("file", @config["file"])
|
24
|
+
end
|
25
|
+
|
26
|
+
test "it sends notification" do
|
27
|
+
build = build(:successful)
|
28
|
+
|
29
|
+
@notifier.notify_of_build(build, @config)
|
30
|
+
|
31
|
+
notification = File.read(@config["file"])
|
32
|
+
|
33
|
+
assert notification.start_with?("===")
|
34
|
+
assert notification.include?(build.commit.identifier)
|
35
|
+
assert notification.include?("successful")
|
36
|
+
end
|
37
|
+
end
|
data/test/unit/helpers_test.rb
CHANGED
@@ -61,6 +61,13 @@ class BrowsePublicProjectsTest < Test::Unit::TestCase
|
|
61
61
|
}
|
62
62
|
end
|
63
63
|
|
64
|
+
test "build commit" do
|
65
|
+
assert_equal "/ci/foo-bar/commits/#{@commit.identifier}/builds",
|
66
|
+
@h.commit_path(@build.commit, :builds)
|
67
|
+
assert_equal "http://example.org/ci/foo-bar/commits/#{@commit.identifier}/builds",
|
68
|
+
@h.commit_url(@build.commit, :builds).to_s
|
69
|
+
end
|
70
|
+
|
64
71
|
test "compat" do
|
65
72
|
silence_warnings {
|
66
73
|
assert_equal @h.build_path(@build), @h.commit_path(@build.commit)
|
@@ -31,18 +31,20 @@ class MigrationsTest < Test::Unit::TestCase
|
|
31
31
|
test "upgrading a pre migration database" do
|
32
32
|
capture_stdout { Integrity.migrate_db }
|
33
33
|
|
34
|
-
current_migrations.should == ["initial", "add_commits",
|
34
|
+
current_migrations.should == ["initial", "add_commits",
|
35
|
+
"add_enabled_column", "nil_commit_metadata"]
|
35
36
|
assert table_exists?("integrity_projects")
|
36
37
|
assert table_exists?("integrity_builds")
|
37
38
|
assert table_exists?("integrity_notifiers")
|
38
39
|
assert table_exists?("integrity_commits")
|
39
40
|
end
|
40
41
|
|
41
|
-
test "migrating data from initial to
|
42
|
+
test "migrating data up from initial to the last migration" do
|
42
43
|
load_initial_migration_fixture
|
43
|
-
|
44
44
|
capture_stdout { Integrity.migrate_db }
|
45
|
-
|
45
|
+
|
46
|
+
current_migrations.should == ["initial", "add_commits",
|
47
|
+
"add_enabled_column", "nil_commit_metadata"]
|
46
48
|
|
47
49
|
sinatra = Project.first(:name => "Sinatra")
|
48
50
|
sinatra.should have(1).commits
|
data/test/unit/project_test.rb
CHANGED
@@ -145,6 +145,20 @@ class ProjectTest < Test::Unit::TestCase
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
describe "Finding any project" do
|
149
|
+
before(:each) do
|
150
|
+
@rails = Project.gen(:name => "rails", :public => true)
|
151
|
+
@merb = Project.gen(:name => "merb", :public => true)
|
152
|
+
@sinatra = Project.gen(:name => "sinatra", :public => true)
|
153
|
+
@camping = Project.gen(:name => "camping", :public => false)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should always be ordered by name" do
|
157
|
+
Project.all.should == [@camping, @merb, @rails, @sinatra]
|
158
|
+
Project.all(:public => true).should == [@merb, @rails, @sinatra]
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
148
162
|
describe "When finding its previous builds" do
|
149
163
|
before(:each) do
|
150
164
|
@project = Project.generate(:commits => 5.of { Commit.gen })
|
@@ -212,8 +226,10 @@ class ProjectTest < Test::Unit::TestCase
|
|
212
226
|
|
213
227
|
assert_equal 2, Notifier.count
|
214
228
|
assert_equal 2, project.enabled_notifiers.count
|
215
|
-
|
216
|
-
|
229
|
+
|
230
|
+
notifier_names = project.notifiers.map { |n| n.name }
|
231
|
+
assert notifier_names.include?("IRC")
|
232
|
+
assert notifier_names.include?("Twitter")
|
217
233
|
|
218
234
|
project.update_notifiers(["Twitter"],
|
219
235
|
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
data/views/project.haml
CHANGED
@@ -14,9 +14,8 @@
|
|
14
14
|
|
15
15
|
%form{ :action => project_path(@project, :builds), :method => :post }
|
16
16
|
%p.submit.manual-build
|
17
|
-
%button{ :type => :submit, :title => "Fetch the last commit and build it" }<
|
18
|
-
|
19
|
-
in the repository (or rebuild the latest)
|
17
|
+
%button{ :type => :submit, :title => "Fetch the last commit from the remote repository and build it" }<
|
18
|
+
Fetch and build
|
20
19
|
|
21
20
|
- unless @project.previous_commits.empty?
|
22
21
|
%h2 Previous builds
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: integrity-integrity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Nicol\xC3\xA1s Sanguinetti"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-05-14 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version_requirement:
|
20
20
|
version_requirements: !ruby/object:Gem::Requirement
|
21
21
|
requirements:
|
22
|
-
- - "
|
22
|
+
- - "="
|
23
23
|
- !ruby/object:Gem::Version
|
24
24
|
version: 0.9.1.1
|
25
25
|
version:
|
@@ -203,7 +203,9 @@ extra_rdoc_files: []
|
|
203
203
|
|
204
204
|
files:
|
205
205
|
- .gitignore
|
206
|
+
- AUTHORS
|
206
207
|
- CHANGES
|
208
|
+
- LICENSE
|
207
209
|
- README.md
|
208
210
|
- Rakefile
|
209
211
|
- bin/integrity
|
@@ -256,6 +258,7 @@ files:
|
|
256
258
|
- test/acceptance/installer_test.rb
|
257
259
|
- test/acceptance/manual_build_project_test.rb
|
258
260
|
- test/acceptance/not_found_page_test.rb
|
261
|
+
- test/acceptance/notifier_test_test.rb
|
259
262
|
- test/acceptance/project_syndication_test.rb
|
260
263
|
- test/acceptance/stylesheet_test.rb
|
261
264
|
- test/acceptance/unauthorized_page_test.rb
|