BuildMaster 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,11 @@
1
1
  $:.unshift(File.dirname(__FILE__))
2
2
 
3
+ require 'buildmaster/java_manifest'
3
4
  require 'buildmaster/shell_command'
4
5
  require 'buildmaster/release_control'
5
- require 'buildmaster/ant_client'
6
- require 'buildmaster/cvs_client'
6
+ require 'buildmaster/ant_driver'
7
+ require 'buildmaster/cvs_driver'
7
8
  require 'buildmaster/svn_driver'
9
+ require 'buildmaster/site_spec'
8
10
  require 'buildmaster/site'
9
11
  require 'buildmaster/xtemplate'
@@ -1,7 +1,11 @@
1
1
  module BuildMaster
2
2
 
3
- class Ant
3
+ class AntDriver
4
4
  include Shell
5
+ def AntDriver.from_file(ant_file)
6
+ return AntDriver.new(ant_file)
7
+ end
8
+
5
9
  def initialize(ant_file = nil, &command_runner)
6
10
  @ant_file = ant_file
7
11
  @ant_home = check_directory(get_environment('ANT_HOME'))
@@ -58,6 +62,10 @@ class Ant
58
62
  run_command(command_line)
59
63
  end
60
64
 
65
+ def method_missing(method, *args)
66
+ target(method)
67
+ end
68
+
61
69
  private :get_java_command
62
70
 
63
71
  end
@@ -22,10 +22,10 @@ class CvsInfo
22
22
 
23
23
  end
24
24
 
25
- class CvsClient
25
+ class CvsDriver
26
26
  include Shell
27
- def CvsClient.load(working_directory)
28
- return CvsClient.new(CvsInfo.load("#{working_directory}/CVS"), working_directory)
27
+ def CvsDriver.from_path(working_directory)
28
+ return CvsDriver.new(CvsInfo.load("#{working_directory}/CVS"), working_directory)
29
29
  end
30
30
 
31
31
  def initialize(cvs_info, working_directory, &command_runner)
@@ -38,24 +38,10 @@ HTML
38
38
  return process_html_content(File.open(@content_path))
39
39
  end
40
40
 
41
- private
42
41
  def process_html_content(source)
43
- document_with_skin = @template.process(source) do |message|
44
- begin
45
- method = @evaluator.method(message)
46
- if (method.arity == 0)
47
- method.call
48
- else
49
- method.call(@content_path)
50
- end
51
- rescue NameError
52
- raise TemplateException,
53
- "unable to process message: #{message}: #{$!}" ,
54
- caller
55
- end
42
+ document_with_skin = @template.process(source) {|message| @evaluator.evaluate(message, @content_path)}
43
+ return document_with_skin
56
44
  end
57
- return document_with_skin
58
- end
59
45
 
60
46
  end
61
47
 
@@ -0,0 +1,72 @@
1
+ module BuildMaster
2
+ class JavaManifest
3
+ def initialize(manifest_file)
4
+ @manifest_file = manifest_file
5
+ end
6
+
7
+ def version
8
+ number = nil
9
+ build = nil
10
+ IO.foreach(@manifest_file) do |line|
11
+ name_value = NameValue.parse(line)
12
+ if (name_value.name== "Implementation-Version")
13
+ number = name_value.value
14
+ elsif (name_value.name == "Implementation-Build")
15
+ build = name_value.value
16
+ end
17
+ end
18
+ return Version.new(number, build.to_i)
19
+ end
20
+
21
+ def increase_build
22
+ content = ""
23
+ number = nil
24
+ build = nil
25
+ IO.foreach(@manifest_file) do |line|
26
+ name_value = NameValue.parse(line)
27
+ if (name_value.name== "Implementation-Version")
28
+ number = name_value.value
29
+ content = content + line
30
+ elsif (name_value.name == "Implementation-Build")
31
+ build = name_value.value.to_i + 1
32
+ content = content + "Implementation-Build: #{build}\n"
33
+ else
34
+ content = content + line
35
+ end
36
+ end
37
+ File.open(@manifest_file, "w") do |file|
38
+ file.printf(content)
39
+ end
40
+ return Version.new(number, build)
41
+ end
42
+ end
43
+
44
+ class NameValue
45
+ attr_reader :name, :value
46
+
47
+ def NameValue.parse(line)
48
+ name_value = NameValue.new(nil, nil)
49
+ index = line.index(':')
50
+ if (index)
51
+ name=line[0, index]
52
+ value=line[index+1, line.length].strip
53
+ name_value = NameValue.new(name, value)
54
+ end
55
+ return name_value
56
+ end
57
+
58
+ def initialize(name, value)
59
+ @name = name
60
+ @value = value
61
+ end
62
+ end
63
+
64
+ class Version
65
+ attr_reader :number, :build
66
+
67
+ def initialize(number, build)
68
+ @number = number
69
+ @build = build
70
+ end
71
+ end
72
+ end
@@ -25,7 +25,7 @@ $debug = true
25
25
  #######################################################################
