alphasights-integrity 0.1.9.8 → 0.1.10
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 +0 -1
- data/AUTHORS +35 -0
- data/CHANGES +21 -3
- data/LICENSE +20 -0
- data/README.md +10 -52
- data/config/config.sample.yml +4 -0
- data/config/heroku/.gems +1 -1
- data/config/heroku/integrity-config.rb +1 -0
- data/integrity.gemspec +6 -11
- data/lib/integrity.rb +4 -4
- data/lib/integrity/app.rb +1 -1
- data/lib/integrity/build.rb +8 -18
- data/lib/integrity/commit.rb +13 -8
- data/lib/integrity/helpers/pretty_output.rb +8 -0
- data/lib/integrity/helpers/urls.rb +3 -3
- data/lib/integrity/installer.rb +20 -11
- data/lib/integrity/migrations.rb +43 -13
- data/lib/integrity/notifier.rb +1 -1
- data/lib/integrity/notifier/base.rb +2 -2
- data/lib/integrity/notifier/test/fixtures.rb +12 -6
- data/lib/integrity/project.rb +34 -38
- data/lib/integrity/project/push.rb +4 -5
- data/test/acceptance/api_test.rb +1 -1
- data/test/acceptance/browse_project_test.rb +12 -6
- data/test/acceptance/build_notifications_test.rb +26 -2
- data/test/acceptance/installer_test.rb +1 -1
- data/test/acceptance/manual_build_project_test.rb +2 -2
- data/test/acceptance/notifier_test_test.rb +37 -0
- data/test/acceptance/stylesheet_test.rb +2 -1
- data/test/helpers.rb +3 -2
- data/test/unit/build_test.rb +11 -46
- data/test/unit/commit_test.rb +37 -28
- data/test/unit/helpers_test.rb +16 -0
- data/test/unit/migrations_test.rb +6 -4
- data/test/unit/project_test.rb +64 -95
- data/views/_commit_info.haml +6 -10
- data/views/home.haml +3 -2
- data/views/integrity.sass +24 -4
- data/views/project.haml +5 -4
- metadata +6 -20
- data/lib/integrity/helpers/gravatar.rb +0 -16
- data/lib/integrity/project_builder.rb +0 -56
- data/lib/integrity/scm.rb +0 -19
- data/lib/integrity/scm/git.rb +0 -84
- data/lib/integrity/scm/git/uri.rb +0 -57
- data/test/unit/project_builder_test.rb +0 -118
- data/test/unit/scm_test.rb +0 -54
@@ -40,7 +40,7 @@ class ManualBuildProjectTest < Test::Unit::AcceptanceTestCase
|
|
40
40
|
git_repo(:my_test_project).add_successful_commit
|
41
41
|
Project.gen(:my_test_project,
|
42
42
|
:uri => git_repo(:my_test_project).path,
|
43
|
-
:command => "
|
43
|
+
:command => "echo FAIL && exit 1")
|
44
44
|
|
45
45
|
login_as "admin", "test"
|
46
46
|
|
@@ -53,7 +53,7 @@ class ManualBuildProjectTest < Test::Unit::AcceptanceTestCase
|
|
53
53
|
click_button "Update Project"
|
54
54
|
|
55
55
|
visit "/my-test-project"
|
56
|
-
click_button "
|
56
|
+
click_button "Fetch and build"
|
57
57
|
|
58
58
|
assert_have_tag("h1", :content => "success")
|
59
59
|
end
|
@@ -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
|
@@ -10,11 +10,12 @@ class IntegrityStylesheetTest < Test::Unit::AcceptanceTestCase
|
|
10
10
|
scenario "browsing on some Integrity install" do
|
11
11
|
visit "/"
|
12
12
|
assert_have_tag("link[@href='/integrity.css']")
|
13
|
+
|
13
14
|
visit "/integrity.css"
|
14
15
|
|
15
16
|
assert_contain("body {")
|
16
17
|
# TODO: Check that it actually returns a 302
|
17
|
-
assert_equal %Q{"
|
18
|
+
assert_equal %Q{"de9cf45fa61c8a2bb96c17fc16998599"},
|
18
19
|
webrat_session.send(:response).headers["ETag"]
|
19
20
|
|
20
21
|
visit "/reset.css"
|
data/test/helpers.rb
CHANGED
@@ -4,7 +4,6 @@ require "rubygems"
|
|
4
4
|
|
5
5
|
require "test/unit"
|
6
6
|
require "rr"
|
7
|
-
require "mocha"
|
8
7
|
require "dm-sweatshop"
|
9
8
|
require "webrat/sinatra"
|
10
9
|
|
@@ -29,6 +28,7 @@ end
|
|
29
28
|
module TestHelper
|
30
29
|
def ignore_logs!
|
31
30
|
Integrity.config[:log] = "/tmp/integrity.test.log"
|
31
|
+
Bob.logger = Logger.new("/dev/null")
|
32
32
|
end
|
33
33
|
|
34
34
|
def capture_stdout
|
@@ -58,8 +58,9 @@ class Test::Unit::TestCase
|
|
58
58
|
|
59
59
|
before(:all) do
|
60
60
|
DataMapper.setup(:default, "sqlite3::memory:")
|
61
|
-
|
62
61
|
require "integrity/migrations"
|
62
|
+
|
63
|
+
ignore_logs!
|
63
64
|
end
|
64
65
|
|
65
66
|
before(:each) do
|
data/test/unit/build_test.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../helpers'
|
2
2
|
|
3
3
|
class BuildTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
RR.reset
|
6
|
-
end
|
7
|
-
|
8
|
-
specify "fixture is valid and can be saved" do
|
4
|
+
test "fixture is valid and can be saved" do
|
9
5
|
lambda do
|
10
6
|
build = Build.gen
|
11
7
|
build.save
|
@@ -15,58 +11,27 @@ class BuildTest < Test::Unit::TestCase
|
|
15
11
|
end
|
16
12
|
|
17
13
|
describe "Properties" do
|
18
|
-
before(:each) do
|
19
|
-
@build = Build.gen
|
20
|
-
end
|
21
|
-
|
22
14
|
it "captures the build's STDOUT/STDERR" do
|
23
|
-
|
15
|
+
assert ! Build.gen.output.empty?
|
24
16
|
end
|
25
17
|
|
26
18
|
it "knows if it failed or not" do
|
27
|
-
|
28
|
-
|
29
|
-
@build.successful = false
|
30
|
-
@build.should be_failed
|
19
|
+
assert Build.gen(:successful => true).successful?
|
20
|
+
assert ! Build.gen(:successful => false).successful?
|
31
21
|
end
|
32
22
|
|
33
23
|
it "knows it's status" do
|
34
|
-
|
35
|
-
|
36
|
-
@build.successful = false
|
37
|
-
@build.status.should be(:failed)
|
38
|
-
end
|
39
|
-
end
|
24
|
+
assert_equal :success, Build.gen(:successful => true).status
|
25
|
+
assert_equal :failed, Build.gen(:successful => false).status
|
40
26
|
|
41
|
-
|
42
|
-
before(:each) do
|
43
|
-
3.of { Build.gen(:started_at => nil) }
|
44
|
-
2.of { Build.gen(:started_at => Time.mktime(2009, 1, 17, 23, 18)) }
|
45
|
-
end
|
46
|
-
|
47
|
-
it "finds builds that need to be built" do
|
48
|
-
Build.should have(3).pending
|
27
|
+
assert_equal :pending, Build.gen(:started_at => nil).status
|
49
28
|
end
|
50
29
|
end
|
51
30
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
stub.instance_of(ProjectBuilder).build(@commit)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "creates an empty Build" do
|
59
|
-
@commit.build.should be_nil
|
60
|
-
Build.queue(@commit)
|
61
|
-
@commit.build.should_not be_nil
|
62
|
-
end
|
63
|
-
|
64
|
-
it "ensures the build is saved" do
|
65
|
-
@commit.build.should be_nil
|
66
|
-
Build.queue(@commit)
|
31
|
+
it "finds pending builds" do
|
32
|
+
3.of { Build.gen(:started_at => nil) }
|
33
|
+
2.of { Build.gen(:started_at => Time.mktime(2009, 1, 17, 23, 18)) }
|
67
34
|
|
68
|
-
|
69
|
-
commit.build.should_not be_nil
|
70
|
-
end
|
35
|
+
Build.should have(3).pending
|
71
36
|
end
|
72
37
|
end
|
data/test/unit/commit_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../helpers'
|
2
2
|
|
3
3
|
class CommitTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
test "fixture is valid and can be saved" do
|
5
5
|
lambda do
|
6
6
|
commit = Commit.gen
|
7
7
|
commit.save
|
@@ -12,57 +12,66 @@ class CommitTest < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
describe "Properties" do
|
14
14
|
before(:each) do
|
15
|
-
@commit = Commit.
|
16
|
-
|
15
|
+
@commit = Commit.gen(
|
16
|
+
:message => "Initial commit",
|
17
|
+
:identifier => "658ba96cb0235e82ee720510c049883955200fa9",
|
18
|
+
:author => "Nicolás Sanguinetti <contacto@nicolassanguinetti.info>")
|
17
19
|
end
|
18
20
|
|
19
21
|
it "has a commit identifier" do
|
20
|
-
|
22
|
+
assert_equal "658ba96cb0235e82ee720510c049883955200fa9",
|
23
|
+
@commit.identifier
|
21
24
|
end
|
22
25
|
|
23
26
|
it "has a short commit identifier" do
|
24
|
-
@commit.short_identifier
|
27
|
+
assert_equal "658ba96", @commit.short_identifier
|
25
28
|
|
26
29
|
@commit.identifier = "402"
|
27
|
-
@commit.short_identifier
|
30
|
+
assert_equal "402", @commit.short_identifier
|
28
31
|
end
|
29
32
|
|
30
33
|
it "has a commit author" do
|
31
|
-
|
32
|
-
commit.author.
|
33
|
-
|
34
|
-
|
34
|
+
assert_equal "Nicolás Sanguinetti", @commit.author.name
|
35
|
+
assert_equal "contacto@nicolassanguinetti.info", @commit.author.email
|
36
|
+
assert_equal "Nicolás Sanguinetti <contacto@nicolassanguinetti.info>",
|
37
|
+
@commit.author.to_s
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
it "raises ArgumentError with invalid author" do
|
40
|
-
lambda { Commit.gen(:author => "foo") }.should raise_error(ArgumentError)
|
39
|
+
assert_equal @commit.author.full, @commit.author.to_s
|
40
|
+
assert_match /not loaded/, Commit.gen(:author => nil).author.to_s
|
41
|
+
assert_raises(ArgumentError) { Commit.gen(:author => "foo") }
|
41
42
|
end
|
42
43
|
|
43
44
|
it "has a commit message" do
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
Commit.gen(:message => nil).message.should =~ /not loaded/
|
45
|
+
assert_equal "Initial commit", @commit.message
|
46
|
+
assert_match /not loaded/, Commit.gen(:message => nil).message
|
48
47
|
end
|
49
|
-
|
48
|
+
|
50
49
|
it "normalizes the commit date time to the local timezone" do
|
51
50
|
ENV['TZ'] = 'US/Eastern' # -04:00
|
52
51
|
time = Time.parse("2009-04-16T02:24:51-07:00")
|
53
52
|
commit = Commit.gen(:committed_at => time)
|
54
53
|
commit.committed_at.to_s.should == "2009-04-16T05:24:51-04:00"
|
55
|
-
|
56
|
-
|
54
|
+
end
|
55
|
+
|
57
56
|
it "has a human readable status" do
|
58
|
-
|
59
|
-
|
57
|
+
assert_match /^Built (.*?) successfully$/,
|
58
|
+
Commit.gen(:successful).human_readable_status
|
59
|
+
|
60
|
+
assert_match /^Built (.*?) and failed$/,
|
61
|
+
Commit.gen(:failed).human_readable_status
|
60
62
|
|
61
|
-
|
62
|
-
|
63
|
+
assert_match(/^(.*?) hasn\'t been built yet$/,
|
64
|
+
Commit.gen(:pending).human_readable_status)
|
63
65
|
|
64
|
-
|
65
|
-
|
66
|
+
assert_match(/^(.*?) is being build$/,
|
67
|
+
Commit.gen(:building).human_readable_status)
|
66
68
|
end
|
67
69
|
end
|
70
|
+
|
71
|
+
it "knows its status" do
|
72
|
+
assert Commit.gen(:successful).successful?
|
73
|
+
assert Commit.gen(:failed).failed?
|
74
|
+
assert Commit.gen(:pending).pending?
|
75
|
+
assert Commit.gen(:building).building?
|
76
|
+
end
|
68
77
|
end
|
data/test/unit/helpers_test.rb
CHANGED
@@ -23,6 +23,15 @@ class BrowsePublicProjectsTest < Test::Unit::TestCase
|
|
23
23
|
@h.pretty_date(Time.mktime(1995, 12, 15)).should == "on Dec 15th"
|
24
24
|
@h.pretty_date(Time.mktime(1995, 12, 15)).should == "on Dec 15th"
|
25
25
|
end
|
26
|
+
|
27
|
+
test "#pretty_time" do
|
28
|
+
@h.pretty_time(Time.mktime(1995, 12, 01, 02, 04)).should == "02:04"
|
29
|
+
end
|
30
|
+
|
31
|
+
test "#pretty_date_time" do
|
32
|
+
datetime = Time.mktime(1995, 12, 01, 02, 04)
|
33
|
+
@h.pretty_date_time(datetime).should == "on Dec 01st @ 02:04"
|
34
|
+
end
|
26
35
|
|
27
36
|
describe "urls" do
|
28
37
|
before do
|
@@ -61,6 +70,13 @@ class BrowsePublicProjectsTest < Test::Unit::TestCase
|
|
61
70
|
}
|
62
71
|
end
|
63
72
|
|
73
|
+
test "build commit" do
|
74
|
+
assert_equal "/ci/foo-bar/commits/#{@commit.identifier}/builds",
|
75
|
+
@h.commit_path(@build.commit, :builds)
|
76
|
+
assert_equal "http://example.org/ci/foo-bar/commits/#{@commit.identifier}/builds",
|
77
|
+
@h.commit_url(@build.commit, :builds).to_s
|
78
|
+
end
|
79
|
+
|
64
80
|
test "compat" do
|
65
81
|
silence_warnings {
|
66
82
|
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", "add_commit_uri_column"]
|
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","add_commit_uri_column"]
|
46
48
|
|
47
49
|
sinatra = Project.first(:name => "Sinatra")
|
48
50
|
sinatra.should have(1).commits
|
data/test/unit/project_test.rb
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/../helpers"
|
2
2
|
|
3
3
|
class ProjectTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
RR.reset
|
6
|
-
ignore_logs!
|
7
|
-
end
|
8
|
-
|
9
|
-
specify "default fixture is valid and can be saved" do
|
4
|
+
test "default fixture is valid and can be saved" do
|
10
5
|
lambda do
|
11
6
|
Project.generate.tap do |project|
|
12
7
|
project.should be_valid
|
@@ -15,7 +10,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
15
10
|
end.should change(Project, :count).by(1)
|
16
11
|
end
|
17
12
|
|
18
|
-
|
13
|
+
test "integrity fixture is valid and can be saved" do
|
19
14
|
lambda do
|
20
15
|
Project.generate(:integrity).tap do |project|
|
21
16
|
project.should be_valid
|
@@ -30,85 +25,86 @@ class ProjectTest < Test::Unit::TestCase
|
|
30
25
|
end
|
31
26
|
|
32
27
|
it "has a name" do
|
33
|
-
@project.name
|
28
|
+
assert_equal "Integrity", @project.name
|
34
29
|
end
|
35
30
|
|
36
31
|
it "has a permalink" do
|
37
|
-
@project.permalink
|
32
|
+
assert_equal "integrity", @project.permalink
|
38
33
|
|
39
|
-
|
40
|
-
|
41
|
-
project.save
|
42
|
-
end.permalink.should == "foos-bar-baz-and-bacon"
|
34
|
+
assert_equal "foos-bar-baz-and-bacon",
|
35
|
+
Project.gen(:name => "foo's bar/baz and BACON?!").permalink
|
43
36
|
end
|
44
37
|
|
45
38
|
it "has an URI" do
|
46
|
-
|
39
|
+
assert_equal "git://github.com/foca/integrity.git",
|
40
|
+
@project.uri.to_s
|
47
41
|
end
|
48
42
|
|
49
43
|
it "has a branch" do
|
50
|
-
@project.branch
|
51
|
-
|
52
|
-
|
53
|
-
specify "branch defaults to master" do
|
54
|
-
Project.new.branch.should == "master"
|
44
|
+
assert_equal "master", @project.branch
|
45
|
+
assert_equal "master", Project.new.branch
|
55
46
|
end
|
56
47
|
|
57
48
|
it "has a command" do
|
58
49
|
# TODO: rename to build_command
|
59
|
-
@project.command
|
50
|
+
assert_equal "rake", @project.command
|
51
|
+
assert_equal "rake", Project.new.command
|
60
52
|
end
|
61
53
|
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
it "has a building flag" do
|
67
|
-
@project.should_not be_building
|
68
|
-
end
|
69
|
-
|
70
|
-
specify "building flag default to false" do
|
71
|
-
Project.new.should_not be_building
|
54
|
+
it "knows wheter it is being built" do
|
55
|
+
assert ! @project.building?
|
72
56
|
end
|
73
57
|
|
74
58
|
it "knows it's visibility" do
|
75
59
|
# TODO: rename Project#public property to visibility
|
76
60
|
# TODO: and have utility method to query its state instead
|
77
61
|
|
78
|
-
Project.new.
|
62
|
+
assert Project.new.public?
|
79
63
|
|
80
|
-
@project.
|
81
|
-
|
82
|
-
|
64
|
+
assert @project.public?
|
65
|
+
assert Project.gen(:public => "1").public?
|
66
|
+
assert ! Project.gen(:public => "0").public?
|
83
67
|
|
84
|
-
Project.gen(:public => "false").
|
85
|
-
Project.gen(:public => "true").
|
86
|
-
Project.gen(:public => false).
|
87
|
-
Project.gen(:public => nil).
|
68
|
+
assert Project.gen(:public => "false").public?
|
69
|
+
assert Project.gen(:public => "true").public?
|
70
|
+
assert ! Project.gen(:public => false).public?
|
71
|
+
assert ! Project.gen(:public => nil).public?
|
88
72
|
end
|
89
73
|
|
90
|
-
it "has
|
91
|
-
@project.created_at
|
92
|
-
|
93
|
-
|
94
|
-
it "has an updated_at" do
|
95
|
-
@project.updated_at.should be_a(DateTime)
|
74
|
+
it "has created_at and updated_at timestamps" do
|
75
|
+
assert_kind_of DateTime, @project.created_at
|
76
|
+
assert_kind_of DateTime, @project.updated_at
|
96
77
|
end
|
97
78
|
|
98
79
|
it "knows it's status" do
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
80
|
+
assert_equal :success,
|
81
|
+
Project.gen(:commits => 1.of{ Commit.gen(:successful) }).status
|
82
|
+
|
83
|
+
assert_equal :success,
|
84
|
+
Project.gen(:commits => 2.of{ Commit.gen(:successful) }).status
|
85
|
+
|
86
|
+
assert_equal :failed,
|
87
|
+
Project.gen(:commits => 2.of{ Commit.gen(:failed) }).status
|
88
|
+
|
89
|
+
assert_equal :pending,
|
90
|
+
Project.gen(:commits => 1.of{ Commit.gen(:pending) }).status
|
91
|
+
|
92
|
+
assert_equal :blank, Project.gen(:commits => []).status
|
93
|
+
|
94
|
+
assert_equal :building,
|
95
|
+
Project.gen(:commits => 1.of{ Commit.gen(:building) }).status
|
96
|
+
|
97
|
+
commits = 3.of{Commit.gen(:successful)} << Commit.gen(:building)
|
98
|
+
assert Project.gen(:commits => commits).building?
|
104
99
|
end
|
105
100
|
|
106
|
-
it "knows it's last
|
107
|
-
Project.gen(:commits => []).last_commit.
|
101
|
+
it "knows it's last commuit" do
|
102
|
+
assert Project.gen(:commits => []).last_commit.nil?
|
108
103
|
|
109
104
|
commits = 5.of { Commit.gen(:successful) }
|
110
105
|
project = Project.gen(:commits => commits)
|
111
|
-
|
106
|
+
assert_equal commits.sort_by {|c| c.committed_at }.last,
|
107
|
+
project.last_commit
|
112
108
|
end
|
113
109
|
end
|
114
110
|
|
@@ -145,6 +141,16 @@ class ProjectTest < Test::Unit::TestCase
|
|
145
141
|
end
|
146
142
|
end
|
147
143
|
|
144
|
+
it "orders projects by name" do
|
145
|
+
@rails = Project.gen(:name => "rails", :public => true)
|
146
|
+
@merb = Project.gen(:name => "merb", :public => true)
|
147
|
+
@sinatra = Project.gen(:name => "sinatra", :public => true)
|
148
|
+
@camping = Project.gen(:name => "camping", :public => false)
|
149
|
+
|
150
|
+
Project.all.should == [@camping, @merb, @rails, @sinatra]
|
151
|
+
Project.all(:public => true).should == [@merb, @rails, @sinatra]
|
152
|
+
end
|
153
|
+
|
148
154
|
describe "When finding its previous builds" do
|
149
155
|
before(:each) do
|
150
156
|
@project = Project.generate(:commits => 5.of { Commit.gen })
|
@@ -180,9 +186,8 @@ class ProjectTest < Test::Unit::TestCase
|
|
180
186
|
@project = Project.generate(:commits => @commits)
|
181
187
|
end
|
182
188
|
|
183
|
-
it "destroys itself
|
189
|
+
it "destroys itself" do
|
184
190
|
lambda do
|
185
|
-
stub.instance_of(ProjectBuilder).delete_code
|
186
191
|
@project.destroy
|
187
192
|
end.should change(Project, :count).by(-1)
|
188
193
|
end
|
@@ -212,8 +217,10 @@ class ProjectTest < Test::Unit::TestCase
|
|
212
217
|
|
213
218
|
assert_equal 2, Notifier.count
|
214
219
|
assert_equal 2, project.enabled_notifiers.count
|
215
|
-
|
216
|
-
|
220
|
+
|
221
|
+
sorted_notifiers = project.notifiers.sort_by{|n| n.name}
|
222
|
+
assert_equal "IRC", sorted_notifiers.first.name
|
223
|
+
assert_equal "Twitter", sorted_notifiers.last.name
|
217
224
|
|
218
225
|
project.update_notifiers(["Twitter"],
|
219
226
|
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
@@ -231,7 +238,7 @@ class ProjectTest < Test::Unit::TestCase
|
|
231
238
|
|
232
239
|
assert_equal 2, @project.notifiers.count
|
233
240
|
end
|
234
|
-
|
241
|
+
|
235
242
|
it "disables notifiers that are not included in the list" do
|
236
243
|
@project.update_notifiers(["IRC"],
|
237
244
|
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
@@ -303,42 +310,4 @@ class ProjectTest < Test::Unit::TestCase
|
|
303
310
|
assert ! @project.notifies?("Twitter")
|
304
311
|
end
|
305
312
|
end
|
306
|
-
|
307
|
-
describe "When building a commit" do
|
308
|
-
before(:each) do
|
309
|
-
@commits = 2.of { Commit.gen }
|
310
|
-
@project = Project.gen(:integrity, :commits => @commits)
|
311
|
-
stub.instance_of(ProjectBuilder).build { nil }
|
312
|
-
end
|
313
|
-
|
314
|
-
it "gets the specified commit and creates a pending build for it" do
|
315
|
-
commit = @commits.last
|
316
|
-
|
317
|
-
lambda {
|
318
|
-
@project.build(commit.identifier)
|
319
|
-
}.should change(Build, :count).by(1)
|
320
|
-
|
321
|
-
build = Build.all.last
|
322
|
-
build.commit.should be(commit)
|
323
|
-
build.should be_pending
|
324
|
-
|
325
|
-
commit.should be_pending
|
326
|
-
end
|
327
|
-
|
328
|
-
it "creates an empty commit with the head of the project if passed 'HEAD' (the default)" do
|
329
|
-
mock(@project).head_of_remote_repo { "FOOBAR" }
|
330
|
-
|
331
|
-
lambda {
|
332
|
-
@project.build("HEAD")
|
333
|
-
}.should change(Commit, :count).by(1)
|
334
|
-
|
335
|
-
build = Build.all.last
|
336
|
-
build.commit.should == @project.last_commit
|
337
|
-
|
338
|
-
@project.last_commit.should be_pending
|
339
|
-
@project.last_commit.identifier.should == "FOOBAR"
|
340
|
-
@project.last_commit.author.name.should == "<Commit author not loaded>"
|
341
|
-
@project.last_commit.message.should == "<Commit message not loaded>"
|
342
|
-
end
|
343
|
-
end
|
344
313
|
end
|