mirror of
https://github.com/ViViDboarder/abuse-the-force.git
synced 2024-11-22 05:26:34 +00:00
Add deploy test to execute a test class after deploy
Some small changes made to the way errors are displayed to have clearer languge with test execution
This commit is contained in:
parent
af0538de62
commit
ca9b5dcd2a
@ -83,18 +83,26 @@ module AbuseTheForce
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.deploy_project(dpath=Atf_Config.get_project_path)
|
def self.deploy_test(dpath, test_name)
|
||||||
|
|
||||||
|
options = { :run_tests => [ test_name ], :rollback_on_error => true }
|
||||||
|
|
||||||
|
deploy_project(dpath, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.deploy_project(dpath=Atf_Config.get_project_path, options={ :rollback_on_error => true })
|
||||||
|
|
||||||
if @client == nil
|
if @client == nil
|
||||||
build_client
|
build_client
|
||||||
end
|
end
|
||||||
|
|
||||||
if File.file? File.join(dpath, 'package.xml')
|
if File.file? File.join(dpath, 'package.xml')
|
||||||
@client.deploy(File.expand_path(dpath), { :rollback_on_error => true }).
|
@client.deploy(File.expand_path(dpath), options).
|
||||||
on_complete { |job|
|
on_complete { |job|
|
||||||
puts "Finished deploy #{job.id}!"
|
puts "Finished deploy #{job.id}!"
|
||||||
result = job.result
|
result = job.result
|
||||||
if result != nil
|
if result != nil
|
||||||
|
|
||||||
puts "\nDeploy #{result.success ? "SUCCESS" : "FAILURE"}"
|
puts "\nDeploy #{result.success ? "SUCCESS" : "FAILURE"}"
|
||||||
|
|
||||||
# If a failed deploy, print errors
|
# If a failed deploy, print errors
|
||||||
@ -105,16 +113,38 @@ module AbuseTheForce
|
|||||||
result.messages = [].push result.messages
|
result.messages = [].push result.messages
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "ERRORS: #{result.messages.size}"
|
puts "DEPLOY ERRORS: #{result.messages.reject { |m| m.success }.size}"
|
||||||
|
|
||||||
result.messages.each do |m|
|
result.messages.each do |m|
|
||||||
|
|
||||||
# If the path is not from the project, fix it
|
# If the path is not from the project, fix it
|
||||||
unless m.file_name.starts_with? Atf_Config.src
|
unless m.file_name.starts_with? Atf_Config.src
|
||||||
m.file_name = m.file_name.sub(/[a-zA-Z._-]*\//, Atf_Config.src + '/')
|
m.file_name = m.file_name.sub(/[a-zA-Z._-]*\//, Atf_Config.src + '/')
|
||||||
end
|
end
|
||||||
|
|
||||||
# Print our error in teh format "filename:line:column type in object message"
|
# Print our error in teh format "filename:line:column type in object message"
|
||||||
puts "#{m.file_name}:#{m.line_number}:#{m.column_number} #{m.problem_type} in #{m.full_name} #{m.problem}"
|
if !m.success
|
||||||
|
puts "#{m.file_name}:#{m.line_number}:#{m.column_number} #{m.problem_type} in #{m.full_name} #{m.problem}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Need messages in an array
|
||||||
|
if result.run_test_result != nil
|
||||||
|
unless result.run_test_result.failures.kind_of? Array
|
||||||
|
result.run_test_result.failures = [].push result.run_test_result.failures
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "TESTS RUN: #{result.run_test_result.num_tests_run} FAILURES: #{result.run_test_result.num_failures}"
|
||||||
|
|
||||||
|
result.run_test_result.failures.each do |m|
|
||||||
|
|
||||||
|
# Print our error in teh format "filename:line:column type in object message"
|
||||||
|
if !m.success
|
||||||
|
puts "#{m.name}.#{m.method_name}: #{m.message}"
|
||||||
|
puts "Stack Trace: #{m.stack_trace}"
|
||||||
|
puts ""
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -256,6 +256,37 @@ module AbuseTheForce
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc "test <path to file>", "Deploy and execute a test class"
|
||||||
|
long_desc <<-LONG_DESC
|
||||||
|
Deploys file at path <path to file> to the active target and executes tests in that class.
|
||||||
|
|
||||||
|
If test fails changes are rolled back
|
||||||
|
LONG_DESC
|
||||||
|
def test(fpath)
|
||||||
|
|
||||||
|
AbuseTheForce.clean_temp
|
||||||
|
|
||||||
|
AbuseTheForce.copy_temp_file fpath
|
||||||
|
|
||||||
|
# If a new target was provided, switch to it
|
||||||
|
if options[:target] != nil
|
||||||
|
AbuseTheForce.temp_switch_target options[:target]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Get path to temp project directory
|
||||||
|
temp_path = File.join(Atf_Config.root_dir, TEMP_DIR)
|
||||||
|
|
||||||
|
test_name = File.basename fpath, '.*'
|
||||||
|
|
||||||
|
# Deploy
|
||||||
|
AbuseTheForce.deploy_test temp_path, test_name
|
||||||
|
|
||||||
|
# if using a temp target, switch back
|
||||||
|
if options[:target] != nil
|
||||||
|
AbuseTheForce.temp_switch_target
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
desc "list <path to list>", "Deploy a list of files"
|
desc "list <path to list>", "Deploy a list of files"
|
||||||
long_desc <<-LONG_DESC
|
long_desc <<-LONG_DESC
|
||||||
Parameter is a path a file containing a realtive list of files to be deployed.
|
Parameter is a path a file containing a realtive list of files to be deployed.
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module AbuseTheForce
|
module AbuseTheForce
|
||||||
VERSION = '0.1.0'
|
VERSION = '0.1.2'
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user