26
26
  require 'Ant'
27
27
 
28
- if not Ant.new().launch(ARGV)
29
- raise 'Ant failed'
28
+ if not AntDriver.new().launch(ARGV)
29
+ raise 'AntDriver failed'
30
30
  end
31
31
 
@@ -1,6 +1,7 @@
1
1
  module Shell
2
2
  private
3
3
  def run(command)
4
+ puts "--> #{command}"
4
5
  if (!system(command))
5
6
  raise "error running command: #{command}"
6
7
  end
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
  require 'redcloth'
5
5
  require 'source_file_handler'
6
6
  require 'file_processor'
7
+ require 'site_spec'
7
8
 
8
9
  module BuildMaster
9
10
  #todo match only beginning of the file
@@ -15,51 +16,6 @@ TEXTILE_REGX = /---(-)*\n(.*)\n(-)*---/
15
16
  end
16
17
  end
17
18
 
18
- class SiteSpec
19
- def self.get_instance
20
- self.new()
21
- end
22
-
23
- attr_accessor :output_dir, :content_dir, :template, :template_file
24
-
25
- def validate_inputs
26
- validate_dir(@content_dir, :content_dir)
27
- end
28
-
29
- def load_template
30
- if (@template)
31
- return XTemplate.new(@template)
32
- else
33
- return XTemplate.new(File.open(@template_file))
34
- end
35
- end
36
-
37
- private
38
- def validate_dir(directory, symbol)
39
- if not directory
40
- raise "Directory for #{symbol.id2name} not specified"
41
- end
42
- if not File.exists? directory
43
- raise "Directory for #{symbol.id2name} -- <#{directory}#> does not exist"
44
- end
45
- if not File.directory? directory
46
- raise "<#{directory}> should be a directory for #{symbol.id2name}"
47
- end
48
- end
49
-
50
- def validate_file(file, symbol)
51
- if not file
52
- raise "File for #{symbol.id2name} not specified"
53
- end
54
- if (not File.exists? file)
55
- raise "File for #{symbol.id2name} -- <#{file}> does not exist"
56
- end
57
- if not File.file? file
58
- raise "#<{file} should be a file for #{symbol.id2name}"
59
- end
60
- end
61
- end
62
-
63
19
  class Site
64
20
  def initialize(spec)
65
21
  @spec = spec
@@ -73,7 +29,7 @@ TEXTILE_REGX = /---(-)*\n(.*)\n(-)*---/
73
29
  if arguments.size > 0
74
30
  action = arguments[0]
75
31
  end
76
- method(action).call
32
+ send action
77
33
  end
78
34
 
79
35
  def build
@@ -0,0 +1,84 @@
1
+ require 'pathname'
2
+
3
+ module BuildMaster
4
+ class SiteSpec
5
+ def self.get_instance
6
+ self.new()
7
+ end
8
+
9
+ attr_accessor :output_dir, :content_dir, :template, :template_file
10
+
11
+ def properties
12
+ @properties = Hash.new unless @properties
13
+ return @properties
14
+ end
15
+
16
+ def validate_inputs
17
+ validate_dir(@content_dir, :content_dir)
18
+ end
19
+
20
+ def load_template
21
+ if (@template)
22
+ return XTemplate.new(@template)
23
+ else
24
+ return XTemplate.new(File.open(@template_file))
25
+ end
26
+ end
27
+
28
+ def relative_to_root(path)
29
+ to = path_name(path)
30
+ from = path_name(@content_dir)
31
+ return to.relative_path_from(from)
32
+ end
33
+
34
+ def evaluate(expression, path)
35
+ value_from_properties = properties()[expression]
36
+ if (value_from_properties)
37
+ return value_from_properties
38
+ end
39
+ if (!respond_to?(expression, true))
40
+ raise "Neither property nor method found with name '#{expression}'"
41
+ end
42
+ relative_path = relative_to_root(path)
43
+ if (expression == 'relative_to_root')
44
+ return relative_path
45
+ else
46
+ send(expression, relative_to_root(path).to_s)
47
+ end
48
+ end
49
+
50
+ def add_property(name, value)
51
+ properties()[name] = value
52
+ end
53
+
54
+ private
55
+ def path_name(path)
56
+ return Pathname.new(path.gsub(/\\/, '/'))
57
+ end
58
+
59
+ def validate_dir(directory, symbol)
60
+ if not directory
61
+ raise "Directory for #{symbol.id2name} not specified"
62
+ end
63
+ if not File.exists? directory
64
+ raise "Directory for #{symbol.id2name} -- <#{directory}> does not exist"
65
+ end
66
+ if not File.directory? directory
67
+ raise "<#{directory}> should be a directory for #{symbol.id2name}"
68
+ end
69
+ end
70
+
71
+ def validate_file(file, symbol)
72
+ if not file
73
+ raise "File for #{symbol.id2name} not specified"
74
+ end
75
+ if (not File.exists? file)
76
+ raise "File for #{symbol.id2name} -- <#{file}> does not exist"
77
+ end
78
+ if not File.file? file
79
+ raise "#<{file} should be a file for #{symbol.id2name}"
80
+ end
81
+ end
82
+ end
83
+
84
+ end
@@ -1,6 +1,6 @@
1
1
  module BuildMaster
2
2
  class TemplateRunner
3
- NAMESPACE = "http://buildmaster.rubyforge.org/xtemplate/1.0"
3
+ BuildMaster::NAMESPACE = "http://buildmaster.rubyforge.org/xtemplate/1.0"
4
4
 
5
5
  def initialize(result, template, source, &evaluator)
6
6
  @result = result
@@ -39,14 +39,9 @@ module BuildMaster
39
39
  end
40
40
 
41
41
  def process_directive(target, template_element)
42
- begin
43
- action = method("process_#{template_element.name}_directive")
44
- action.call(target, template_element)
45
- rescue NameError
46
- raise TemplateException,
47
- "unable to process template:#{template_element.name}: #{$!}" ,
48
- caller
49
- end
42
+ message = "process_#{template_element.name}_directive"
43
+ raise TemplateException, "unable to process element template:#{template_element.name}" unless respond_to?(message, true)
44
+ send(message, target, template_element)
50
45
  end
51
46
 
52
47
  def clone_element( template_element )
@@ -103,6 +98,29 @@ module BuildMaster
103
98
  end
104
99
  end
105
100
 
