Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
This paste will be private.
require 'erb' class NUnitRunner include FileTest def initialize(paths) @sourceDir = paths.fetch(:source, 'source') @resultsDir = paths.fetch(:results, 'results') @compileTarget = paths.fetch(:compilemode, 'debug') @nunitExe = paths.fetch(:nunit, ENV["teamcity.dotnet.nunitlauncher"].nil? ? 'tools/nunit/nunit-console.exe /nothread' : ENV["teamcity.dotnet.nunitlauncher"] + ' v2.0 MSIL NUnit-2.4.6') end def executeTests(assemblies) Dir.mkdir @resultsDir unless exists?(@resultsDir) assemblies.each do |assem| file = File.expand_path("#{@sourceDir}/#{assem}/bin/#{@compileTarget}/#{assem}.dll") sh "#{@nunitExe} #{file}" end end end class MSBuildRunner def self.compile(attributes) version = attributes.fetch(:clrversion, 'v3.5') compileTarget = attributes.fetch(:compilemode, 'debug') solutionFile = attributes[:solutionfile] frameworkDir = File.join(ENV['windir'].dup, 'Microsoft.NET', 'Framework', 'v3.5') msbuildFile = File.join(frameworkDir, 'msbuild.exe') sh "#{msbuildFile} #{solutionFile} /maxcpucount /v:m /property:BuildInParallel=false /property:Configuration=#{compileTarget} /t:Rebuild" end end class AsmInfoBuilder attr_reader :buildnumber def initialize(baseVersion, properties) @properties = properties; @buildnumber = baseVersion + (ENV["CCNetLabel"].nil? ? '0' : ENV["CCNetLabel"].to_s) @properties['Version'] = @properties['InformationalVersion'] = buildnumber; end def write(file) template = %q{ using System; using System.Reflection; using System.Runtime.InteropServices; <% @properties.each {|k, v| %> [assembly: Assembly<%=k%>Attribute("<%=v%>")] <% } %> }.gsub(/^ /, '') erb = ERB.new(template, 0, "%<>") File.open(file, 'w') do |file| file.puts erb.result(binding) end end end
From the Design Piracy series on my blog: