class Kitchen::Verifier::Salttox

Public Instance Methods

call(state) click to toggle source
# File lib/kitchen/verifier/salttox.rb, line 22
def call(state)
  info("[#{name}] Verify on instance #{instance.name} with state=#{state}")
  root_path = (config[:windows] ? '%TEMP%\\kitchen' : '/tmp/kitchen')
  if ENV['KITCHEN_TESTS']
    ENV['KITCHEN_TESTS'].split(' ').each{|test| config[:tests].push(test)}
  end
  command = [
    'tox -c',
    File.join(root_path, config[:testingdir], 'tox.ini'),
    "-e #{instance.suite.name}",
    '--',
    '--sysinfo',
    '--output-columns=80',
    (config[:windows] ? "--names-file=#{root_path}\\testing\\tests\\whitelist.txt" : ''),
    (config[:transport] ? "--transport=#{config[:transport]}" : ''),
    (config[:verbose] ? '-v' : ''),
    (config[:run_destructive] ? "--run-destructive" : ''),
    (config[:coverage_xml] ? "--cov=salt/ --cov-report xml:#{config[:coverage_xml]}" : ''),
    (config[:xml] ? "--junitxml=#{config[:xml]}" : ''),
    config[:types].collect{|type| "--#{type}"}.join(' '),
    config[:tests].join(' '),
    '2>&1',
  ].join(' ')
  if config[:windows]
     command = "cmd.exe /c \"#{command}\" 2>&1"
  end
  info("Running Command: #{command}")
  instance.transport.connection(state) do |conn|
    begin
      if config[:windows]
        conn.execute('$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")')
        conn.execute("$env:PythonPath = [Environment]::ExpandEnvironmentVariables(\"#{root_path}\\testing\")")
      else
        conn.execute(sudo("chown -R $USER #{root_path}"))
      end
      conn.execute(sudo(command))
    ensure
      config[:save].each do |remote, local|
        unless config[:windows]
          conn.execute(sudo("chmod -R +r #{remote}"))
        end
        info("Copying #{remote} to #{local}")
        conn.download(remote, local)
      end
    end
  end
  debug("[#{name}] Verify completed.")
end