class Rake::Funnel::Integration::TeamCity::NUnitPlugin

Constants

ENV_VAR

Public Class Methods

setup(nunit_executable) click to toggle source
# File lib/rake/funnel/integration/teamcity/nunit_plugin.rb, line 11
def setup(nunit_executable)
  addins = get_addin_dir(ENV[ENV_VAR]) || return
  nunit, version = read_version(nunit_executable) || return

  addin_files = find_teamcity_addins(addins, version) || return

  copy_addin_files(nunit, addin_files, version)
end

Private Class Methods

copy_addin_files(nunit, addin_files, version) click to toggle source
# File lib/rake/funnel/integration/teamcity/nunit_plugin.rb, line 51
def copy_addin_files(nunit, addin_files, version)
  $stderr.print("Installing TeamCity NUnit addin for version #{version} in #{nunit}\n")

  destination = File.join(File.dirname(nunit), 'addins')

  RakeFileUtils.mkdir_p(destination)
  RakeFileUtils.cp(addin_files, destination, preserve: true)
end
find_teamcity_addins(addins, version) click to toggle source
# File lib/rake/funnel/integration/teamcity/nunit_plugin.rb, line 40
def find_teamcity_addins(addins, version)
  addin_files = Dir.glob("#{addins}-#{version}.*")

  if addin_files.none?
    $stderr.print("Could not find TeamCity NUnit addin for version #{version} in #{addins}\n")
    return
  end

  addin_files
end
get_addin_dir(source) click to toggle source
# File lib/rake/funnel/integration/teamcity/nunit_plugin.rb, line 22
def get_addin_dir(source)
  return nil unless source

  File.expand_path(source)
end
read_version(executable) click to toggle source
# File lib/rake/funnel/integration/teamcity/nunit_plugin.rb, line 28
def read_version(executable)
  nunit = Rake::Funnel::Support::Which.which(executable) || return
  version = Rake::Funnel::Support::BinaryVersionReader.read_from(nunit)

  unless version.file_version
    $stderr.print("Could read version from NUnit executable in #{nunit}\n")
    return
  end

  [nunit, version.file_version.split('.').take(3).join('.')]
end