From 0663fbfa01b7a91ff3901d91d3f30d87943036d3 Mon Sep 17 00:00:00 2001 From: Sijawusz Pur Rahnama Date: Sun, 3 Jan 2021 17:56:44 +0100 Subject: [PATCH] Add specs for Frame#context --- spec/backtracer/backtrace/frame_spec.cr | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/spec/backtracer/backtrace/frame_spec.cr b/spec/backtracer/backtrace/frame_spec.cr index ac355da..53c3766 100644 --- a/spec/backtracer/backtrace/frame_spec.cr +++ b/spec/backtracer/backtrace/frame_spec.cr @@ -23,4 +23,39 @@ describe Backtracer::Backtrace::Frame do end end end + + {% unless flag?(:release) || !flag?(:debug) %} + describe "#context" do + it "returns proper lines" do + with_configuration do |configuration| + with_backtrace(caller) do |backtrace| + backtrace.frames.first.tap do |first_frame| + context_lines = configuration.context_lines.should_not be_nil + context = first_frame.context.should_not be_nil + + lines = File.read_lines(__FILE__) + lineidx = context.lineno - 1 + + context.pre + .should eq(lines[Math.max(0, lineidx - context_lines), context_lines]?) + context.line + .should eq(lines[lineidx]?) + context.post + .should eq(lines[Math.min(lines.size, lineidx + 1), context_lines]?) + end + end + end + end + + it "returns given amount of lines" do + with_backtrace(caller) do |backtrace| + backtrace.frames.first.tap do |first_frame| + context = first_frame.context(3).should_not be_nil + context.pre.size.should eq(3) + context.post.size.should eq(3) + end + end + end + end + {% end %} end