#-- # Copyright (c) 2014 Patricio Zavolinsky # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. #++ # Echo logger. # # This logger outputs the raw action text for every action executed. # # Note that this logger does not include execution status information # (i.e. action succeeded, failed or was skipped). # class Bauxite::Loggers::HtmlLogger < Bauxite::Loggers::NullLogger # Constructs a new null logger instance. # def initialize(options) super(options) @data = [] @file = options[:html] || 'test.html' end # Logs the specified string. # # +type+, if specified, should be one of +:error+, +:warning+, # +:info+ (default), +:debug+. # def log(s, type = :info) end # Echoes the raw action text. def log_cmd(action) ret = yield ensure status = case ret; when nil; :error; when false; :skip; else :ok; end test_name = action.ctx.variables['__TEST__'] || 'Main' test = @data.find { |t| t[:name] == test_name } unless test test = { :name => test_name, :actions => [] } @data << test end capture = action.ctx.variables['__CAPTURE__'] if capture == @last_capture capture = nil else @last_capture = capture end test[:actions] << { :cmd => action.cmd, :args => action.args(true), :action => action, :status => status, :capture => capture } ret end # Completes the log execution. # def finalize(ctx) output = ctx.variables['__OUTPUT__'] || '' html = "
" if ctx.tests.any? html << _d(2, "Name | Time | Status | Error |
---|---|---|---|
#{t[:name]} | #{t[:time].round(2)} | #{t[:status]} | #{error} | ") html << _d(3, "