Class: RSpock::AST::TestMethodDstrTransformation

Inherits:
ASTTransform::AbstractTransformation
  • Object
show all
Defined in:
lib/rspock/ast/test_method_dstr_transformation.rb

Overview

dstr counterpart of TestMethodDefTransformation: appends the row index and source line interpolations to an already-interpolated test name.

Constant Summary collapse

ROW_INDEX_AST =
s(:begin, s(:lvar, :__rspock_row_index__))
ROW_LINE_AST =
s(:begin, s(:lvar, :__rspock_row_line__))
SPACE_STR_AST =
s(:str, " ")
LINE_NUMBER_STR_AST =
s(:str, " line ")

Instance Method Summary collapse

Instance Method Details

#on_dstr(node) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rspock/ast/test_method_dstr_transformation.rb', line 15

def on_dstr(node)
  children = process_all(node).dup
  last = children.last

  if last&.type == :str
    children[-1] = s(:str, "#{last.children[0]} ")
  else
    children << SPACE_STR_AST
  end

  children.push(ROW_INDEX_AST, LINE_NUMBER_STR_AST, ROW_LINE_AST)
  node.updated(nil, children)
end