101
+ def process_link_directive(target_element, template_element)
102
+ current_path = @evaluator.call('relative_to_root')
103
+ file_name = current_path.basename(current_path.extname).to_s + ".html"
104
+ current_html_path = current_path.parent().join(file_name)
105
+ href = Pathname.new(attribute!(template_element, 'href'))
106
+ if (href.absolute?)
107
+ href = href.relative_path_from(Pathname.new('/'))
108
+ end
109
+ anchor_or_div = nil
110
+ if (current_html_path == href)
111
+ anchor_or_div = REXML::Element.new('div')
112
+ anchor_or_div.attributes['class']='current'
113
+ else
114
+ anchor_or_div = REXML::Element.new('a')
115
+ anchor_or_div.attributes['href'] = href.relative_path_from(current_html_path.parent())
116
+ end
117
+ template_element.attributes.each do |name, value|
118
+ anchor_or_div.attributes[name] = value unless name == 'href'
119
+ end
120
+ process_children(anchor_or_div, template_element)
121
+ target_element.add(anchor_or_div)
122
+ end
123
+
106
124
  def evaluate!(xml_element, attribute_name)
107
125
  value = evaluate(xml_element, attribute_name)
108
126
  message = xml_element.attributes[attribute_name]
@@ -0,0 +1,5 @@
1
+ Implementation-Version: 2.3.3
2
+ Implementation-Build: 1000
3
+
4
+ Implementation-Vendor: Vendor
5
+ Implementation-Number: Number
@@ -10,7 +10,7 @@ class AntTest < Test::Unit::TestCase
10
10
  def setup
11
11
  super
12
12
  build_file = File.join(File.dirname(__FILE__), "build.xml")
13
- @ant = Ant.new(build_file)
13
+ @ant = AntDriver.from_file(build_file)
14
14
  end
15
15
 
16
16
  public
@@ -23,6 +23,10 @@ class AntTest < Test::Unit::TestCase
23
23
  @ant.target('passing')
24
24
  end
25
25
 
26
+ def test_dynamic_method
27
+ @ant.passing
28
+ end
29
+
26
30
  def test_fail
27
31
  assert_raise(RuntimeError) {@ant.target('failing')}
28
32
  end
@@ -5,7 +5,7 @@ require 'buildmaster'
5
5
 
6
6
  module BuildMaster
7
7
 
8
- class CvsClientTest < Test::Unit::TestCase
8
+ class CvsDriverTest < Test::Unit::TestCase
9
9
  protected
10
10
  def setUp()
11
11
  super
@@ -33,14 +33,14 @@ class CvsClientTest < Test::Unit::TestCase
33
33
 
34
34
  def tes_checkout
35
35
  log = ''
36
- client = CvsClient.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
36
+ client = CvsDriver.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
37
37
  client.checkout
38
38
  assert_equal('cvs -d root co -d working module', log)
39
39
  end
40
40
 
41
41
  def test_update
42
42
  log = ''
43
- client = CvsClient.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
43
+ client = CvsDriver.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
44
44
  client.update
45
45
  assert_equal('cvs -d root update working', log)
46
46
  client.update('-PAd')
@@ -49,7 +49,7 @@ class CvsClientTest < Test::Unit::TestCase
49
49
 
50
50
  def test_command
51
51
  log = ''
52
- client = CvsClient.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
52
+ client = CvsDriver.new(CvsInfo.new('root', 'module'), 'working') {|command| log = command}
53
53
  client.command('command -option argument')
54
54
  assert_equal('cvs -d root command -option argument working', log)
55
55
  end
