Sha256: b21d131844174ba8ff65c5926d3bf8d7db3e9d6f7d8f0013fc4a038d7a295c79

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

module Guard
  class RSpec < Plugin
    class Notifier
      attr_accessor :options

      def initialize(options = {})
        @options = options
      end

      def notify(summary)
        return unless options[:notification]
        failure_count, pending_count = _parse_summary(summary)
        image = _image(failure_count, pending_count)
        priority = _priority(image)
        ::Guard::Notifier.notify(summary,
                                 title: @options[:title],
                                 image: image,
                                 priority: priority)
      end

      def notify_failure
        return unless options[:notification]
        ::Guard::Notifier.notify("Failed",
                                 title: @options[:title],
                                 image: :failed,
                                 priority: 2)
      end

      private

      def _parse_summary(summary)
        summary.match(/(\d+) failures( \((\d+) pending\))?/) do |m|
          return m[1].to_i, m[3].to_i
        end
        [0, 0]
      end

      def _image(failure_count, pending_count)
        if failure_count > 0
          :failed
        elsif pending_count > 0
          :pending
        else
          :success
        end
      end

      def _priority(image)
        { failed:   2,
          pending: -1,
          success: -2
        }[image]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
guard-rspec-4.4.2 lib/guard/rspec/notifier.rb
guard-rspec-4.4.1 lib/guard/rspec/notifier.rb