Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

135 lines (107 sloc) 4.187 kb
require 'rubygems'
require 'erb'
require 'activesupport'
require 'find'
require 'zip/zip'
require 'fileutils'
class NUnitRunner
include FileTest
def initialize(paths)
@sourceDir = paths.fetch(:source, 'source')
@resultsDir = paths.fetch(:results, 'results')
@compilePlatform = paths.fetch(:platform, 'x86')
@compileTarget = paths.fetch(:compilemode, 'debug')
if ENV["teamcity.dotnet.nunitlauncher"] # check if we are running in TeamCity
# We are not using the TeamCity nunit launcher. We use NUnit with the TeamCity NUnit Addin which needs tO be copied to our NUnit addins folder
# http://blogs.jetbrains.com/teamcity/2008/07/28/unfolding-teamcity-addin-for-nunit-secrets/
# The teamcity.dotnet.nunitaddin environment variable is not available until TeamCity 4.0, so we hardcode it for now
@teamCityAddinPath = ENV["teamcity.dotnet.nunitaddin"] ? ENV["teamcity.dotnet.nunitaddin"] : 'c:/TeamCity/buildAgent/plugins/dotnetPlugin/bin/JetBrains.TeamCity.NUnitAddin-NUnit'
cp @teamCityAddinPath + '-2.4.7.dll', 'tools/nunit/addins'
end
@nunitExe = File.join('tools', 'nunit', "nunit-console#{(@compilePlatform.nil? ? '' : "-#{@compilePlatform}")}.exe").gsub('/','\\') + ' /nothread'
end
def executeTests(assemblies)
Dir.mkdir @resultsDir unless exists?(@resultsDir)
assemblies.each do |assem|
file = File.expand_path("#{@sourceDir}/#{assem}/bin/#{(@compilePlatform.nil? ? '' : "#{@compilePlatform}/")}#{@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', version)
msbuildFile = File.join(frameworkDir, 'msbuild.exe')
sh "#{msbuildFile} #{solutionFile} /maxcpucount /v:m /property:BuildInParallel=false /property:Configuration=#{compileTarget} /t:Rebuild"
end
end
class AspNetCompilerRunner
def self.compile(attributes)
webPhysDir = attributes.fetch(:webPhysDir, '')
webVirDir = attributes.fetch(:webVirDir, '')
frameworkDir = File.join(ENV['windir'].dup, 'Microsoft.NET', 'Framework', 'v2.0.50727')
aspNetCompiler = File.join(frameworkDir, 'aspnet_compiler.exe')
sh "#{aspNetCompiler} -p #{webPhysDir} -v #{webVirDir}"
end
end
class AsmInfoBuilder
attr_reader :buildnumber, :parameterless_attributes
def initialize(version, properties)
@properties = properties
@buildnumber = version
@properties['Version'] = @properties['InformationalVersion'] = buildnumber;
@parameterless_attributes = [:allow_partially_trusted_callers]
end
def write(file)
template = %q{using System.Reflection;
using System.Security;
<% @properties.each do |k, v| %>
<% if @parameterless_attributes.include? k %>
[assembly: <%= k.to_s.camelize %>]
<% else %>
[assembly: Assembly<%= k.to_s.camelize %>("<%= v %>")]
<% end %>
<% end %>
}.gsub(/^ /, '')
erb = ERB.new(template, 0, "%<>")
File.open(file, 'w') do |file|
file.puts erb.result(binding)
end
end
end
class InstallUtilRunner
def installServices(services, parameters)
services.each do |service|
params = ""
parameters.each_pair {|key, value| params = params + "/" + key + "=" + value + " "}
sh "tools/installutil /i #{params} #{service}"
end
end
def uninstallServices(services)
services.each do |service|
begin
sh "tools/installutil /u #{service}"
rescue Exception => e
puts 'IGNORING ERROR: ' + e
end
end
end
end
def create_zip(filename, root, excludes=/^$/)
File.delete(filename) if File.exists? filename
Zip::ZipFile.open(filename, Zip::ZipFile::CREATE) do |zip|
Find.find(root) do |path|
next if path =~ excludes
zip_path = path.gsub(root, '')
zip.add(zip_path, path)
end
end
end
def docu(dll_name)
FileUtils.rm_r('output') if File.exists? 'output'
docu_exe = "tools/docu/docu.exe"
`#{docu_exe} #{dll_name}`
end
Jump to Line
Something went wrong with that request. Please try again.