@@ -0,0 +1,34 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
2
+
3
+ require 'test/unit'
4
+ require 'rexml/document'
5
+ require 'buildmaster/file_processor'
6
+ require 'buildmaster/xtemplate'
7
+
8
+ module BuildMaster
9
+ class FileProcessorTest < Test::Unit::TestCase
10
+ def test_expression_evaluation
11
+ template = XTemplate.new(<<CONTENT
12
+ <html xmlns="http://www.w3.org/1999/xhtml"
13
+ xmlns:template="http://buildmaster.rubyforge.org/xtemplate/1.0">
14
+ <p>
15
+ <template:attribute name="class" eval="method_one"/>
16
+ </p>
17
+ </html>
18
+ CONTENT
19
+ )
20
+ processor = FileProcessor.new(template, "content_path", self)
21
+ document = processor.process_html_content("<html></html>")
22
+ assert_equal('method one result',
23
+ REXML::XPath.first(REXML::Document.new(document.to_s), '/html/p/@class').value.strip)
24
+
25
+ end
26
+
27
+ def evaluate(expression, path)
28
+ assert_equal('method_one', expression)
29
+ assert_equal('content_path', path)
30
+ return "method one result"
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,23 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
2
+
3
+ require 'test/unit'
4
+ require 'buildmaster'
5
+
6
+ module BuildMaster
7
+
8
+ class JavaManifestTest < Test::Unit::TestCase
9
+ def test_loading_manifest
10
+ manifest = JavaManifest.new(File.join(File.dirname(__FILE__), "manifest.mf"))
11
+ version = manifest.version
12
+ assert_equal(version.number, "2.3.3")
13
+ end
14
+
15
+ def test_increase_build
16
+ manifest = JavaManifest.new(File.join(File.dirname(__FILE__), "manifest.mf"))
17
+ build_number = manifest.version.build
18
+ version = manifest.increase_build
19
+ assert_equal(version.build, build_number + 1)
20
+ assert_equal(version.build, manifest.version.build)
21
+ end
22
+ end
23
+ end
@@ -8,7 +8,7 @@ module BuildMaster
8
8
 
9
9
  class ReleaseTest < Test::Unit::TestCase
10
10
  def testRelease
11
- cvs_mock = Mock.new(CvsClient)
11
+ cvs_mock = Mock.new(CvsDriver)
12
12
  cvs_mock.expects(:checkout)
13
13
  cvs_mock.expects(:tag)
14
14
  cvs_mock.expects(:commit)
@@ -0,0 +1,66 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
2
+
3
+ require 'test/unit'
4
+ require 'buildmaster'
5
+
6
+ module BuildMaster
7
+
8
+ class SiteSpecTest < Test::Unit::TestCase
9
+ def test_should_get_relative_path
10
+ spec = SiteSpec.new
11
+ spec.content_dir = '/one/two/content'
12
+ assert_equal('images/logo.gif', spec.relative_to_root('/one/two/content/images/logo.gif').to_s)
13
+ end
14
+
15
+ def test_should_support_windows_path
16
+ spec = SiteSpec.new
17
+ spec.content_dir = "C:\\Work\\project\\content"
18
+ assert_equal('images/logo.gif', spec.relative_to_root('C:\\Work\\project\\content\\images\\logo.gif').to_s)
19
+ end
20
+
21
+ def test_should_evaluate
22
+ spec = SampleSiteSpec.new
23
+ spec.content_dir = '/one/two/content'
24
+ result = spec.evaluate('expression', '/one/two/content/dir/file.txt')
25
+ assert_equal('dir/file.txt', result)
26
+ end
27
+
28
+ def test_should_check_for_property
29
+ spec = SiteSpec.new
30
+ spec.content_dir = "/one"
31
+ spec.add_property('release', '0.6')
32
+ assert_equal('0.6', spec.evaluate('release', '/one'))
33
+ end
34
+
35
+ def test_should_throw_error_with_proper_message_for_expression_problem
36
+ spec = SiteSpec.new
37
+ spec.content_dir = "/one"
38
+ begin
39
+ spec.evaluate('expression', '/one/two')
40
+ fail('exception should have been thrown')
41
+ rescue RuntimeError => boom
42
+ assert_equal("Neither property nor method found with name 'expression'", boom.message)
43
+ end
44
+ end
45
+
46
+ def test_relative_to_root_expression
47
+ spec = SiteSpec.new
48
+ spec.content_dir = '/one'
49
+ actual = spec.evaluate('relative_to_root', '/one/two')
50
+ assert_equal(Pathname.new('two'), actual)
51
+ end
52
+
53
+ end
54
+
55
+ class SampleSiteSpec < SiteSpec
56
+ private
57
+ def expression(path)
58
+ return path
59
+ end
60
+
61
+ def expression2
62
+ return 'expected'
63
+ end
64
+ end
65
+
66
+ end
@@ -32,14 +32,6 @@ END
32
32
  template_element = REXML::XPath.first(REXML::Document.new(template_content), "/html/p")
33
33
  source_xml = REXML::Document.new(source_content)
34
34
  source_element = REXML::XPath.first(source_xml, '/persons/person[@id="1"]')
35
- # puts "========= TARGET ========="
36
- # puts target_element
37
- # puts "========== TEMPLATE =========="
38
- # puts template_element
39
- # puts "========== SOURCE ==========="
40
- # puts source_element
41
- # puts '=========== Source Match ============'
42
- # puts REXML::XPath.first(source_element, './name')
43
35
  runner = TemplateRunner.new(target_element, template_element, source_element)
44
36
  runner.process
45
37
  assert_equal('Name One', REXML::XPath.first(REXML::Document.new(target_xml.to_s), '/html/h1/text()').value.strip)
@@ -167,7 +167,7 @@ INCLUDE_SOURCE
167
167
  xml_output = REXML::Document.new(xml_document.to_s())
168
168
  assert_equal('release 0.0.1 (build 235)', REXML::XPath.first(xml_output, '/html/body/h1').text)
169
169
  end
170
-
170
+
171
171
  def test_should_process_each_with_children
172
172
  template_content = <<INCLUDE_CONTENT
173
173
  <html xmlns="http://www.w3.org/1999/xhtml"
@@ -247,10 +247,53 @@ INCLUDE_SOURCE
247
247
  NEWS
248
248
  end
249
249
  xml_output = REXML::Document.new(xml_document.to_s())
250
- # puts xml_output
251
250
  assert_equal(3, REXML::XPath.match(xml_output, '/html/body/div/div').size)
252
251
  assert_equal('BuildMaster website created',
253
252
  REXML::XPath.first(xml_output, '/html/body/div/div[1]/p').text())
254
253
  end
254
+
255
+ def test_should_process_link_element_to_anchor_with_relative_path_when_not_current_page
256
+ template_content = <<CONTENT
257
+ <html xmlns="http://www.w3.org/1999/xhtml"
258
+ xmlns:template="http://buildmaster.rubyforge.org/xtemplate/1.0">
259
+ <head>
260
+ <title>BuildMaster</title>
261
+ </head>
262
+ <body><template:link href="/dir/file" class="value">File</template:link></body>
263
+ </html>
264
+ CONTENT
265
+ template = XTemplate.new(template_content)
266
+ xml_output = template.process('') do |expression|
267
+ assert_equal('relative_to_root', expression)
268
+ Pathname.new('hello.textile')
269
+ end
270
+ actual_element = REXML::XPath.first(xml_output, '/html/body/a')
271
+ assert_equal('dir/file', actual_element.attributes['href'])
272
+ assert_equal('value', actual_element.attributes['class'])
273
+ assert_equal('File', actual_element.text)
274
+ end
275
+
276
+ def test_should_process_link_element_to_div_when_on_current_page
277
+ template_content = <<CONTENT
278
+ <html xmlns="http://www.w3.org/1999/xhtml"
279
+ xmlns:template="http://buildmaster.rubyforge.org/xtemplate/1.0">
280
+ <head>
281
+ <title>BuildMaster</title>
282
+ </head>
283
+ <body><template:link href="/dir/file.html" class="value">File</template:link></body>
284
+ </html>
285
+ CONTENT
286
+ template = XTemplate.new(template_content)
287
+ xml_output = template.process('') do |expression|
288
+ assert_equal('relative_to_root', expression)
289
+ Pathname.new('dir/file.textile')
290
+ end
291
+ actual_element = REXML::XPath.first(xml_output, '/html/body/div')
292
+ assert_equal(nil, actual_element.attributes['href'])
293
+ assert_equal('value', actual_element.attributes['class'])
294
+ assert_equal('File', actual_element.text)
295
+ end
296
+
297
+
255
298
  end
