class Testplan::Build

Public Class Methods

build_platform_exec_strings(platform, format, execute_all_at_once) click to toggle source
# File lib/testplan.rb, line 41
def self.build_platform_exec_strings(platform, format, execute_all_at_once)
  envstring = make_env_string(platform)
  estrings = []

  if execute_all_at_once

    print "\nRunning all testcases at once with ENV: #{envstring}\n"

    exec_string = "#{envstring}bundle exec rake #{format.to_s} SPEC_OPTS=\""
    @@config[:platforms][platform][:cases].each do | acase |

      exec_string += " -e #{acase} "
      print "  - testcase #{acase}\n"
    end

    exec_string += "\""
    estrings << exec_string

  else
    @@config[:platforms][platform][:cases].each do | acase |

      exec_string = "#{envstring}bundle exec rake #{format.to_s} SPEC_OPTS=\"-e #{acase}\""
      print "\nRunning testcase #{acase} with ENV: #{envstring}\n"

      estrings << exec_string
    end
  end

  estrings
end
execute_strings(exec_strings) click to toggle source
# File lib/testplan.rb, line 72
def self.execute_strings(exec_strings)
  exit_code = 0
  exec_strings.each do |estring|
    p estring
    exit_code += 1 unless system estring
  end

  if exit_code == 1
    raise 'At least one test failed'
  elsif exit_code > 1
    raise "There were #{exit_code} failed tests."
  end

  exit_code
end
init() click to toggle source
# File lib/testplan.rb, line 37
def self.init
  @@config = $initconf.call
end
make_env_string(platform) click to toggle source
# File lib/testplan.rb, line 95
def self.make_env_string(platform)
  envarr = {}
  @@config[:platforms][platform].each do | k,v|
    envarr[k.to_s] = v unless k == :cases
  end

  case RbConfig::CONFIG['host_os']
  when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
    envstring = make_env_string_win(envarr)
  else
    envstring = make_env_string_unix(envarr)
  end

  envstring
end
make_env_string_unix(envarr) click to toggle source
# File lib/testplan.rb, line 111
def self.make_env_string_unix(envarr)
  envstr=''
  envarr.each do | varname,varvalue|
    envstr+= "#{varname.upcase}='#{varvalue}' "
  end
  return envstr
end
make_env_string_win(envarr) click to toggle source
# File lib/testplan.rb, line 119
def self.make_env_string_win(envarr)
  envstr=''
  envarr.each do | varname,varvalue|
    envstr+= "set #{varname.upcase}=#{varvalue} &"
  end
  return envstr
end
plan_in_format(plan, format, execute_all_at_once = false) click to toggle source
# File lib/testplan.rb, line 19
def self.plan_in_format(plan, format, execute_all_at_once = false)
  self.init
  validate_plan_name(plan)
  exec_strings = []
  @@config[:testplans][plan].each do |platform|
    exec_strings += self.build_platform_exec_strings(platform, format, execute_all_at_once)
  end

  return self.execute_strings(exec_strings)

end
platform_in_format(platform, format, execute_all_at_once = false) click to toggle source
# File lib/testplan.rb, line 31
def self.platform_in_format(platform, format, execute_all_at_once = false)
  self.init
  exec_strings = self.build_platform_exec_strings(platform, format, execute_all_at_once)
  return self.execute_strings(exec_strings)
end
validate_plan_name(plan_name) click to toggle source
# File lib/testplan.rb, line 89
def self.validate_plan_name(plan_name)
  if !@@config[:testplans].has_key?(plan_name)
     raise 'Plan name does not exist'
  end
end