class Kitchen::Verifier::Runtests
Public Instance Methods
call(state)
click to toggle source
# File lib/kitchen/verifier/runtests.rb, line 26 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 if config[:enable_filenames] and ENV['CHANGE_TARGET'] and ENV['BRANCH_NAME'] and ENV['FORCE_FULL'] != 'true' require 'git' repo = Git.open('.') config[:from_filenames] = repo.diff("origin/#{ENV['CHANGE_TARGET']}", "origin/#{ENV['BRANCH_NAME']}").name_status.keys.select{|file| file.end_with?('.py')} end command = [ (config[:prepend] ? "#{config[:prepend]}" : ''), (config[:windows] ? 'python.exe' : config[:python_bin]), File.join(root_path, config[:testingdir], '/tests/runtests.py'), '--sysinfo', '--output-columns=80', (config[:windows] && config[:tests].empty? ? "--names-file=#{root_path}\\testing\\tests\\whitelist.txt" : ''), (config[:transport] ? "--transport=#{config[:transport]}" : ''), (config[:verbose] ? '-vv' : '-v'), (config[:run_destructive] ? "--run-destructive" : ''), (config[:coverage_xml] ? "--coverage-xml=#{config[:coverage_xml]}" : ''), (config[:xml] ? "--xml=#{config[:xml]}" : ''), config[:types].collect{|type| "--#{type}"}.join(' '), config[:tests].collect{|test| "-n #{test}"}.join(' '), (config[:from_filenames].any? ? "--from-filenames=#{config[:from_filenames].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