integrity 0.1.9.1 → 0.1.9.2
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.
- data/.gitignore +12 -0
- data/CHANGES +28 -0
- data/README.markdown +6 -0
- data/Rakefile +44 -83
- data/config/heroku/.gems +0 -3
- data/config/heroku/integrity-config.rb +4 -1
- data/integrity.gemspec +18 -6
- data/lib/integrity.rb +9 -5
- data/lib/integrity/app.rb +8 -8
- data/lib/integrity/build.rb +7 -7
- data/lib/integrity/helpers/authorization.rb +1 -1
- data/lib/integrity/helpers/breadcrumbs.rb +1 -1
- data/lib/integrity/helpers/rendering.rb +8 -2
- data/lib/integrity/helpers/urls.rb +33 -23
- data/lib/integrity/installer.rb +18 -17
- data/lib/integrity/notifier/base.rb +7 -2
- data/lib/integrity/project.rb +2 -2
- data/test/acceptance/api_test.rb +1 -1
- data/test/acceptance/browse_project_builds_test.rb +1 -1
- data/test/acceptance/browse_project_test.rb +1 -1
- data/test/acceptance/build_notifications_test.rb +1 -1
- data/test/acceptance/create_project_test.rb +1 -1
- data/test/acceptance/delete_project_test.rb +1 -1
- data/test/acceptance/edit_project_test.rb +1 -1
- data/test/acceptance/error_page_test.rb +1 -1
- data/test/acceptance/installer_test.rb +2 -6
- data/test/acceptance/manual_build_project_test.rb +1 -1
- data/test/acceptance/not_found_page_test.rb +29 -0
- data/test/acceptance/notifier_test.rb +1 -1
- data/test/acceptance/project_syndication_test.rb +1 -1
- data/test/acceptance/stylesheet_test.rb +10 -2
- data/test/acceptance/unauthorized_page_test.rb +20 -0
- data/test/helpers.rb +13 -7
- data/test/helpers/acceptance.rb +1 -0
- data/test/unit/build_test.rb +10 -0
- data/test/unit/helpers_test.rb +63 -20
- data/test/unit/integrity_test.rb +23 -6
- data/test/unit/notifier_test.rb +5 -0
- data/test/unit/project_test.rb +5 -0
- data/views/home.haml +2 -2
- data/views/layout.haml +6 -5
- data/views/new.haml +1 -1
- data/views/not_found.haml +2 -2
- data/views/unauthorized.haml +4 -4
- metadata +105 -6
- data/test/acceptance/helpers.rb +0 -2
- data/vendor/sinatra-ditties/README.rdoc +0 -3
- data/vendor/sinatra-ditties/lib/sinatra/ditties.rb +0 -12
- data/vendor/sinatra-ditties/lib/sinatra/ditties/authorization.rb +0 -61
- data/vendor/sinatra-ditties/lib/sinatra/ditties/mailer.rb +0 -146
data/.gitignore
ADDED
data/CHANGES
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
0.1.9.2 / unreleased
|
2
|
+
====================
|
3
|
+
|
4
|
+
* Add development dependencies to gemspec
|
5
|
+
* Fix and improve deprecation (Josh Nichols)
|
6
|
+
* Fix a typo in post install message (Josh Nichols)
|
7
|
+
* Fix URLs issues (hopefully)
|
8
|
+
* Calculate URLs using base_uri option instead of the request.url
|
9
|
+
* Fix and use the URLs generation helpers in views. (Will Leinweber)
|
10
|
+
* Depend on sinatra-authorization (which has no dependency) instead
|
11
|
+
of sinatra-ditties.
|
12
|
+
* Use [mg](http://github.com/sr/mg) to manage release
|
13
|
+
* Various tweaks to the bootstraping Rake tasks. I am not happy
|
14
|
+
with them, though.
|
15
|
+
<http://integrity.lighthouseapp.com/projects/14308/tickets/126>
|
16
|
+
|
17
|
+
0.1.9.1 / 2009-03-16
|
18
|
+
====================
|
19
|
+
|
20
|
+
* Add the Integrity::Notifier::Test mixin, aimed at helping
|
21
|
+
writing test for notifiers.
|
22
|
+
NOTE: The API is not fixed yet. See the following ticket
|
23
|
+
<http://integrity.lighthouseapp.com/projects/14308-integrity/tickets/130>
|
24
|
+
* Add support for Heroku as a deployment option
|
25
|
+
* Fix the installer to work with the current Thor gem
|
26
|
+
|
27
|
+
|
28
|
+
**There is no changelog for previous release :-)**
|
data/README.markdown
CHANGED
data/Rakefile
CHANGED
@@ -1,34 +1,28 @@
|
|
1
1
|
require "rake/testtask"
|
2
2
|
require "rake/clean"
|
3
|
-
require "rcov/rcovtask"
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
def spec
|
5
|
+
@spec ||= begin
|
6
|
+
require "rubygems/specification"
|
7
|
+
eval(File.read("integrity.gemspec"))
|
8
|
+
end
|
8
9
|
end
|
9
10
|
|
10
11
|
desc "Default: run all tests"
|
11
12
|
task :default => :test
|
12
13
|
|
13
|
-
desc "
|
14
|
-
task :
|
15
|
-
|
16
|
-
|
17
|
-
Rake::Task["test"].invoke
|
18
|
-
|
19
|
-
metrics = %w(flay flog:all reek roodi saikuro)
|
20
|
-
metrics.each { |m| Rake::Task["metrics:#{m}"].invoke }
|
14
|
+
desc "Install Integrity dependencies"
|
15
|
+
task :setup do
|
16
|
+
puts "NOTE: assuming you have gems.github.com in your gem sources"
|
21
17
|
|
22
|
-
|
23
|
-
|
18
|
+
system "gem install " +
|
19
|
+
spec.dependencies.select { |dep| dep.type == :runtime }.
|
20
|
+
collect(&:name).join(" ")
|
21
|
+
end
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
f << %Q(<li><a href="/#{m}">#{m}</a></li>)
|
29
|
-
}
|
30
|
-
f << "</ul>"
|
31
|
-
}
|
23
|
+
desc "Launch Integrity real quick"
|
24
|
+
task :launch do
|
25
|
+
ruby "bin/integrity launch"
|
32
26
|
end
|
33
27
|
|
34
28
|
desc "Run tests"
|
@@ -42,77 +36,44 @@ namespace :test do
|
|
42
36
|
t.test_files = FileList["test/acceptance/*_test.rb"]
|
43
37
|
end
|
44
38
|
|
45
|
-
desc "Install
|
46
|
-
task :
|
47
|
-
|
48
|
-
system "gem install -s http://gems.github.com jeremymcanally-context \
|
49
|
-
jeremymcanally-matchy jeremymcanally-pending foca-storyteller"
|
50
|
-
system "git submodule update --init"
|
51
|
-
end
|
52
|
-
end
|
39
|
+
desc "Install tests dependencies"
|
40
|
+
task :setup do
|
41
|
+
puts "NOTE: assuming you have gems.github.com in your gem sources"
|
53
42
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
directory "dist/"
|
60
|
-
CLOBBER.include("dist")
|
61
|
-
|
62
|
-
# Load the gemspec using the same limitations as github
|
63
|
-
def spec
|
64
|
-
@spec ||=
|
65
|
-
begin
|
66
|
-
require "rubygems/specification"
|
67
|
-
data = File.read("integrity.gemspec")
|
68
|
-
spec = nil
|
69
|
-
Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
|
70
|
-
spec
|
71
|
-
end
|
43
|
+
system "gem install " +
|
44
|
+
spec.dependencies.select { |dep| dep.type == :development }.
|
45
|
+
collect(&:name).join(" ")
|
46
|
+
end
|
72
47
|
end
|
73
48
|
|
74
|
-
|
75
|
-
"
|
49
|
+
begin
|
50
|
+
require "mg"
|
51
|
+
MG.new("integrity.gemspec")
|
52
|
+
rescue LoadError
|
76
53
|
end
|
77
54
|
|
78
|
-
|
79
|
-
|
80
|
-
|
55
|
+
begin
|
56
|
+
require "metric_fu"
|
57
|
+
rescue LoadError
|
81
58
|
end
|
82
59
|
|
83
|
-
desc "
|
84
|
-
task :
|
85
|
-
|
86
|
-
namespace :rubyforge do
|
87
|
-
desc "Publish gem and tarball to rubyforge"
|
88
|
-
task :gem => package(".gem") do
|
89
|
-
sh "rubyforge add_release integrity integrity #{spec.version} #{package('.gem')}"
|
90
|
-
end
|
60
|
+
desc "Special task for running tests on <http://builder.integrityapp.com>"
|
61
|
+
task :ci do
|
62
|
+
sh "git submodule update --init"
|
91
63
|
|
92
|
-
|
93
|
-
sh "rubyforge add_file integrity integrity #{spec.version} #{package('.tar.gz')}"
|
94
|
-
end
|
64
|
+
Rake::Task["test"].invoke
|
95
65
|
|
96
|
-
|
97
|
-
|
98
|
-
sh "git push gitosis@rubyforge.org:integrity.git master"
|
99
|
-
end
|
100
|
-
end
|
66
|
+
metrics = %w(flay flog:all reek roodi saikuro)
|
67
|
+
metrics.each { |m| Rake::Task["metrics:#{m}"].invoke }
|
101
68
|
|
102
|
-
|
103
|
-
|
104
|
-
namespace :package do
|
105
|
-
file package(".tar.gz") => "dist/" do |f|
|
106
|
-
sh <<-SH
|
107
|
-
git archive \
|
108
|
-
--prefix=integrity-#{spec.version}/ \
|
109
|
-
--format=tar \
|
110
|
-
HEAD | gzip > #{f.name}
|
111
|
-
SH
|
112
|
-
end
|
69
|
+
rm_rf "/var/www/integrity-metrics"
|
70
|
+
mv "tmp/metric_fu", "/var/www/integrity-metrics"
|
113
71
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
72
|
+
File.open("/var/www/integrity-metrics/index.html", "w") { |f|
|
73
|
+
f << "<ul>"
|
74
|
+
metrics.map { |m| m.split(":").first }.each { |m|
|
75
|
+
f << %Q(<li><a href="/#{m}">#{m}</a></li>)
|
76
|
+
}
|
77
|
+
f << "</ul>"
|
78
|
+
}
|
118
79
|
end
|
data/config/heroku/.gems
CHANGED
@@ -5,7 +5,10 @@ require "integrity"
|
|
5
5
|
Integrity.config = {
|
6
6
|
:database_uri => ENV["DATABASE_URL"],
|
7
7
|
:export_directory => File.dirname(__FILE__) + "/tmp",
|
8
|
-
:log => File.dirname(__FILE__) + "/log/integrity.log"
|
8
|
+
:log => File.dirname(__FILE__) + "/log/integrity.log",
|
9
|
+
# Uncomment to setup a password
|
10
|
+
# :admin_usenrame => "admin",
|
11
|
+
# :admin_password => "foobar"
|
9
12
|
}
|
10
13
|
|
11
14
|
Integrity.new
|
data/integrity.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "integrity"
|
3
|
-
s.version = "0.1.9.
|
3
|
+
s.version = "0.1.9.2"
|
4
4
|
s.date = "2009-03-16"
|
5
5
|
|
6
6
|
s.description = "Your Friendly Continuous Integration server. Easy, fun and painless!"
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.rubygems_version = "1.3.1"
|
20
20
|
|
21
21
|
s.add_dependency "sinatra", [">= 0.9.1.1"]
|
22
|
+
s.add_dependency "sinatra-authorization"
|
22
23
|
s.add_dependency "haml", [">= 2.0.0"]
|
23
24
|
s.add_dependency "data_mapper", [">= 0.9.10"]
|
24
25
|
s.add_dependency "uuidtools" # required by dm-types
|
@@ -26,7 +27,21 @@ Gem::Specification.new do |s|
|
|
26
27
|
s.add_dependency "json"
|
27
28
|
s.add_dependency "thor"
|
28
29
|
|
30
|
+
if s.respond_to?(:add_development_dependency)
|
31
|
+
s.add_development_dependency "rr"
|
32
|
+
s.add_development_dependency "mocha"
|
33
|
+
s.add_development_dependency "webrat"
|
34
|
+
s.add_development_dependency "do_sqlite3"
|
35
|
+
s.add_development_dependency "dm-sweatshop"
|
36
|
+
s.add_development_dependency "ParseTree" # required by dm-sweatshop
|
37
|
+
s.add_development_dependency "jeremymcanally-context"
|
38
|
+
s.add_development_dependency "jeremymcanally-pending"
|
39
|
+
s.add_development_dependency "foca-storyteller"
|
40
|
+
end
|
41
|
+
|
29
42
|
s.files = %w[
|
43
|
+
.gitignore
|
44
|
+
CHANGES
|
30
45
|
README.markdown
|
31
46
|
Rakefile
|
32
47
|
bin/integrity
|
@@ -75,12 +90,13 @@ test/acceptance/create_project_test.rb
|
|
75
90
|
test/acceptance/delete_project_test.rb
|
76
91
|
test/acceptance/edit_project_test.rb
|
77
92
|
test/acceptance/error_page_test.rb
|
78
|
-
test/acceptance/helpers.rb
|
79
93
|
test/acceptance/installer_test.rb
|
80
94
|
test/acceptance/manual_build_project_test.rb
|
95
|
+
test/acceptance/not_found_page_test.rb
|
81
96
|
test/acceptance/notifier_test.rb
|
82
97
|
test/acceptance/project_syndication_test.rb
|
83
98
|
test/acceptance/stylesheet_test.rb
|
99
|
+
test/acceptance/unauthorized_page_test.rb
|
84
100
|
test/helpers.rb
|
85
101
|
test/helpers/acceptance.rb
|
86
102
|
test/helpers/acceptance/email_notifier.rb
|
@@ -103,10 +119,6 @@ test/unit/notifier_test.rb
|
|
103
119
|
test/unit/project_builder_test.rb
|
104
120
|
test/unit/project_test.rb
|
105
121
|
test/unit/scm_test.rb
|
106
|
-
vendor/sinatra-ditties/README.rdoc
|
107
|
-
vendor/sinatra-ditties/lib/sinatra/ditties.rb
|
108
|
-
vendor/sinatra-ditties/lib/sinatra/ditties/authorization.rb
|
109
|
-
vendor/sinatra-ditties/lib/sinatra/ditties/mailer.rb
|
110
122
|
views/_commit_info.haml
|
111
123
|
views/build.haml
|
112
124
|
views/error.haml
|
data/lib/integrity.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
$:.unshift File.expand_path(File.dirname(__FILE__))
|
2
|
-
File.expand_path(File.dirname(__FILE__) + "/../vendor/sinatra-ditties/lib")
|
1
|
+
$:.unshift File.expand_path(File.dirname(__FILE__))
|
3
2
|
|
4
3
|
require "json"
|
5
4
|
require "haml"
|
@@ -31,9 +30,14 @@ require "integrity/helpers"
|
|
31
30
|
require "integrity/app"
|
32
31
|
|
33
32
|
module Integrity
|
34
|
-
def self.new(
|
35
|
-
|
36
|
-
|
33
|
+
def self.new(config=nil)
|
34
|
+
if config.is_a?(String) && File.file?(config)
|
35
|
+
self.config = YAML.load_file(config)
|
36
|
+
elsif config.is_a?(Hash)
|
37
|
+
self.config = config
|
38
|
+
end
|
39
|
+
|
40
|
+
DataMapper.setup(:default, self.config[:database_uri])
|
37
41
|
end
|
38
42
|
|
39
43
|
def self.default_configuration
|
data/lib/integrity/app.rb
CHANGED
@@ -31,7 +31,7 @@ module Integrity
|
|
31
31
|
sass :integrity
|
32
32
|
end
|
33
33
|
|
34
|
-
get "
|
34
|
+
get "/?" do
|
35
35
|
@projects = Project.only_public_unless(authorized?)
|
36
36
|
show :home, :title => "projects"
|
37
37
|
end
|
@@ -40,7 +40,7 @@ module Integrity
|
|
40
40
|
login_required
|
41
41
|
|
42
42
|
session[:user] = current_user
|
43
|
-
redirect root_url
|
43
|
+
redirect root_url.to_s
|
44
44
|
end
|
45
45
|
|
46
46
|
get "/new" do
|
@@ -50,14 +50,14 @@ module Integrity
|
|
50
50
|
show :new, :title => ["projects", "new project"]
|
51
51
|
end
|
52
52
|
|
53
|
-
post "
|
53
|
+
post "/?" do
|
54
54
|
login_required
|
55
55
|
|
56
56
|
@project = Project.new(params[:project_data])
|
57
57
|
|
58
58
|
if @project.save
|
59
59
|
update_notifiers_of(@project)
|
60
|
-
redirect project_url(@project)
|
60
|
+
redirect project_url(@project).to_s
|
61
61
|
else
|
62
62
|
show :new, :title => ["projects", "new project"]
|
63
63
|
end
|
@@ -79,7 +79,7 @@ module Integrity
|
|
79
79
|
|
80
80
|
if current_project.update_attributes(params[:project_data])
|
81
81
|
update_notifiers_of(current_project)
|
82
|
-
redirect project_url(current_project)
|
82
|
+
redirect project_url(current_project).to_s
|
83
83
|
else
|
84
84
|
show :new, :title => ["projects", current_project.permalink, "edit"]
|
85
85
|
end
|
@@ -89,7 +89,7 @@ module Integrity
|
|
89
89
|
login_required
|
90
90
|
|
91
91
|
current_project.destroy
|
92
|
-
redirect root_url
|
92
|
+
redirect root_url.to_s
|
93
93
|
end
|
94
94
|
|
95
95
|
get "/:project/edit" do
|
@@ -115,7 +115,7 @@ module Integrity
|
|
115
115
|
login_required
|
116
116
|
|
117
117
|
current_project.build
|
118
|
-
redirect project_url(current_project)
|
118
|
+
redirect project_url(current_project).to_s
|
119
119
|
end
|
120
120
|
|
121
121
|
get "/:project/commits/:commit" do
|
@@ -132,7 +132,7 @@ module Integrity
|
|
132
132
|
login_required
|
133
133
|
|
134
134
|
current_project.build(params[:commit])
|
135
|
-
redirect commit_url(current_commit)
|
135
|
+
redirect commit_url(current_commit).to_s
|
136
136
|
end
|
137
137
|
end
|
138
138
|
end
|
data/lib/integrity/build.rb
CHANGED
@@ -45,37 +45,37 @@ module Integrity
|
|
45
45
|
# Deprecated methods
|
46
46
|
#
|
47
47
|
def short_commit_identifier
|
48
|
-
warn "Build#short_commit_identifier is deprecated, use Commit#short_identifier"
|
48
|
+
warn "Build#short_commit_identifier is deprecated, use Commit#short_identifier (#{caller[0]})"
|
49
49
|
commit.short_identifier
|
50
50
|
end
|
51
51
|
|
52
52
|
def commit_identifier
|
53
|
-
warn "Build#commit_identifier is deprecated, use Commit#identifier"
|
53
|
+
warn "Build#commit_identifier is deprecated, use Commit#identifier (#{caller[0]})"
|
54
54
|
commit.identifier
|
55
55
|
end
|
56
56
|
|
57
57
|
def commit_author
|
58
|
-
warn "Build#commit_author is deprecated, use Commit#author"
|
58
|
+
warn "Build#commit_author is deprecated, use Commit#author (#{caller[0]})"
|
59
59
|
commit.author
|
60
60
|
end
|
61
61
|
|
62
62
|
def commit_message
|
63
|
-
warn "Build#commit_message is deprecated, use Commit#message"
|
63
|
+
warn "Build#commit_message is deprecated, use Commit#message (#{caller[0]})"
|
64
64
|
commit.message
|
65
65
|
end
|
66
66
|
|
67
67
|
def commited_at
|
68
|
-
warn "Build#commited_at is deprecated, use Commit#committed_at"
|
68
|
+
warn "Build#commited_at is deprecated, use Commit#committed_at (#{caller[0]})"
|
69
69
|
commit.committed_at
|
70
70
|
end
|
71
71
|
|
72
72
|
def project_id
|
73
|
-
warn "Build#project_id is deprecated, use Commit#project_id"
|
73
|
+
warn "Build#project_id is deprecated, use Commit#project_id (#{caller[0]})"
|
74
74
|
commit.project_id
|
75
75
|
end
|
76
76
|
|
77
77
|
def commit_metadata
|
78
|
-
warn "Build#commit_metadata is deprecated, use the different methods in Commit instead"
|
78
|
+
warn "Build#commit_metadata is deprecated, use the different methods in Commit instead (#{caller[0]})"
|
79
79
|
{ :message => commit.message,
|
80
80
|
:author => commit.author,
|
81
81
|
:date => commit.committed_at }
|