alphasights-integrity 0.1.9.8 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.gitignore +0 -1
  2. data/AUTHORS +35 -0
  3. data/CHANGES +21 -3
  4. data/LICENSE +20 -0
  5. data/README.md +10 -52
  6. data/config/config.sample.yml +4 -0
  7. data/config/heroku/.gems +1 -1
  8. data/config/heroku/integrity-config.rb +1 -0
  9. data/integrity.gemspec +6 -11
  10. data/lib/integrity.rb +4 -4
  11. data/lib/integrity/app.rb +1 -1
  12. data/lib/integrity/build.rb +8 -18
  13. data/lib/integrity/commit.rb +13 -8
  14. data/lib/integrity/helpers/pretty_output.rb +8 -0
  15. data/lib/integrity/helpers/urls.rb +3 -3
  16. data/lib/integrity/installer.rb +20 -11
  17. data/lib/integrity/migrations.rb +43 -13
  18. data/lib/integrity/notifier.rb +1 -1
  19. data/lib/integrity/notifier/base.rb +2 -2
  20. data/lib/integrity/notifier/test/fixtures.rb +12 -6
  21. data/lib/integrity/project.rb +34 -38
  22. data/lib/integrity/project/push.rb +4 -5
  23. data/test/acceptance/api_test.rb +1 -1
  24. data/test/acceptance/browse_project_test.rb +12 -6
  25. data/test/acceptance/build_notifications_test.rb +26 -2
  26. data/test/acceptance/installer_test.rb +1 -1
  27. data/test/acceptance/manual_build_project_test.rb +2 -2
  28. data/test/acceptance/notifier_test_test.rb +37 -0
  29. data/test/acceptance/stylesheet_test.rb +2 -1
  30. data/test/helpers.rb +3 -2
  31. data/test/unit/build_test.rb +11 -46
  32. data/test/unit/commit_test.rb +37 -28
  33. data/test/unit/helpers_test.rb +16 -0
  34. data/test/unit/migrations_test.rb +6 -4
  35. data/test/unit/project_test.rb +64 -95
  36. data/views/_commit_info.haml +6 -10
  37. data/views/home.haml +3 -2
  38. data/views/integrity.sass +24 -4
  39. data/views/project.haml +5 -4
  40. metadata +6 -20
  41. data/lib/integrity/helpers/gravatar.rb +0 -16
  42. data/lib/integrity/project_builder.rb +0 -56
  43. data/lib/integrity/scm.rb +0 -19
  44. data/lib/integrity/scm/git.rb +0 -84
  45. data/lib/integrity/scm/git/uri.rb +0 -57
  46. data/test/unit/project_builder_test.rb +0 -118
  47. data/test/unit/scm_test.rb +0 -54
data/.gitignore CHANGED
@@ -10,4 +10,3 @@ exports
10
10
  *.swp
11
11
  .aggregated_coverage_report
12
12
  tmp/