256
299
  end
@@ -1,10 +1,12 @@
1
1
  $:.unshift(File.dirname(__FILE__))
2
2
  require 'test/unit'
3
3
 
4
- require 'buildmaster/tc_ant_client'
5
- require 'buildmaster/tc_cvs_client'
4
+ require 'buildmaster/tc_ant_driver'
6
5
  require 'buildmaster/tc_release_control'
6
+ require 'buildmaster/tc_site_spec'
7
7
  require 'buildmaster/tc_site'
8
+ require 'buildmaster/tc_cvs_driver'
8
9
  require 'buildmaster/tc_svn_driver'
9
10
  require 'buildmaster/tc_template_runner'
10
11
  require 'buildmaster/tc_xtemplate'
12
+ require 'buildmaster/tc_file_processor'
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: BuildMaster
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.6.0
7
- date: 2006-06-20
6
+ version: 0.7.0
7
+ date: 2006-07-23
8
8
  summary: "A project that hosts a series of scripts to be used in project building, project
9
9
  releasing, and site building."
10
10
  require_paths:
@@ -32,14 +32,16 @@ files:
32
32
  - lib/buildmaster.rb
33
33
  - lib/mock
34
34
  - lib/mock.rb
35
- - lib/buildmaster/ant_client.rb
35
+ - lib/buildmaster/ant_driver.rb
36
36
  - lib/buildmaster/build_file.rb
37
- - lib/buildmaster/cvs_client.rb
37
+ - lib/buildmaster/cvs_driver.rb
38
38
  - lib/buildmaster/file_processor.rb
39
+ - lib/buildmaster/java_manifest.rb
39
40
  - lib/buildmaster/release_control.rb
40
41
  - lib/buildmaster/run_ant.rb
41
42
  - lib/buildmaster/shell_command.rb
42
43
  - lib/buildmaster/site.rb
44
+ - lib/buildmaster/site_spec.rb
43
45
  - lib/buildmaster/site_tester.rb
44
46
  - lib/buildmaster/source_file_handler.rb
45
47
  - lib/buildmaster/svn_driver.rb
@@ -51,10 +53,14 @@ files:
51
53
  - test/ts_buildmaster.rb
52
54
  - test/buildmaster/build.xml
53
55
  - test/buildmaster/content
54
- - test/buildmaster/tc_ant_client.rb
55
- - test/buildmaster/tc_cvs_client.rb
56
+ - test/buildmaster/manifest.mf
57
+ - test/buildmaster/tc_ant_driver.rb
58
+ - test/buildmaster/tc_cvs_driver.rb
59
+ - test/buildmaster/tc_file_processor.rb
60
+ - test/buildmaster/tc_java_manifest.rb
56
61
  - test/buildmaster/tc_release_control.rb
57
62
  - test/buildmaster/tc_site.rb
63
+ - test/buildmaster/tc_site_spec.rb
58
64
  - test/buildmaster/tc_svn_driver.rb
59
65
  - test/buildmaster/tc_template_runner.rb
60
66
  - test/buildmaster/tc_xtemplate.rb
@@ -69,14 +75,4 @@ extra_rdoc_files:
69
75
  executables: []
70
76
  extensions: []
71
77
  requirements: []
72
- dependencies:
73
- - !ruby/object:Gem::Dependency
74
- name: RedCloth
75
- version_requirement:
76
- version_requirements: !ruby/object:Gem::Version::Requirement
77
- requirements:
78
- -
79
- - ">="
80
- - !ruby/object:Gem::Version
81
- version: 3.0.4
82
- version:
78
+ dependencies: []