lib/atp/formatters/datalog.rb in atp-0.2.1 vs lib/atp/formatters/datalog.rb in atp-0.3.0
- old
+ new
@@ -1,20 +1,60 @@
+require 'colored'
module ATP
module Formatters
# Outputs the given AST to something resembling an ATE datalog,
# this can optionally be rendered to a file or the console (the default).
class Datalog < Formatter
def on_flow(node)
- puts 'Number Result Test Name Pin Channel Low Measured High Force Loc'
+ str = 'Number'.ljust(15)
+ str += 'Result'.ljust(9)
+ str += 'Name'.ljust(55)
+ str += 'Test'.ljust(55)
+ str += 'ID'
+ puts str
process_all(node.children)
end
def on_test(node)
- t = node.to_h
- str = "#{t[:number]}".ljust(11)
- str += "#{t[:failed] ? 'FAIL' : 'PASS'}".ljust(9)
- str += "#{t[:name][0]}".ljust(20)
+ str = "#{node.find(:number).try(:value)}".ljust(15)
+ if node.find(:failed)
+ str += 'FAIL'.ljust(9).red
+ else
+ str += 'PASS'.ljust(9)
+ end
+ str += "#{node.find(:name).value}".ljust(55)
+ str += "#{node.find(:object).value}".ljust(55)
+ str += "#{node.find(:id).value}"
puts str
+ end
+
+ def on_render(node)
+ puts '************ Directly rendered flow snippet ************'
+ puts node.value
+ puts '********************************************************'
+ end
+
+ def on_log(node)
+ puts "// #{node.value}"
+ end
+
+ def on_set_result(node)
+ bin = node.find(:bin).try(:value)
+ sbin = node.find(:softbin).try(:value)
+ desc = node.find(:description).try(:value)
+
+ if node.to_a[0] == 'pass'
+ str = " PASS #{bin} #{sbin}"
+ color = :green
+ else
+ str = " FAIL #{bin} #{sbin}"
+ color = :red
+ end
+ str += " (#{desc})" if desc
+
+ puts '---------------------------------------------------------------------------------------------------------------------------------------------------------'
+ puts str.send(color)
+ puts '---------------------------------------------------------------------------------------------------------------------------------------------------------'
end
end
end
end