Sha256: 692e1cddc91df43c4dd866519ffc9366d27a03fffbaf824c43474d1e90ffc758

Contents?: true

Size: 1.3 KB

Versions: 41

Compression:

Stored size: 1.3 KB

Contents

module OrigenTesters::ATP
  module Processors
    # Removes most things from embedded on_pass/fail nodes and converts them to the equivalent
    # on_passed/failed condition at the same level as the parent node
    class OnPassFailRemover < Processor
      def run(node)
        process(node)
      end

      def on_test(node)
        on_pass = node.find(:on_pass)
        on_fail = node.find(:on_fail)
        if on_pass || on_fail
          id = node.find(:id)
          unless id
            fail 'Something has gone wrong, all nodes should have IDs by this point'
          end
          id = id.value
          nodes = [node]
          if on_fail && contains_anything_interesting?(on_fail)
            nodes << node.updated(:if_failed, [id] + on_fail.children)
            nodes[0] = nodes[0].remove(on_fail)
          end
          if on_pass && contains_anything_interesting?(on_pass)
            nodes << node.updated(:if_passed, [id] + on_pass.children)
            nodes[0] = nodes[0].remove(on_pass)
          end
          node.updated(:inline, nodes)
        else
          node.updated(nil, process_all(node.children))
        end
      end

      def contains_anything_interesting?(node)
        node.children.any? { |n| n.type != :set_result && n.type != :continue && n.type != :set_flag }
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
origen_testers-0.52.9 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.8 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.7 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.6 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.5 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.4 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.3 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.1 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.52.0 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.5 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.4 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.3 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.2 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.1 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.51.0 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.50.0 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.49.4 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.49.3 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.49.2 lib/origen_testers/atp/processors/on_pass_fail_remover.rb
origen_testers-0.49.1 lib/origen_testers/atp/processors/on_pass_fail_remover.rb