Sha256: cdcc8f788eb9c0881f6994c2851e31bb27eabf4b8eaa64978b7a204c4fee132f

Contents?: true

Size: 679 Bytes

Versions: 5

Compression:

Stored size: 679 Bytes

Contents

require 'chutney/linter'

module Chutney
  # service class to lint for tags used multiple times
  class TagUsedMultipleTimes < Linter
    def lint
      scenarios do |file, feature, scenario|
        references = [reference(file, feature, scenario)]
        total_tags = tags(feature) + tags(scenario)
        double_used_tags = total_tags.find_all { |a| total_tags.count(a) > 1 }.uniq!
        next if double_used_tags.nil?
        
        add_error(references, "Tag #{double_used_tags.join(' and ')} used multiple times")
      end
    end

    def tags(element)
      return [] unless element.include? :tags
      
      element[:tags].map { |a| a[:name] }
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
chutney-1.6.3 lib/chutney/linter/tag_used_multiple_times.rb
chutney-1.6.2 lib/chutney/linter/tag_used_multiple_times.rb
chutney-1.6.1 lib/chutney/linter/tag_used_multiple_times.rb
chutney-1.6.0 lib/chutney/linter/tag_used_multiple_times.rb
chutney-0.5.0 lib/chutney/linter/tag_used_multiple_times.rb