class Minitest::JsonApi::Reporter

Attributes

addr[RW]
all_results[RW]
apikeyname[RW]
apikeyvalue[RW]
pretty[RW]

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/minitest/jsonapi_plugin.rb, line 10
def initialize(options = {})
        super
        self.all_results = []

        self.addr = options[:addr]
        self.apikeyname = options[:apikeyname]
        self.apikeyvalue = options[:apikeyvalue]
        self.pretty = options[:pretty] || false

end

Public Instance Methods

record(result) click to toggle source
Calls superclass method
# File lib/minitest/jsonapi_plugin.rb, line 21
def record(result)
        super
        all_results << result
end
report() click to toggle source
Calls superclass method
# File lib/minitest/jsonapi_plugin.rb, line 26
        def report
                super

                assertions = 0
                skips = 0
                errors = 0
                fails = 0
                passes = 0

                results = all_results.collect do |result|
                        status = case result.failure
                        when Skip
                                skips += 1
                                :skip
                        when UnexpectedError
                                errors += 1
                                :error
                        when Assertion
                                fails += 1
                                :fail
                        else
                                passes += 1
                                :pass
                        end

                        assertions += result.assertions

                        result_hash = {
                                name: result.name,
                                status: status,
                                time: result.time,
                                assertions: result.assertions,
                                file: nil,
                                line: nil
                        }

                        if result.failure
                                result_hash.merge!({
                                        file: result.source_location[0],
                                        line: result.source_location[1]
                                })
                        end

                        result_hash

                end

                summary = {
                        tests: all_results.count,
                        assertions: assertions,
                        passes: passes,
                        fails: fails,
                        errors: errors,
                        skips: skips
                }


                full_result = {
                        summary: summary,
                        results: results
                }

                if addr.to_s.empty?
                        if self.pretty
                                io[:io].write(JSON.pretty_generate(full_result))
                        else
                                io[:io].write(JSON.dump(full_result))
                        end
else
    uri = URI.parse(self.addr)
                        header = {'Content-Type': 'text/json'}

                        if self.apikeyname and self.apikeyvalue
                                header[self.apikeyname] = apikeyvalue
                        end

    http = Net::HTTP.new(uri.host, uri.port)
                        request = Net::HTTP::Post.new(uri.request_uri, header)
                        request.body = full_result.to_json

                        http.use_ssl = true if uri.scheme == 'https'

                        begin
                                http.request request
                        rescue Exception => e
                                puts "ERROR - #{e.message}"
                        end
end

        end