Sha256: 6ef94766edfb17d4404b81f073b7fecfb0f577af6c8b4d284ad779b8d2e4dcee

Contents?: true

Size: 1.43 KB

Versions: 6

Compression:

Stored size: 1.43 KB

Contents

require 'teaspoon/formatters/base_formatter'

module Teaspoon
  module Formatters
    class TeamcityFormatter < BaseFormatter
      def runner(result)
        log "##teamcity[testSuiteStarted name='Jasmine']"
      end

      def spec(result)
        log "##teamcity[testStarted name='#{escape result.description}' captureStandardOutput='false']"

        unless result.passing? || result.pending?
          log "##teamcity[testFailed name='#{escape result.description}' message='#{escape result.message}']"
        end

        log "##teamcity[testFinished name='#{escape result.description}']"
      end

      def error(error)
        log "##teamcity[message text='#{escape error.message}' errorDetails='#{escape format_trace(error.trace)}' status='ERROR']"
      end

      def result(result)
        log "##teamcity[testSuiteFinished name='Jasmine']"
      end

      def suppress_logs?
        true
      end

      private
      def log(str)
        STDOUT.print("#{str}\n")
      end

      def escape(str)
        {
          /\|/m => "||",
          /'/m => "|'",
          /\n/m => "|n",
          /\r/m => "|r",
          /\[/m => "|[",
          /\]/m => "|]",
        }.inject(str) do |result, (regex, sub)|
          result.gsub(regex, sub)
        end
      end

      def format_trace(trace)
        trace.map { |line|
          ["#{line['file']}:#{line['line']}", line['function']].compact.join(' ')
        }.join("\n")
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
teaspoon-0.7.9 lib/teaspoon/formatters/teamcity_formatter.rb
teaspoon-0.7.8 lib/teaspoon/formatters/teamcity_formatter.rb
teaspoon-0.7.7 lib/teaspoon/formatters/teamcity_formatter.rb
teaspoon-0.7.6 lib/teaspoon/formatters/teamcity_formatter.rb
teaspoon-0.7.5 lib/teaspoon/formatters/teamcity_formatter.rb
teaspoon-0.7.4 lib/teaspoon/formatters/teamcity_formatter.rb