BuildMaster 0.9.1 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/svnfix.rb +3 -0
- data/lib/buildmaster/ci/server.rb +55 -0
- data/lib/buildmaster/common.rb +3 -0
- data/lib/buildmaster/common/properties.rb +28 -0
- data/lib/buildmaster/{tree_to_object.rb → common/tree_to_object.rb} +0 -0
- data/lib/buildmaster/cotta.rb +1 -1
- data/lib/buildmaster/cotta/command_error.rb +6 -1
- data/lib/buildmaster/cotta/command_interface.rb +44 -0
- data/lib/buildmaster/cotta/command_runner.rb +39 -0
- data/lib/buildmaster/cotta/cotta.rb +40 -3
- data/lib/buildmaster/cotta/cotta_dir.rb +28 -7
- data/lib/buildmaster/cotta/cotta_file.rb +14 -2
- data/lib/buildmaster/cotta/cotta_pathname.rb +9 -0
- data/lib/buildmaster/cotta/in_memory_system.rb +20 -9
- data/lib/buildmaster/cotta/physical_system.rb +4 -8
- data/lib/buildmaster/project.rb +10 -0
- data/lib/buildmaster/{ant_driver.rb → project/ant_driver.rb} +0 -0
- data/lib/buildmaster/project/build.rb +3 -0
- data/lib/buildmaster/{build_number_file.rb → project/build_number_file.rb} +4 -0
- data/lib/buildmaster/project/ci.rb +3 -0
- data/lib/buildmaster/{cvs_driver.rb → project/cvs_driver.rb} +0 -0
- data/lib/buildmaster/project/ftp_driver.rb +64 -0
- data/lib/buildmaster/{java_manifest.rb → project/java_manifest.rb} +0 -0
- data/lib/buildmaster/project/pscp_driver.rb +17 -0
- data/lib/buildmaster/project/release.rb +67 -0
- data/lib/buildmaster/project/ruby_forge_project.rb +26 -0
- data/lib/buildmaster/{run_ant.rb → project/run_ant.rb} +0 -0
- data/lib/buildmaster/project/server_manager.rb +64 -0
- data/lib/buildmaster/project/svn_admin_driver.rb +20 -0
- data/lib/buildmaster/project/svn_driver.rb +94 -0
- data/lib/buildmaster/project/svn_helper.rb +113 -0
- data/lib/buildmaster/project/svn_status_info.rb +54 -0
- data/lib/buildmaster/{try.rb → project/try.rb} +0 -0
- data/lib/buildmaster/project/version_number_file.rb +45 -0
- data/lib/buildmaster/{windows → project/windows}/iis_driver.rb +4 -4
- data/lib/buildmaster/{windows → project/windows}/sql_server_driver.rb +0 -0
- data/lib/buildmaster/site.rb +5 -0
- data/lib/buildmaster/site/about_handler.rb +43 -0
- data/lib/buildmaster/site/content_engine_repository.rb +83 -0
- data/lib/buildmaster/site/element_processor_by_name.rb +18 -0
- data/lib/buildmaster/site/file_processor.rb +59 -0
- data/lib/buildmaster/site/site.rb +29 -6
- data/lib/buildmaster/site/site_server.rb +56 -0
- data/lib/buildmaster/{site_spec.rb → site/site_spec.rb} +63 -38
- data/lib/buildmaster/{site_tester.rb → site/site_tester.rb} +0 -0
- data/lib/buildmaster/site/source_content.rb +12 -0
- data/lib/buildmaster/{source_file_handler.rb → site/source_file_handler.rb} +13 -27
- data/lib/buildmaster/site/template_builder.rb +4 -0
- data/lib/buildmaster/site/template_error.rb +18 -0
- data/lib/buildmaster/{template_runner.rb → site/template_runner.rb} +6 -16
- data/lib/buildmaster/{templatelets.rb → site/templatelets.rb} +3 -1
- data/lib/buildmaster/site/templatelets/attribute.rb +21 -0
- data/lib/buildmaster/site/templatelets/code.rb +82 -0
- data/lib/buildmaster/{templatelets → site/templatelets}/each.rb +7 -5
- data/lib/buildmaster/{templatelets → site/templatelets}/href.rb +1 -1
- data/lib/buildmaster/{templatelets → site/templatelets}/include.rb +0 -0
- data/lib/buildmaster/{templatelets → site/templatelets}/link.rb +2 -3
- data/lib/buildmaster/{templatelets → site/templatelets}/text.rb +1 -1
- data/lib/buildmaster/{templatelets → site/templatelets}/when.rb +4 -7
- data/lib/buildmaster/site/templates/buildmaster/content/border_bottom.gif +0 -0
- data/lib/buildmaster/site/templates/buildmaster/content/buildmaster.css +370 -0
- data/lib/buildmaster/site/templates/buildmaster/content/logo.gif +0 -0
- data/lib/buildmaster/site/templates/buildmaster/content/news-rss2.xml +4 -0
- data/lib/buildmaster/site/templates/buildmaster/content/print.css +65 -0
- data/lib/buildmaster/site/templates/buildmaster/content/ruby.css +14 -0
- data/lib/buildmaster/site/templates/buildmaster/template.html +121 -0
- data/lib/buildmaster/site/templates/cotta/content/border_bottom.gif +0 -0
- data/lib/buildmaster/site/templates/cotta/content/cotta.css +363 -0
- data/lib/buildmaster/site/templates/cotta/content/cotta.gif +0 -0
- data/lib/buildmaster/site/templates/cotta/content/news-rss2.xml +2 -0
- data/lib/buildmaster/site/templates/cotta/template.html +106 -0
- data/lib/buildmaster/site/xtemplate.rb +26 -0
- data/lib/buildmaster/version +1 -0
- data/test/buildmaster/common/tc_properties.rb +24 -0
- data/test/buildmaster/{tc_tree_to_object.rb → common/tc_tree_to_object.rb} +18 -18
- data/test/buildmaster/cotta/cotta_specifications.rb +88 -64
- data/test/buildmaster/cotta/physical_system_stub.rb +3 -3
- data/test/buildmaster/cotta/system_file_specifications.rb +38 -47
- data/test/buildmaster/cotta/tc_command_interface.rb +46 -0
- data/test/buildmaster/cotta/tc_command_runner.rb +28 -0
- data/test/buildmaster/cotta/tc_cotta.rb +35 -9
- data/test/buildmaster/cotta/tc_cotta_dir_in_memory.rb +10 -5
- data/test/buildmaster/cotta/tc_cotta_file_in_memory.rb +3 -3
- data/test/buildmaster/cotta/tc_in_memory_system.rb +7 -2
- data/test/buildmaster/cotta/tc_pathname.rb +22 -0
- data/test/buildmaster/cotta/tc_physical_system.rb +12 -2
- data/test/buildmaster/{build.xml → project/build.xml} +0 -0
- data/test/buildmaster/{manifest.mf → project/manifest.mf} +0 -0
- data/test/buildmaster/{tc_ant_driver.rb → project/tc_ant_driver.rb} +3 -3
- data/test/buildmaster/{tc_build_number_file.rb → project/tc_build_number_file.rb} +7 -7
- data/test/buildmaster/{tc_cvs_driver.rb → project/tc_cvs_driver.rb} +14 -14
- data/test/buildmaster/{tc_java_manifest.rb → project/tc_java_manifest.rb} +7 -7
- data/test/buildmaster/project/tc_release.rb +61 -0
- data/test/buildmaster/project/tc_server_manager.rb +70 -0
- data/test/buildmaster/project/tc_svn_driver.rb +104 -0
- data/test/buildmaster/project/tc_svn_status_info.rb +37 -0
- data/test/buildmaster/project/tc_version_number_file.rb +46 -0
- data/test/buildmaster/{windows → project/windows}/tc_iis_driver.rb +5 -4
- data/test/buildmaster/{windows → project/windows}/tc_sql_server_driver.rb +4 -4
- data/test/buildmaster/site/content/tc_content_engine_repository.rb +63 -0
- data/test/buildmaster/site/tc_element_processor_by_name.rb +29 -0
- data/test/buildmaster/site/tc_file_processor.rb +141 -0
- data/test/buildmaster/site/tc_site.rb +42 -11
- data/test/buildmaster/site/tc_site_server.rb +43 -0
- data/test/buildmaster/{tc_site_spec.rb → site/tc_site_spec.rb} +9 -9
- data/test/buildmaster/{tc_source_file_handler.rb → site/tc_source_file_handler.rb} +10 -9
- data/test/buildmaster/site/tc_template_builder.rb +23 -23
- data/test/buildmaster/site/tc_template_error.rb +15 -0
- data/test/buildmaster/{tc_template_runner.rb → site/tc_template_runner.rb} +22 -17
- data/test/buildmaster/site/tc_templatelets.rb +37 -0
- data/test/buildmaster/{tc_xtemplate.rb → site/tc_xtemplate.rb} +14 -15
- data/test/buildmaster/{template.xhtml → site/template.xhtml} +0 -0
- data/test/buildmaster/{templatelets → site/templatelets}/common_templatelet_test.rb +11 -7
- data/test/buildmaster/{templatelets → site/templatelets}/tc_attribute.rb +14 -10
- data/test/buildmaster/site/templatelets/tc_code.rb +132 -0
- data/test/buildmaster/{templatelets → site/templatelets}/tc_each.rb +25 -12
- data/test/buildmaster/{templatelets → site/templatelets}/tc_href.rb +6 -8
- data/test/buildmaster/{templatelets → site/templatelets}/tc_include.rb +3 -12
- data/test/buildmaster/{templatelets → site/templatelets}/tc_link.rb +11 -18
- data/test/buildmaster/{templatelets → site/templatelets}/tc_text.rb +2 -9
- data/test/buildmaster/{templatelets → site/templatelets}/tc_when.rb +8 -15
- data/test/manual/bms.rb +10 -0
- data/test/tmp/svn_test/repository/README.txt +5 -0
- data/test/tmp/svn_test/repository/conf/authz +21 -0
- data/test/tmp/svn_test/repository/conf/passwd +8 -0
- data/test/tmp/svn_test/repository/conf/svnserve.conf +30 -0
- data/test/tmp/svn_test/repository/db/current +1 -0
- data/test/tmp/svn_test/repository/db/format +1 -0
- data/test/tmp/svn_test/repository/db/fs-type +1 -0
- data/test/tmp/svn_test/repository/db/revprops/0 +5 -0
- data/test/tmp/svn_test/repository/db/revprops/1 +13 -0
- data/test/tmp/svn_test/repository/db/revprops/2 +13 -0
- data/test/tmp/svn_test/repository/db/revprops/3 +13 -0
- data/test/tmp/svn_test/repository/db/revprops/4 +13 -0
- data/test/tmp/svn_test/repository/db/revs/0 +11 -0
- data/test/tmp/svn_test/repository/db/revs/1 +25 -0
- data/test/tmp/svn_test/repository/db/revs/2 +29 -0
- data/test/tmp/svn_test/repository/db/revs/3 +33 -0
- data/test/tmp/svn_test/repository/db/revs/4 +0 -0
- data/test/tmp/svn_test/repository/db/uuid +1 -0
- data/test/tmp/svn_test/repository/db/write-lock +0 -0
- data/test/tmp/svn_test/repository/format +1 -0
- data/test/tmp/svn_test/repository/hooks/post-commit.tmpl +51 -0
- data/test/tmp/svn_test/repository/hooks/post-lock.tmpl +44 -0
- data/test/tmp/svn_test/repository/hooks/post-revprop-change.tmpl +56 -0
- data/test/tmp/svn_test/repository/hooks/post-unlock.tmpl +42 -0
- data/test/tmp/svn_test/repository/hooks/pre-commit.tmpl +70 -0
- data/test/tmp/svn_test/repository/hooks/pre-lock.tmpl +64 -0
- data/test/tmp/svn_test/repository/hooks/pre-revprop-change.tmpl +66 -0
- data/test/tmp/svn_test/repository/hooks/pre-unlock.tmpl +60 -0
- data/test/tmp/svn_test/repository/hooks/start-commit.tmpl +54 -0
- data/test/tmp/svn_test/repository/locks/db-logs.lock +3 -0
- data/test/tmp/svn_test/repository/locks/db.lock +3 -0
- data/test/tmp/svn_test/second/test.txt +1 -0
- data/test/tmp/svn_test/workdir/test.txt +1 -0
- data/test/ts_buildmaster.rb +0 -1
- metadata +168 -69
- data/lib/buildmaster.rb +0 -10
- data/lib/buildmaster/build_file.rb +0 -11
- data/lib/buildmaster/buildnumber +0 -1
- data/lib/buildmaster/file_processor.rb +0 -138
- data/lib/buildmaster/site_server.rb +0 -33
- data/lib/buildmaster/source_content.rb +0 -11
- data/lib/buildmaster/svn_driver.rb +0 -78
- data/lib/buildmaster/template_error.rb +0 -8
- data/lib/buildmaster/templatelets/attribute.rb +0 -16
- data/lib/buildmaster/xtemplate.rb +0 -27
- data/lib/mock.rb +0 -3
- data/lib/mock/mock_base.rb +0 -24
- data/test/buildmaster/tc_file_processor.rb +0 -125
- data/test/buildmaster/tc_svn_driver.rb +0 -81
- data/test/tmp/output/index.html +0 -8
- data/test/tmp/output/markdown.html +0 -8
- data/test/tmp/output/textile.html +0 -8
File without changes
|
File without changes
|
@@ -1,8 +1,8 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib", "buildmaster")
|
2
2
|
|
3
3
|
require 'spec'
|
4
|
-
require '
|
5
|
-
require '
|
4
|
+
require 'project'
|
5
|
+
require 'cotta'
|
6
6
|
|
7
7
|
module BuildMaster
|
8
8
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'buildmaster')
|
2
2
|
|
3
3
|
require 'spec'
|
4
4
|
|
5
|
-
require '
|
6
|
-
require '
|
7
|
-
require '
|
5
|
+
require 'project/build_number_file'
|
6
|
+
require 'cotta'
|
7
|
+
require 'cotta/in_memory_system'
|
8
8
|
|
9
9
|
module BuildMaster
|
10
10
|
context 'BuildNumberFileTest' do
|
@@ -20,7 +20,7 @@ context 'BuildNumberFileTest' do
|
|
20
20
|
path = @cotta.file('tmp/buildnumber')
|
21
21
|
path.save(2)
|
22
22
|
build_number = BuildNumberFile.new(path)
|
23
|
-
build_number.number.
|
23
|
+
build_number.number.should == 2
|
24
24
|
end
|
25
25
|
|
26
26
|
specify 'increase_build' do
|
@@ -28,9 +28,9 @@ context 'BuildNumberFileTest' do
|
|
28
28
|
path.save(3)
|
29
29
|
build_number = BuildNumberFile.new(path)
|
30
30
|
build_number.increase_build
|
31
|
-
build_number.number.
|
31
|
+
build_number.number.should == 4
|
32
32
|
reloaded = BuildNumberFile.new(path)
|
33
|
-
reloaded.number.
|
33
|
+
reloaded.number.should == 4
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib", 'buildmaster')
|
2
2
|
|
3
3
|
require 'spec'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
4
|
+
require 'cotta'
|
5
|
+
require 'cotta/in_memory_system'
|
6
|
+
require 'cvs_driver'
|
7
7
|
|
8
8
|
module BuildMaster
|
9
9
|
|
@@ -29,34 +29,34 @@ context 'CvsDriverTest' do
|
|
29
29
|
folder.file('ROOT').save(root)
|
30
30
|
folder.file('Repository').save(repository)
|
31
31
|
cvs = CvsInfo.load(folder)
|
32
|
-
cvs.root.
|
33
|
-
cvs.repository.
|
32
|
+
cvs.root.should == root
|
33
|
+
cvs.repository.should == repository
|
34
34
|
end
|
35
35
|
|
36
36
|
specify 'checkout' do
|
37
|
+
@system.output_for_command 'cvs -d root co -d working module', ''
|
37
38
|
client = CvsDriver.new(CvsInfo.new('root', 'module'), @working)
|
38
39
|
client.checkout
|
39
|
-
@system.executed_commands.size.
|
40
|
-
@system.executed_commands[0].should_equal 'cvs -d root co -d working module'
|
40
|
+
@system.executed_commands.size.should == 1
|
41
41
|
end
|
42
42
|
|
43
43
|
specify 'update' do
|
44
|
+
@system.output_for_command 'cvs -d root update working', ''
|
45
|
+
@system.output_for_command 'cvs -d root update -PAd working', ''
|
44
46
|
log = ''
|
45
47
|
client = CvsDriver.new(CvsInfo.new('root', 'module'), @working)
|
46
48
|
client.update
|
47
|
-
@system.executed_commands.size.
|
48
|
-
@system.executed_commands[0].should_equal 'cvs -d root update working'
|
49
|
+
@system.executed_commands.size.should == 1
|
49
50
|
client.update('-PAd')
|
50
|
-
@system.executed_commands.size.
|
51
|
-
@system.executed_commands[1].should_equal 'cvs -d root update -PAd working'
|
51
|
+
@system.executed_commands.size.should == 2
|
52
52
|
end
|
53
53
|
|
54
54
|
specify 'command' do
|
55
|
+
@system.output_for_command 'cvs -d root command -option argument working', ''
|
55
56
|
log = ''
|
56
57
|
client = CvsDriver.new(CvsInfo.new('root', 'module'), @working)
|
57
58
|
client.command('command -option argument')
|
58
|
-
@system.executed_commands.size.
|
59
|
-
@system.executed_commands[0].should_equal 'cvs -d root command -option argument working'
|
59
|
+
@system.executed_commands.size.should == 1
|
60
60
|
end
|
61
61
|
|
62
62
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib", 'buildmaster')
|
2
2
|
|
3
3
|
require 'spec'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
4
|
+
require 'cotta'
|
5
|
+
require 'cotta/in_memory_system'
|
6
|
+
require 'java_manifest'
|
7
7
|
|
8
8
|
module BuildMaster
|
9
9
|
|
@@ -28,7 +28,7 @@ CONTENT
|
|
28
28
|
)
|
29
29
|
manifest = JavaManifest.new(file)
|
30
30
|
version = manifest.version
|
31
|
-
"2.3.3".
|
31
|
+
"2.3.3".should == version.number
|
32
32
|
end
|
33
33
|
|
34
34
|
specify 'increase_build' do
|
@@ -44,8 +44,8 @@ CONTENT
|
|
44
44
|
manifest = JavaManifest.new(file)
|
45
45
|
build_number = manifest.version.build
|
46
46
|
version = manifest.increase_build
|
47
|
-
(build_number + 1).
|
48
|
-
manifest.version.build.
|
47
|
+
(build_number + 1).should == version.build
|
48
|
+
manifest.version.build.should == version.build
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'buildmaster', 'build')
|
2
|
+
|
3
|
+
require 'release'
|
4
|
+
require 'spec'
|
5
|
+
|
6
|
+
module BuildMaster
|
7
|
+
|
8
|
+
context 'release management' do
|
9
|
+
specify 'run tasks in order' do
|
10
|
+
mock = mock('tasks')
|
11
|
+
mock.should_receive(:one).once.ordered
|
12
|
+
mock.should_receive(:two).once.ordered
|
13
|
+
release = Release.new
|
14
|
+
release.task('one') {mock.one}
|
15
|
+
release.task('two') {mock.two}
|
16
|
+
release.execute
|
17
|
+
end
|
18
|
+
|
19
|
+
specify 'run task from specified step in order' do
|
20
|
+
mock = mock('tasks')
|
21
|
+
mock.should_receive(:two).once.ordered
|
22
|
+
mock.should_receive(:three).once.ordered
|
23
|
+
release = Release.new
|
24
|
+
release.task('one') {mock.one}
|
25
|
+
release.task('two') {mock.two}
|
26
|
+
release.task('three') {mock.three}
|
27
|
+
release.execute('two')
|
28
|
+
end
|
29
|
+
|
30
|
+
specify 'run tasks between two' do
|
31
|
+
mock = mock('tasks')
|
32
|
+
mock.should_receive(:two).once.ordered
|
33
|
+
mock.should_receive(:three).once.ordered
|
34
|
+
release = Release.new
|
35
|
+
release.task('one') {mock.one}
|
36
|
+
release.task('two') {mock.two}
|
37
|
+
release.task('three') {mock.three}
|
38
|
+
release.task('four') {mock.four}
|
39
|
+
release.execute('two', 'three')
|
40
|
+
end
|
41
|
+
|
42
|
+
specify 'don\'t allow duplicate tasks' do
|
43
|
+
release = Release.new
|
44
|
+
release.task('one') {}
|
45
|
+
Proc.new {release.task('one')}.should_raise RuntimeError
|
46
|
+
end
|
47
|
+
|
48
|
+
specify 'raise error for task not found' do
|
49
|
+
release = Release.new
|
50
|
+
release.task('two') {}
|
51
|
+
Proc.new {release.execute('one')}.should_raise RuntimeError
|
52
|
+
end
|
53
|
+
|
54
|
+
specify 'raise error for empty task' do
|
55
|
+
release = Release.new
|
56
|
+
Proc.new {release.execute}.should_raise RuntimeError
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec'
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'buildmaster')
|
4
|
+
|
5
|
+
require 'project/server_manager'
|
6
|
+
|
7
|
+
module BuildMaster
|
8
|
+
class StubServer
|
9
|
+
def initialize
|
10
|
+
@count = 0
|
11
|
+
end
|
12
|
+
|
13
|
+
def start
|
14
|
+
end
|
15
|
+
|
16
|
+
def stop
|
17
|
+
@count = 0
|
18
|
+
end
|
19
|
+
|
20
|
+
def running?
|
21
|
+
if (@count == 3)
|
22
|
+
return true
|
23
|
+
end
|
24
|
+
@count = @count + 1
|
25
|
+
return false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'server manager' do
|
30
|
+
specify 'server manager default to stopped status' do
|
31
|
+
ServerManager.new(mock('server')).status.should == 'stopped'
|
32
|
+
end
|
33
|
+
|
34
|
+
specify 'launch server' do
|
35
|
+
server = mock('server')
|
36
|
+
server.should_receive(:start)
|
37
|
+
server.should_receive(:running?).and_return(true)
|
38
|
+
manager = ServerManager.new(server)
|
39
|
+
manager.start
|
40
|
+
manager.status.should == 'started'
|
41
|
+
end
|
42
|
+
|
43
|
+
specify 'keep checking server to see if it is running' do
|
44
|
+
manager = ServerManager.new(StubServer.new)
|
45
|
+
manager.start
|
46
|
+
manager.status.should == 'started'
|
47
|
+
end
|
48
|
+
|
49
|
+
specify 'stop and wait until it is not runnig anymore' do
|
50
|
+
manager = ServerManager.new(StubServer.new)
|
51
|
+
manager.start
|
52
|
+
manager.stop
|
53
|
+
manager.status.should == 'stopped'
|
54
|
+
end
|
55
|
+
|
56
|
+
specify 'raise error if start failed' do
|
57
|
+
server = mock('server that fails on start')
|
58
|
+
server.should_receive(:start).and_raise 'error'
|
59
|
+
server.should_receive(:running?).any_number_of_times.and_return(false)
|
60
|
+
manager = ServerManager.new(server)
|
61
|
+
begin
|
62
|
+
manager.start
|
63
|
+
fail('should have raised error')
|
64
|
+
rescue
|
65
|
+
ensure
|
66
|
+
manager.status.should == 'error'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib", 'buildmaster')
|
2
|
+
|
3
|
+
require 'spec'
|
4
|
+
require 'svn_admin_driver'
|
5
|
+
require 'cotta'
|
6
|
+
require 'cotta/in_memory_system'
|
7
|
+
|
8
|
+
module BuildMaster
|
9
|
+
|
10
|
+
context 'SVN drivers' do
|
11
|
+
setup do
|
12
|
+
file = File.expand_path(__FILE__)
|
13
|
+
test_dir = Cotta.new.file(file).parent.parent.parent.dir('tmp/svn_test')
|
14
|
+
test_dir.delete if (test_dir.exists?)
|
15
|
+
test_dir.mkdirs
|
16
|
+
@repository = test_dir.dir('repository')
|
17
|
+
@url = "file:///#{@repository.path}"
|
18
|
+
@svn_admin = SvnAdminDriver.new(@repository.path)
|
19
|
+
@svn_admin.create
|
20
|
+
@work_dir_root = test_dir.dir('workdir')
|
21
|
+
@svn = SvnDriver.new @work_dir_root
|
22
|
+
end
|
23
|
+
|
24
|
+
specify 'check out, add, commit, update' do
|
25
|
+
second = @work_dir_root.parent.dir('second')
|
26
|
+
second_svn = SvnDriver.new(second)
|
27
|
+
@svn.checkout(@url)
|
28
|
+
second_svn.checkout(@url)
|
29
|
+
@work_dir_root.file('test.txt').save('my testing content')
|
30
|
+
@svn.add(@work_dir_root.file('test.txt'))
|
31
|
+
@svn.commit('testing the checkin')
|
32
|
+
second_svn.update
|
33
|
+
second.file('test.txt').load.should == 'my testing content'
|
34
|
+
end
|
35
|
+
|
36
|
+
=begin
|
37
|
+
def expect_info
|
38
|
+
@system.should_receive(:shell).with("svn info #{@work_dir_root.path}").and_return(<<CONTENT
|
39
|
+
Path: .
|
40
|
+
URL: svn+ssh://wolfdancer@rubyforge.org/var/svn/buildmaster/trunk
|
41
|
+
Repository Root: svn+ssh://wolfdancer@rubyforge.org/var/svn/buildmaster
|
42
|
+
Repository UUID: ab7ff8c2-9713-0410-a269-a4b56b3120d2
|
43
|
+
Revision: 153
|
44
|
+
Node Kind: directory
|
45
|
+
Schedule: normal
|
46
|
+
Last Changed Author: wolfdancer
|
47
|
+
Last Changed Rev: 153
|
48
|
+
Last Changed Date: 2006-10-15 21:27:51 -0700 (Sun, 15 Oct 2006)
|
49
|
+
CONTENT
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
specify 'load svn info from the info command' do
|
54
|
+
expect_info
|
55
|
+
@svn.work_dir.should == @work_dir_root
|
56
|
+
@svn.repository_root.should == 'svn+ssh://wolfdancer@rubyforge.org/var/svn/buildmaster'
|
57
|
+
end
|
58
|
+
|
59
|
+
specify 'svn status command' do
|
60
|
+
log = ''
|
61
|
+
@system.should_receive(:shell).with "svn status #{@work_dir_root.path}"
|
62
|
+
@svn.status
|
63
|
+
end
|
64
|
+
|
65
|
+
specify 'svn update command' do
|
66
|
+
log = ''
|
67
|
+
@system.should_receive(:shell).with "svn update #{@work_dir_root.path}"
|
68
|
+
@svn.update
|
69
|
+
end
|
70
|
+
|
71
|
+
specify 'svn commit command' do
|
72
|
+
@system.should_receive(:shell).with "svn commit #{@work_dir_root.path} -m \"message\""
|
73
|
+
@svn.commit('message')
|
74
|
+
end
|
75
|
+
|
76
|
+
specify 'svn check out command' do
|
77
|
+
expect_info
|
78
|
+
repository_root = @svn.repository_root
|
79
|
+
@system.should_receive(:shell).with "svn checkout #{repository_root}/trunk output"
|
80
|
+
@svn.checkout('output')
|
81
|
+
end
|
82
|
+
|
83
|
+
specify 'svn command' do
|
84
|
+
@system.should_receive(:shell).with "svn info #{@work_dir_root.path}"
|
85
|
+
@svn.command('info')
|
86
|
+
end
|
87
|
+
|
88
|
+
specify 'svn tag' do
|
89
|
+
expect_info
|
90
|
+
tag = 'build_0.0.5_b3'
|
91
|
+
@system.should_receive(:shell).with("svn copy #{@svn.repository_root}/trunk #{@svn.repository_root}/tags/#{tag} -m \"ruby buildmaster\"")
|
92
|
+
@svn.tag(tag)
|
93
|
+
end
|
94
|
+
|
95
|
+
specify 'physical svn works' do
|
96
|
+
cotta = Cotta.new
|
97
|
+
svn = SvnDriver.new(cotta.file(__FILE__).parent)
|
98
|
+
svn.repository_root.should == 'svn+ssh://wolfdancer@rubyforge.org/var/svn/buildmaster'
|
99
|
+
end
|
100
|
+
=end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib', 'buildmaster')
|
2
|
+
|
3
|
+
require 'spec'
|
4
|
+
require 'svn_status_info'
|
5
|
+
|
6
|
+
module BuildMaster
|
7
|
+
|
8
|
+
context 'svn status info' do
|
9
|
+
specify 'parse local changes' do
|
10
|
+
content = <<CONTENT
|
11
|
+
<?xml version="1.0"?>
|
12
|
+
<status>
|
13
|
+
<target
|
14
|
+
path=".">
|
15
|
+
<entry
|
16
|
+
path="pathone">
|
17
|
+
<wc-status
|
18
|
+
props="none"
|
19
|
+
item="unversioned">
|
20
|
+
</wc-status>
|
21
|
+
</entry>
|
22
|
+
<entry
|
23
|
+
path="pathtwo">
|
24
|
+
<wc-status
|
25
|
+
props="none"
|
26
|
+
item="unversioned">
|
27
|
+
</wc-status>
|
28
|
+
</entry>
|
29
|
+
</target>
|
30
|
+
</status>
|
31
|
+
CONTENT
|
32
|
+
info = SvnStatusInfo.parse_xml(content)
|
33
|
+
info.should_have(2).unversioned
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'buildmaster')
|
2
|
+
|
3
|
+
require 'spec'
|
4
|
+
|
5
|
+
require 'project/version_number_file'
|
6
|
+
require 'cotta'
|
7
|
+
require 'cotta/in_memory_system'
|
8
|
+
|
9
|
+
module BuildMaster
|
10
|
+
context 'BuildNumberFileTest' do
|
11
|
+
setup do
|
12
|
+
@cotta = Cotta.new(InMemorySystem.new)
|
13
|
+
end
|
14
|
+
|
15
|
+
teardown do
|
16
|
+
@cotta = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
specify 'load_file' do
|
20
|
+
path = @cotta.file('tmp/versionnumber')
|
21
|
+
path.save('1.5.50')
|
22
|
+
version_number = VersionNumberFile.new(path)
|
23
|
+
version_number.build_number.should == 50
|
24
|
+
version_number.version_number.should == '1.5.50'
|
25
|
+
end
|
26
|
+
|
27
|
+
specify 'increase_build' do
|
28
|
+
path = @cotta.file('tmp/buildnumber')
|
29
|
+
path.save('2.9.1')
|
30
|
+
version_number = VersionNumberFile.new(path)
|
31
|
+
version_number.increase_build
|
32
|
+
version_number.build_number.should == 2
|
33
|
+
version_number.version_number.should == '2.9.2'
|
34
|
+
reloaded = VersionNumberFile.new(path)
|
35
|
+
reloaded.build_number.should == 2
|
36
|
+
end
|
37
|
+
|
38
|
+
specify 'handle file with only major and minor version number' do
|
39
|
+
path = @cotta.file('tmp/version')
|
40
|
+
path.save('2.2')
|
41
|
+
version_number = VersionNumberFile.new(path)
|
42
|
+
version_number.build_number.should == 0
|
43
|
+
version_number.version_number.should == '2.2.0'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|