Sha256: fbaa130ea32662fcc988946b8971d10babefdba692470408ca3d6fc8bd0b3614

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

module ATP
  module Processors
    # Assigns an ID to all test nodes that don't have one
    class AddIDs < Processor
      def run(node)
        @i = 0
        @existing_ids = []
        @add_ids = false
        # First collect all existing IDs, this is required to make sure
        # that a generated ID does not clash with an existing one
        process(node)
        # Now run again to fill in the blanks
        @add_ids = true
        process(node)
      end

      def on_test(node)
        if @add_ids
          node = node.ensure_node_present(:id)
          node.updated(nil, process_all(node))
        else
          if id = node.find(:id)
            @existing_ids << id.value
          end
          process_all(node)
        end
      end
      alias_method :on_group, :on_test

      def on_id(node)
        if @add_ids
          unless node.value
            node.updated(nil, [next_id])
          end
        end
      end

      def next_id
        @i += 1
        @i += 1 while @existing_ids.include?("t#{@i}")
        "t#{@i}"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
atp-1.1.3 lib/atp/processors/add_ids.rb
atp-1.1.2 lib/atp/processors/add_ids.rb
atp-1.1.1 lib/atp/processors/add_ids.rb
atp-1.1.0 lib/atp/processors/add_ids.rb
atp-1.0.0 lib/atp/processors/add_ids.rb