Skip to content

Commit

Permalink
Add Line number in Test result (#34)
Browse files Browse the repository at this point in the history
Signed-off-by: Aravinda Vishwanathapura <aravinda@kadalu.tech>
  • Loading branch information
aravindavk authored Feb 23, 2023
1 parent a79597b commit 8ed08b9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 20 deletions.
45 changes: 29 additions & 16 deletions src/plugins.rb
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ def EMIT_STDOUT(val)
# TEST 1, "ls /non/existing"
# ```
def TEST(*args)
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return "" if BinnacleTestsRunner.dry_run?
Expand All @@ -229,7 +231,7 @@ def TEST(*args)
STDERR.puts "# #{stderr_line}" unless stderr_line.nil?

unless ret.nil?
BinnacleTestsRunner.cmd_test_end(cmd, ret, expect_ret)
BinnacleTestsRunner.cmd_test_end(cmd, ret: ret, expect_ret: expect_ret, line: line)
exit if (BinnacleTestsRunner.exit_on_not_ok? && ret != 0)
end
end
Expand All @@ -243,6 +245,8 @@ def TEST(*args)
# EXPECT 42, "echo 42"
# ```
def EXPECT(expect_value, cmd)
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return if BinnacleTestsRunner.dry_run?
Expand All @@ -257,31 +261,32 @@ def EXPECT(expect_value, cmd)
STDERR.puts "# #{stderr_line}" unless stderr_line.nil?

unless ret.nil?
BinnacleTestsRunner.cmd_test_end(cmd, ret, 0) if ret != 0
BinnacleTestsRunner.cmd_test_end(cmd, ret: ret, expect_ret: 0, line: line) if ret != 0
exit if (BinnacleTestsRunner.exit_on_not_ok? && ret != 0)
end
end

if "#{expect_value}" == out.join
BinnacleTestsRunner.test_end(cmd, ok=true)
BinnacleTestsRunner.test_end(cmd, ok: true, line: line)
else
BinnacleTestsRunner.test_end(
cmd,
ok=false,
diagnostic="Expected:\n--\n#{expect_value}\n--\nActual:\n--\n#{out.join}\n--\n"
ok: false,
diagnostic: "Expected:\n--\n#{expect_value}\n--\nActual:\n--\n#{out.join}\n--\n",
line: line
)
exit if BinnacleTestsRunner.exit_on_not_ok?
end
end

# If value is String then evaluate it else return as is
def value_from_expr(value, title, fail_message)
def value_from_expr(value, title, fail_message, line = 0)
if value.is_a? String
begin
value = eval(value)
rescue Exception => ex
fail_message += "\n#{ex.message}"
BinnacleTestsRunner.test_end(title, ok=false, diagnostic=fail_message)
BinnacleTestsRunner.test_end(title, ok: false, diagnostic: fail_message, line: line)
return nil
end
end
Expand All @@ -299,18 +304,20 @@ def value_from_expr(value, title, fail_message)
# TRUE "#{value} == 100", "Value is 100", "Actual: #{value}"
# ```
def TRUE(value, title, fail_message = "")
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return if BinnacleTestsRunner.dry_run?

BinnacleTestsRunner.test_start
value = value_from_expr(value, title, fail_message)
value = value_from_expr(value, title, fail_message, line)
return if value.nil?

if value
BinnacleTestsRunner.test_end(title, ok=true)
BinnacleTestsRunner.test_end(title, ok: true, line: line)
else
BinnacleTestsRunner.test_end(title, ok=false, diagnostic=fail_message)
BinnacleTestsRunner.test_end(title, ok: false, diagnostic: fail_message, line: line)
exit if BinnacleTestsRunner.exit_on_not_ok?
end
end
Expand All @@ -325,6 +332,8 @@ def TRUE(value, title, fail_message = "")
# FALSE "#{value} == 100", "Value is not 100", "Actual: #{value}"
# ```
def FALSE(value, title, fail_message = "")
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return if BinnacleTestsRunner.dry_run?
Expand All @@ -334,9 +343,9 @@ def FALSE(value, title, fail_message = "")
return if value.nil?

if !value
BinnacleTestsRunner.test_end(title, ok=true)
BinnacleTestsRunner.test_end(title, ok: true, line: line)
else
BinnacleTestsRunner.test_end(title, ok=false, diagnostic=fail_message)
BinnacleTestsRunner.test_end(title, ok: false, diagnostic: fail_message, line: line)
exit if BinnacleTestsRunner.exit_on_not_ok?
end
end
Expand Down Expand Up @@ -373,16 +382,18 @@ def RUN(cmd)
# EQUAL var1, 100, "Value is 100"
# ```
def EQUAL(value1, value2, title)
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return if BinnacleTestsRunner.dry_run?

BinnacleTestsRunner.test_start
if value1 == value2
BinnacleTestsRunner.test_end(title, ok=true)
BinnacleTestsRunner.test_end(title, ok: true, line: line)
else
fail_message = "Value1:\n--\n#{value1}\n--\n\nValue2:\n--\n#{value2}\n--\n"
BinnacleTestsRunner.test_end(title, ok=false, diagnostic=fail_message)
BinnacleTestsRunner.test_end(title, ok: false, diagnostic: fail_message, line: line)
exit if BinnacleTestsRunner.exit_on_not_ok?
end
end
Expand All @@ -397,16 +408,18 @@ def EQUAL(value1, value2, title)
# NOT_EQUAL var1, 100, "Value is 100"
# ```
def NOT_EQUAL(value1, value2, title)
caller_line = caller_locations.first
line = "#{caller_line.path}:#{caller_line.lineno}"
BinnacleTestsRunner.inc_counter

return if BinnacleTestsRunner.dry_run?

BinnacleTestsRunner.test_start
if value1 != value2
BinnacleTestsRunner.test_end(title, ok=true)
BinnacleTestsRunner.test_end(title, ok: true, line: line)
else
fail_message = "value1 and value2 are equal(value1: #{value1})"
BinnacleTestsRunner.test_end(title, ok=false, diagnostic=fail_message)
BinnacleTestsRunner.test_end(title, ok: false, diagnostic: fail_message, line: line)
exit if BinnacleTestsRunner.exit_on_not_ok?
end
end
Expand Down
9 changes: 5 additions & 4 deletions src/runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -162,11 +162,12 @@ def self.test_start
puts "==="
end

def self.test_end(cmd, ok=nil, diagnostic=nil, ret=nil, expect_ret=0)
def self.test_end(cmd, ok: nil, diagnostic: nil, ret: nil, expect_ret: 0, line: 0)
duration = Time.now - @@start_time
out_desc = "duration=%.2fs node=%s cmd=\"%s %s\"" % [
out_desc = "duration=%.2fs node=%s line=%s cmd=\"%s %s\"" % [
duration,
@@node,
line,
@@test_name,
cmd
]
Expand All @@ -183,8 +184,8 @@ def self.test_end(cmd, ok=nil, diagnostic=nil, ret=nil, expect_ret=0)
self.print_test_state(ok_msg, self.tests_count, out_desc)
end

def self.cmd_test_end(cmd, ret, expect_ret=0, diagnostic=nil)
test_end(cmd, nil, diagnostic, ret, expect_ret)
def self.cmd_test_end(cmd, ret:, expect_ret: 0, diagnostic: nil, line: 0)
test_end(cmd, ok: nil, diagnostic: diagnostic, ret: ret, expect_ret: expect_ret, line: line)
end

def self.print_test_state(ok_msg, test_id, msg)
Expand Down

0 comments on commit 8ed08b9

Please sign in to comment.