13
- build/**
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.9.4 / unreleased
1
+ 0.1.10 / 2009-05-14
2
2
  ====================
3
3
 
4
- * Fix that notifications are sent to every notifiers,
5
- including disabled ones
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/foca/integrity.git
14
+ $ git clone git://github.com/integrity/integrity.git
15
15
  $ rake launch
16
- # Navigate to <http://0.0.0.0:4567>
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
- Thanks
28
- ------
27
+ Why we don't `require "rubygems"`
28
+ ---------------------------------
29
29
 
30
- Thanks to the fellowing people for their feedbacks, ideas and patches :
31
-
32
- * [James Adam][james]
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/foca/integrity
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
- [foca]: http://nicolassanguinetti.info/
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
@@ -23,6 +23,10 @@
23
23
  # Path to the integrity log file
24
24
  :log: /var/log/integrity.log
25
25
 
26
+ # If set to true integrity will do a build for each commit. Otherwise
27
+ # it will only do a build for each set of commits (i.e. each push)
28
+ :build_all_commits: true
29
+
26
30
  # Enable or disable HTTP authentication for the app. BE AWARE that if you
27
31
  # disable this anyone can delete and alter projects, so do it only if your
28
32
  # app is running in a controlled environment (ie, behind your company's
data/config/heroku/.gems CHANGED
@@ -1 +1 @@
1
- integrity --version 0.1.9.0
1
+ integrity --version 0.1.9.3
@@ -3,6 +3,7 @@ gem "integrity"
3
3
  require "integrity"
4
4
 
5
5
  Integrity.config = {
6
+ :base_uri => nil, # Edit this! Like :base_uri => 'http://awesome-subdomain-13.heroku.com'
6
7
  :database_uri => ENV["DATABASE_URL"],
7
8
  :export_directory => File.dirname(__FILE__) + "/tmp",
8
9
  :log => File.dirname(__FILE__) + "/log/integrity.log",
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.9.8"
4
- s.date = "2009-04-06"
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", [">= 0.9.1.1"]
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"]
@@ -29,7 +29,6 @@ Gem::Specification.new do |s|
29
29
 
30
30
  if s.respond_to?(:add_development_dependency)
31
31
  s.add_development_dependency "rr"
32
- s.add_development_dependency "mocha"
33
32
  s.add_development_dependency "webrat"
34
33
  s.add_development_dependency "do_sqlite3"
35
34
  s.add_development_dependency "dm-sweatshop"
@@ -42,7 +41,9 @@ Gem::Specification.new do |s|
42
41
 
43
42
  s.files = %w[
44
43
  .gitignore
44
+ AUTHORS
45
45
  CHANGES
46
+ LICENSE
46
47
  README.md
47
48
  Rakefile
48
49
  bin/integrity
@@ -67,7 +68,6 @@ lib/integrity/helpers/pretty_output.rb
67
68
  lib/integrity/helpers/rendering.rb
68
69
  lib/integrity/helpers/resources.rb
69
70
  lib/integrity/helpers/urls.rb
70
- lib/integrity/helpers/gravatar.rb
71
71
  lib/integrity/installer.rb
72
72
  lib/integrity/migrations.rb
73
73
  lib/integrity/notifier.rb
@@ -78,10 +78,6 @@ lib/integrity/notifier/test/hpricot_matcher.rb
78
78
  lib/integrity/project.rb
79
79
  lib/integrity/project/notifiers.rb
80
80
  lib/integrity/project/push.rb
81
- lib/integrity/project_builder.rb
82
- lib/integrity/scm.rb
83
- lib/integrity/scm/git.rb
84
- lib/integrity/scm/git/uri.rb
85
81
  public/buttons.css
86
82
  public/reset.css
87
83
  public/spinner.gif
@@ -96,6 +92,7 @@ test/acceptance/error_page_test.rb
96
92
  test/acceptance/installer_test.rb
97
93
  test/acceptance/manual_build_project_test.rb
98
94
  test/acceptance/not_found_page_test.rb
95
+ test/acceptance/notifier_test_test.rb
99
96
  test/acceptance/project_syndication_test.rb
100
97
  test/acceptance/stylesheet_test.rb
101
98
  test/acceptance/unauthorized_page_test.rb
@@ -118,9 +115,7 @@ test/unit/integrity_test.rb
118
115
  test/unit/migrations_test.rb
119
116
  test/unit/notifier/base_test.rb
120
117
  test/unit/notifier_test.rb
121
- test/unit/project_builder_test.rb
122
118
  test/unit/project_test.rb
123
- test/unit/scm_test.rb
124
119
  views/_commit_info.haml
125
120
  views/build.haml
126
121
  views/error.haml
data/lib/integrity.rb CHANGED
@@ -1,13 +1,16 @@
1
1
  $:.unshift File.expand_path(File.dirname(__FILE__))
2
2
 
3
+ require "bob"
4
+ require "sinatra/base"
3
5
  require "json"
4
6
  require "haml"
7
+ require "sass"
8
+ require "builder"
5
9
  require "dm-core"
6
10
  require "dm-validations"
7
11
  require "dm-types"
8
12
  require "dm-timestamps"
9
13
  require "dm-aggregates"
10
- require "sinatra/base"
11
14
 
12
15
  require "yaml"
13
16
  require "logger"
@@ -22,9 +25,6 @@ require "integrity/project"
22
25
  require "integrity/author"
23
26
  require "integrity/commit"
24
27
  require "integrity/build"
25
- require "integrity/project_builder"
26
- require "integrity/scm"
27
- require "integrity/scm/git"
28
28
  require "integrity/notifier"
29
29
  require "integrity/helpers"
30
30
  require "integrity/app"
data/lib/integrity/app.rb CHANGED
@@ -114,7 +114,7 @@ module Integrity
114
114
  post "/:project/builds" do
115
115
  login_required
116
116
 
117
- current_project.build
117
+ current_project.build(:head)
118
118
  redirect project_url(current_project).to_s
119
119
  end
120
120
 
@@ -2,15 +2,15 @@ module Integrity
2
2
  class Build
3
3
  include DataMapper::Resource
4
4
 
5
- property :id, Integer, :serial => true
5
+ property :id, Serial
6
6
  property :output, Text, :default => "", :lazy => false
7
7
  property :successful, Boolean, :default => false
8
8
  property :commit_id, Integer, :nullable => false
9
- property :created_at, DateTime
10
- property :updated_at, DateTime
11
9
  property :started_at, DateTime
12
10
  property :completed_at, DateTime
13
11
 
12
+ timestamps :at
13
+
14
14
  belongs_to :commit, :class_name => "Integrity::Commit",
15
15
  :child_key => [:commit_id]
16
16
 
@@ -18,17 +18,14 @@ module Integrity
18
18
  all(:started_at => nil)
19
19
  end
20
20
 
21
- def self.queue(commit)
22
- commit.update_attributes(:build => new)
23
-
24
- # Build on foreground (this will move away, I promise)
25
- ProjectBuilder.build(commit)
26
- end
27
-
28
21
  def pending?
29
22
  started_at.nil?
30
23
  end
31
24
 
25
+ def building?
26
+ ! started_at.nil? && completed_at.nil?
27
+ end
28
+
32
29
  def failed?
33
30
  !successful?
34
31
  end
@@ -36,17 +33,10 @@ module Integrity
36
33
  def status
37
34
  case
38
35
  when pending? then :pending
36
+ when building? then :building
39
37
  when successful? then :success
40
38
  when failed? then :failed
41
39
  end
42
40
  end
43
-
44
- def start!(time=Time.now)
45
- self.started_at = time
46
- end
47
-
48
- def complete!(time=Time.now)
49
- self.completed_at = time
50
- end
51
41
  end
52
42
  end
@@ -2,14 +2,14 @@ module Integrity
2
2
  class Commit
3
3
  include DataMapper::Resource
4
4
 
5
- property :id, Integer, :serial => true
5
+ property :id, Serial
6
6
  property :identifier, String, :nullable => false
7
7
  property :message, String, :length => 255
8
8
  property :author, Author, :length => 255
9
- property :url, String
9
+ property :uri, URI
10
10
  property :committed_at, DateTime
11
- property :created_at, DateTime
12
- property :updated_at, DateTime
11
+
12
+ timestamps :at
13
13
 
14
14
  has 1, :build, :class_name => "Integrity::Build",
15
15
  :order => [:created_at.desc]
@@ -46,23 +46,28 @@ module Integrity
46
46
  status == :pending
47
47
  end
48
48
 
49
+ def building?
50
+ status == :building
51
+ end
52
+
49
53
  def human_readable_status
50
54
  case status
51
55
  when :success; "Built #{short_identifier} successfully"
52
56
  when :failed; "Built #{short_identifier} and failed"
53
57
  when :pending; "#{short_identifier} hasn't been built yet"
58
+ when :building; "#{short_identifier} is being build"
54
59
  end
55
60
  end
56
61
 
57
- def output
58
- build && build.output
59
- end
60
-
61
62
  def committed_at=(time_with_timezone)
62
63
  unless time_with_timezone.respond_to?(:getlocal)
63
64
  time_with_timezone = Time.parse(time_with_timezone)
64
65
  end
65
66
  attribute_set(:committed_at, time_with_timezone.getlocal)
66
67
  end
68
+
69
+ def output
70
+ build && build.output
71
+ end
67
72
  end
68
73
  end
@@ -29,6 +29,14 @@ module Integrity
29
29
  strftime_with_ordinal(date_time, "on %b %d%o")
30
30
  end
31
31
  end
32
+
33
+ def pretty_time(date_time)
34
+ date_time.strftime('%H:%M')
35
+ end
36
+
37
+ def pretty_date_time(datetime)
38
+ "#{pretty_date(datetime)} @ #{pretty_time(datetime)}"
39
+ end
32
40
 
33
41
  def strftime_with_ordinal(date_time, format_string)
34
42
  ordinal = case date_time.day
@@ -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)