19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/irt/commands/test.rb', line 19
def add_test(description='')
mode = context.irt_mode
raise IRT::SessionModeError, "You cannot add a test in #{mode} mode." unless mode == :interactive
last_value = context.last_value
begin
evaled = context.workspace.evaluate(self, last_value.inspect)
rescue Exception
end
test_str = if evaled == last_value
if last_value.is_a?(String) && last_value.match(/\n/)
str = last_value.split("\n").map{|l| l.inspect.sub(/^"(.*)"$/,'\1') }.join("\n")
last_value.match(/\n$/) ? "_eql? <<EOS\n#{str}\nEOS" : "_eql? %(#{str})"
else
"_eql?( #{last_value.inspect} )"
end
else "_yaml_eql? %(#{IRT.yaml_dump(last_value)})"
end
desc_str = description.empty? ? '' : %(desc "#{description}"\n)
str = desc_str + test_str
context.current_line = str
puts
puts IRT.dye(str, :interactive_color)
puts
end
|