<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>asdf.txt</filename>
    </added>
    <added>
      <filename>lib/parameters/array_append_strategy.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/array_repeat_strategy.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/boolean_extender.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/boolean_parameter.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/hash_append_strategy.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/hash_extender.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/hash_parameter.rb</filename>
    </added>
    <added>
      <filename>lib/parameters/string_parameter_factory.rb</filename>
    </added>
    <added>
      <filename>pkg/Rubicant-0.0.7.gem</filename>
    </added>
    <added>
      <filename>rubicant-0.0.7.gem</filename>
    </added>
    <added>
      <filename>spec/array_append_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/array_repeat_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/hash_append_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/hash_extender_spec.rb</filename>
    </added>
    <added>
      <filename>spec/hash_parameter_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/array_append_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/array_extender_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/array_parameter_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/array_repeat_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/boolean_extender_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/boolean_parameter_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/hash_append_strategy_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/hash_extender_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/hash_parameter_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/string_extender_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/string_parameter_factory_spec.rb</filename>
    </added>
    <added>
      <filename>spec/parameter_specs/string_parameter_spec.rb</filename>
    </added>
    <added>
      <filename>spec/runner_specs/mbunit_runner_spec.rb</filename>
    </added>
    <added>
      <filename>spec/runner_specs/msbuild_spec.rb</filename>
    </added>
    <added>
      <filename>spec/string_parameter_builder_spec.rb</filename>
    </added>
    <added>
      <filename>spec/string_parameter_factory_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -3,9 +3,6 @@ module ArrayParameter
 	attr_accessor :join_strategy
 	
 	def build_parameter(name)
-		self.each do |param|
-			@join_strategy.include(param)
-		end
-		@join_strategy.join(name)
+		@join_strategy.join(name, self)
 	end
 end
\ No newline at end of file</diff>
      <filename>lib/parameters/array_parameter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,6 @@ module StringParameter
 	attr_accessor :prefix, :separator
 	
 	def build_parameter(name)
-		&quot;#{@prefix}paramname#{@separator}#{self}&quot;
+		&quot;#{@prefix}#{name}#{@separator}#{self}&quot;
 	end
 end
\ No newline at end of file</diff>
      <filename>lib/parameters/string_parameter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,75 +2,35 @@ require 'rake'
 require 'rake/tasklib'
 require File.dirname(__FILE__) + '/../facades'
 require File.dirname(__FILE__) + '/../dotnet/framework'
+require File.dirname(__FILE__) + '/../parameters/boolean_extender'
+require File.dirname(__FILE__) + '/../parameters/string_extender'
+require File.dirname(__FILE__) + '/../parameters/array_extender'
+require File.dirname(__FILE__) + '/../parameters/array_append_strategy'
+require File.dirname(__FILE__) + '/../parameters/hash_extender'
+require File.dirname(__FILE__) + '/../parameters/hash_append_strategy'
+require File.dirname(__FILE__) + '/../parameters/string_parameter_factory'
+
 
 module Rubicant::Runners
-  class MsBuildRunner
+  class MsBuild
 
-    attr_accessor :settings
-    attr_reader :rsp_file
+    attr_accessor :settings, :project_file
+    attr_reader :default_extenders
 
-    def initialize(settings = {})
+    def initialize(project_file, settings = {})
       @settings = settings
-      @rsp_file = &quot;#{ENV['TEMP']}/msbuild.rsp&quot;
+	  @project_file = project_file
+          @default_extenders = [ArrayExtender.new(ArrayAppendStrategy.new(&quot;/&quot;, &quot;:&quot;, &quot;;&quot;)),
+							HashExtender.new(HashAppendStrategy.new(&quot;/&quot;, &quot;:&quot;, &quot;=&quot;, &quot;;&quot;)),
+							BooleanExtender.new(&quot;/&quot;),
+							StringExtender.new(&quot;/&quot;,&quot;:&quot;)]
       @msbuild = &quot;#{Rubicant::DotNet::Frameworks.get_framework.framework_dir}\\msbuild.exe&quot;
+							
     end
 
     def run
-      fail 'no_autoresponse must be true or nil' unless @settings[:no_autoresponse].nil? || @settings[:no_autoresponse] == true
-      fail 'no_console_logger must be true or nil' unless @settings[:no_console_logger].nil? || @settings[:no_console_logger] == true
-      fail 'file_logger must be true or nil' unless @settings[:file_logger].nil? || @settings[:file_logger] == true
-      fail 'distributed_file_logger must be true or nil' unless @settings[:distributed_file_logger].nil? || @settings[:distributed_file_logger] == true
-      fail 'properties must be a hash' unless @settings[:properties].kind_of?(Hash) || @settings[:properties].nil?
-      fail 'file_logger_parameters must be a hash' unless @settings[:file_logger_parameters].kind_of?(Hash) || @settings[:file_logger_parameters].nil?
-
-      Rubicant::Runner.run &quot;#{build_command}&quot;
-    end
-
-private
-    def build_command
-      build_rsp
-      command = &quot;#{@msbuild} @#{@rsp_file}&quot;
-      command
-    end
-
-    def build_rsp
-      file = File.new(&quot;#{@rsp_file}&quot;, &quot;w&quot;)
-      file.puts &quot; /nologo&quot;
-      file.puts &quot; /noautoresponse&quot; unless @settings[:no_autoresponse].nil?
-      file.puts &quot; /target:#{@settings[:targets].join(';')}&quot; unless @settings[:targets].nil?
-      file.puts &quot; /logger:#{@settings[:logger]}&quot; unless @settings[:logger].nil?
-      file.puts &quot; /distributedlogger:#{@settings[:distributed_logger]}&quot; unless @settings[:distributed_logger].nil?
-      file.puts &quot; /consoleloggerparameters:#{@settings[:console_logger_parameters]}&quot; unless @settings[:console_logger_parameters].nil?
-      file.puts &quot; /validate&quot; if @settings[:validate] == true
-      file.puts &quot; /validate:#{@settings[:validate]}&quot; if @settings[:validate] != nil &amp;&amp; @settings[:validate] != true
-      file.puts &quot; /verbosity:#{@settings[:verbosity]}&quot; unless @settings[:verbosity].nil?
-      file.puts &quot; /noconsolelogger&quot; if @settings[:no_console_logger] == true
-      file.puts &quot; /maxcpucount:#{@settings[:max_cpu_count]}&quot; unless @settings[:max_cpu_count].nil?
-      file.puts &quot; /ignoreprojectextensions:#{@settings[:ignore_project_extensions].join(';')}&quot; unless @settings[:ignore_project_extensions].nil?
-      file.puts &quot; /filelogger&quot; if @settings[:file_logger] == true
-      file.puts &quot; /distributedfilelogger&quot; if @settings[:distributed_file_logger] == true
-      file.puts &quot; /nodereuse:true&quot; if @settings[:node_reuse] == true
-      file.puts &quot; /nodereuse:false&quot; if @settings[:node_reuse] == false
-      file.puts &quot; #{@settings[:project_file]}&quot; unless @settings[:project_file].nil?
-      
-      unless (@settings[:properties].nil?)
-        properties_strings = []
-        @settings[:properties].sort.each do |key, value|
-          properties_strings &lt;&lt; &quot;#{key}=#{value}&quot;
-        end
-        file.puts(&quot; /property:#{properties_strings.join(';')}&quot;) unless properties_strings.length == 0
-      end
-
-      unless (@settings[:file_logger_parameters].nil?)
-        file_logger_parameters_strings = []
-        @settings[:file_logger_parameters].sort.each do |key, value|
-          file_logger_parameters_strings &lt;&lt; &quot;#{key}=#{value}&quot;
-        end
-        file.puts(&quot; /fileloggerparameters:#{file_logger_parameters_strings.join(';')}&quot;) unless file_logger_parameters_strings.length == 0
-      end
-
-      file.close
-
+		parameters = StringParameterFactory.new(@default_extenders, {}).build_parameters(@settings)
+		Rubicant::Runner.run(&quot;#{@msbuild} #{parameters} #{@project_file}&quot;)
     end
   end
-end
\ No newline at end of file
+end</diff>
      <filename>lib/runners/build_runners.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,45 +1,46 @@
 require 'rake'
-require 'rake/tasklib'
 require File.dirname(__FILE__) + '/../facades'
+require File.dirname(__FILE__) + '/../parameters/string_parameter_factory'
+require File.dirname(__FILE__) + '/../parameters/array_extender'
+require File.dirname(__FILE__) + '/../parameters/string_extender'
+require File.dirname(__FILE__) + '/../parameters/array_repeat_strategy'
 
 module Rubicant::Runners
 
-  class MbUnitRunner
-    attr_reader :settings
-
-    def initialize(settings = {})
+  class MbUnit
+    attr_reader :settings, :default_extenders, :overrides
+	
+    def initialize(mbunit_dir, test_files, settings = {})
       @settings = settings
+	  @mbunit_dir = mbunit_dir
+	  @test_files = test_files if test_files.kind_of?(Array)
+	  @test_files = [test_files]
+	  @default_extenders = [ArrayExtender.new(ArrayRepeatStrategy.new(&quot;/&quot;, &quot;:&quot;)),
+							StringExtender.new(&quot;/&quot;,&quot;:&quot;)]
+	  @overrides = {:sr =&gt; StringExtender.new(&quot;/&quot;, &quot;&quot;),
+					:v =&gt; StringExtender.new(&quot;/&quot;, &quot;&quot;),
+					:sc =&gt; StringExtender.new(&quot;/&quot;, &quot;&quot;)}
+					
     end
 
     def run
-      fail ('mbunit_dir must be set') if (@settings[:mbunit_dir].nil?)
-      fail ('test_files must be set') if (@settings[:test_files].nil?)
-
-      @settings[:mbunit_dir] = &quot;./&quot; if @settings[:mbunit_dir].length == 0
-      @settings[:mbunit_dir] = File.expand_path(@settings[:mbunit_dir])
-
-      exec_opts = {:working_dir =&gt; @settings[:mbunit_dir]}
-
-      exec_args = []
-      exec_args &lt;&lt; &quot;/ap:#{@settings[:assembly_path].to_a.join(' /ap:')}&quot; unless @settings[:assembly_path].nil?
-      exec_args &lt;&lt; &quot;/rf:#{@settings[:report_folder]}&quot; unless @settings[:report_folder].nil?
-      exec_args &lt;&lt; &quot;/rnf:#{@settings[:report_name_format]}&quot; unless @settings[:report_name_format].nil?
-      exec_args &lt;&lt; &quot;/rt:#{@settings[:report_type]}&quot; unless @settings[:report_type].nil?
-      exec_args &lt;&lt; &quot;/sr#{@settings[:show_reports]}&quot; unless @settings[:show_reports].nil?
-      exec_args &lt;&lt; &quot;/tr:#{@settings[:transform]}&quot; unless @settings[:transform].nil?
-      exec_args &lt;&lt; &quot;/fc:#{@settings[:filter_category]}&quot; unless @settings[:filter_category].nil?
-      exec_args &lt;&lt; &quot;/ec:#{@settings[:exclude_category]}&quot; unless @settings[:exclude_category].nil?
-      exec_args &lt;&lt; &quot;/fa:#{@settings[:filter_author]}&quot; unless @settings[:filter_author].nil?
-      exec_args &lt;&lt; &quot;/ft:#{@settings[:filter_type]}&quot; unless @settings[:filter_type].nil?
-      exec_args &lt;&lt; &quot;/fn:#{@settings[:filter_namespace]}&quot; unless @settings[:filter_namespace].nil?
-      exec_args &lt;&lt; &quot;/v#{@settings[:verbose]}&quot; unless @settings[:verbose].nil?
-      exec_args &lt;&lt; &quot;/sc#{@settings[:shadow_copy]}&quot; unless @settings[:shadow_copy].nil?
-
-      @settings[:test_files] = [@settings[:test_files]] if @settings[:test_files].class == String
-      exec_args &lt;&lt; @settings[:test_files].join(' ')
+      fail ('mbunit_dir must be set') if (@mbunit_dir.nil?)
+      fail ('test_files must be set') if (@test_files.nil?)
+
+      @mbunit_dir = &quot;./&quot; if @mbunit_dir.length == 0
+      @mbunit_dir = File.expand_path(@mbunit_dir)
+
+      exec_opts = {:working_dir =&gt; @mbunit_dir}
+
+	  exec_args = [StringParameterFactory.new(@default_extenders, @overrides).build_parameters(@settings)]
+      exec_args &lt;&lt; @test_files.join(' ')
       exec_opts.merge!({:args =&gt; exec_args})
 
-      Rubicant::Runner.exec(File.join(@settings[:mbunit_dir], &quot;MbUnit.Cons.exe&quot;), exec_opts)
+      Rubicant::Runner.exec(File.join(@mbunit_dir, &quot;MbUnit.Cons.exe&quot;), exec_opts)
     end
+	
+	private
+	
+
   end
 end</diff>
      <filename>lib/runners/test_runners.rb</filename>
    </modified>
    <modified>
      <filename>pkg/Rubicant-0.0.1.gem</filename>
    </modified>
    <modified>
      <filename>pkg/Rubicant-0.0.4.gem</filename>
    </modified>
    <modified>
      <filename>pkg/Rubicant-0.0.5.gem</filename>
    </modified>
    <modified>
      <diff>@@ -4,15 +4,21 @@ require 'rake/testtask'
 require 'rake/rdoctask'
 require 'lib/rubicant'
 require 'rake/gempackagetask'
+require 'spec/rake/spectask'
 
-task :test do
+task :test =&gt; :specs do
 	require 'rake/runtest'
 	Rake.run_tests 'test/**/*.rb'
 end
 
+desc &quot;Generate HTML report for failing examples&quot;
+Spec::Rake::SpecTask.new(:specs) do |t|
+  t.spec_files = FileList['spec/**/*.rb']
+end
+
 spec = Gem::Specification.new do |s| 
   s.name = &quot;Rubicant&quot;
-  s.version = &quot;0.0.6&quot;
+  s.version = &quot;0.0.7&quot;
   s.author = &quot;mendicant&quot;
   s.email = &quot;mendicant@beigesunshine.com&quot;
   s.homepage = &quot;http://blog.beigesunshine.com&quot;</diff>
      <filename>rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,33 +1,13 @@
 Gem::Specification.new do |s|
   s.name = &quot;rubicant&quot;
-  s.version = &quot;0.0.6&quot;
+  s.version = &quot;0.0.7&quot;
   s.author = &quot;mendicant&quot;
   s.email = &quot;mendicant@beigesunshine.com&quot;
   s.homepage = &quot;http://blog.beigesunshine.com&quot;
   s.summary = &quot;.Net Build Framework in Ruby&quot;
-  s.files = [&quot;lib/facades.rb&quot;, 
-			&quot;lib/dotnet&quot;,
-			&quot;lib/dotnet/frameworks.yml&quot;,
-			&quot;lib/dotnet/framework.rb&quot;,
-			&quot;lib/runners&quot;,
-			&quot;lib/runners/test_runners.rb&quot;,
-			&quot;lib/runners/compiler_runners.rb&quot;,
-			&quot;lib/runners/build_runners.rb&quot;,
-			&quot;lib/runners/file_tasks.rb&quot;,
-			&quot;lib/rubicant.rb&quot;,
-			&quot;rubicant.gemspec&quot;,
-			&quot;rakefile.rb&quot;]
+  s.files = Dir[&quot;lib/**/*.rb&quot;] + Dir[&quot;lib/dotnet/frameworks.yml&quot;]
   s.require_path = &quot;lib&quot;
-  s.test_files = [&quot;test/unit&quot;,    
-					&quot;test/unit/dotnet&quot;,
-					&quot;test/unit/dotnet/when_creating_new_framework.rb&quot;,
-					&quot;test/unit/dotnet/when_getting_framework_information.rb&quot;,
-					&quot;test/unit/runners&quot;,
-					&quot;test/unit/runners/when_calling_csc_runner.rb&quot;,
-					&quot;test/unit/runners/when_calling_mb_unit_runner.rb&quot;,
-					&quot;test/unit/runners/when_calling_copyfiles_task.rb&quot;,
-					&quot;test/unit/runners/when_calling_ms_build_runner.rb&quot;,
-					&quot;test/unit/runners/when_calling_ms_build_runner_with_incorrect_parameters.rb&quot;]
+  s.test_files = Dir[&quot;test/**/when*.rb&quot;]
   s.has_rdoc = false
   s.add_dependency(&quot;rake&quot;, &quot;&gt;= 0.8.3&quot;)
 </diff>
      <filename>rubicant.gemspec</filename>
    </modified>
    <modified>
      <filename>spec/array_extender_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,11 +3,9 @@ require File.dirname(__FILE__) + '/../lib/parameters/array_parameter'
 describe ArrayParameter, &quot;when building parameters for an extended array&quot; do
 
 	before do
-		@first = &quot;1&quot;
-		@second = &quot;2&quot;
 		@param_name = &quot;param name&quot;
 		
-		@array = [@first, @second]
+		@array = []
 		
 		@join_strategy = mock('join strategy')
 
@@ -15,17 +13,9 @@ describe ArrayParameter, &quot;when building parameters for an extended array&quot; do
 		@array.join_strategy = @join_strategy
 	end
 	
-	it &quot;join strategy should include all items in the array&quot; do
-		@join_strategy.should_receive(:include).with(@first)
-		@join_strategy.should_receive(:include).with(@second)
-		@join_strategy.should_receive(:join)
-		@array.build_parameter(@param_name)
-	end
-
-	it &quot;should return the joined values&quot; do
+	it &quot;should join the array and return the joined values&quot; do
 		return_val = &quot;return val&quot;
-		@join_strategy.should_receive(:include).twice
-		@join_strategy.should_receive(:join).with(@param_name).and_return(return_val)
+		@join_strategy.should_receive(:join).with(@param_name, @array).and_return(return_val)
 		@array.build_parameter(@param_name).should == return_val
 	end
 end</diff>
      <filename>spec/array_parameter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,34 +1,34 @@
-require File.dirname(__FILE__) + '/../lib/parameters/string_extender'
-
-describe StringExtender, &quot;when extending a string&quot; do
-
-	before do
-		@prefix = &quot;--&quot;
-		@separator = &quot; &quot;
-		@string = ''
-		sut = StringExtender.new(@prefix, @separator)
-		sut.do_extension(@string)
-	end
-	
-	it &quot;should set the prefix on the extended string&quot; do
-		@string.prefix.should == @prefix
-	end
-	
-	it &quot;should set the separating character on the extended string&quot; do
-		@string.separator.should == @separator
-	end
-
-end
-
-describe StringExtender, &quot;when extending something that is not a string&quot; do
-
-	before do 
-		@object = mock()
-		StringExtender.new('', '').do_extension(@object)
-	end
-	
-	it &quot;should not extend the object&quot; do
-		@object.should_not_receive(:extend)
-	end
-	
-end
+require File.dirname(__FILE__) + '/../lib/parameters/string_extender'
+
+describe StringExtender, &quot;when extending a string&quot; do
+
+	before do
+		@prefix = &quot;--&quot;
+		@separator = &quot; &quot;
+		@string = ''
+		sut = StringExtender.new(@prefix, @separator)
+		sut.do_extension(@string)
+	end
+	
+	it &quot;should set the prefix on the extended string&quot; do
+		@string.prefix.should == @prefix
+	end
+	
+	it &quot;should set the separating character on the extended string&quot; do
+		@string.separator.should == @separator
+	end
+
+end
+
+describe StringExtender, &quot;when extending something that is not a string&quot; do
+
+	before do 
+		@object = mock()
+		StringExtender.new('', '').do_extension(@object)
+	end
+	
+	it &quot;should not extend the object&quot; do
+		@object.should_not_receive(:extend)
+	end
+	
+end</diff>
      <filename>spec/string_extender_spec.rb</filename>
    </modified>
    <modified>
      <filename>spec/string_parameter_spec.rb</filename>
    </modified>
    <modified>
      <filename>test/unit/runners/when_calling_mb_unit_runner.rb</filename>
    </modified>
    <modified>
      <filename>test/unit/runners/when_calling_ms_build_runner.rb</filename>
    </modified>
    <modified>
      <filename>test/unit/runners/when_calling_ms_build_runner_with_incorrect_parameters.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>81704919c28a417b132a0b0f9f54edfc47e2b15a</id>
    </parent>
  </parents>
  <author>
    <name>mendicantx</name>
    <email>mendicant@beigesunshine.com</email>
  </author>
  <url>http://github.com/mendicantx/rubicant/commit/4933ab69f4d57e1edd104b9cddf95a0a606a9322</url>
  <id>4933ab69f4d57e1edd104b9cddf95a0a606a9322</id>
  <committed-date>2009-09-30T06:35:50-07:00</committed-date>
  <authored-date>2009-09-30T06:35:50-07:00</authored-date>
  <message>Finally commit. Apparently I had a hook preventing commits.</message>
  <tree>acc7f06115e4ee75d3ae7f230cd8f44335a28207</tree>
  <committer>
    <name>mendicantx</name>
    <email>mendicant@beigesunshine.com</email>
  </committer>
</commit>
