summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/syntax_checking_spec.rb28
1 files changed, 23 insertions, 5 deletions
diff --git a/spec/syntax_checking_spec.rb b/spec/syntax_checking_spec.rb
index ec7f5b36..ca75ba9f 100644
--- a/spec/syntax_checking_spec.rb
+++ b/spec/syntax_checking_spec.rb
@@ -23,17 +23,21 @@ describe Pry do
end
end
- ([
+ [
["end"],
["puts )("],
["1 1"],
- ["puts :"]
- ] + [
+ ["puts :"],
+
# in this case the syntax error is "expecting ')'".
["def", "method(1"],
+
# in this case the syntax error is "expecting keyword_end".
- ["o = Object.new.tap{ def o.render;", "'MEH'", "}"]
- ]).compact.each do |foo|
+ ["o = Object.new.tap{ def o.render;", "'MEH'", "}"],
+
+ # multiple syntax errors reported in one SyntaxException
+ ["puts {'key'=>'val'}.to_json"]
+ ].compact.each do |foo|
it "should raise an error on invalid syntax like #{foo.inspect}" do
redirect_pry_io(InputTester.new(*foo), @str_output) do
Pry.start
@@ -41,6 +45,20 @@ describe Pry do
expect(@str_output.string).to match(/SyntaxError/)
end
+
+ it "should display correct number of errors on invalid syntax like #{foo.inspect}" do
+ begin
+ # rubocop:disable Security/Eval
+ eval(foo.join("\n"))
+ # rubocop:enable Security/Eval
+ rescue SyntaxError => e
+ error_count = e.message.scan(/syntax error/).count
+ end
+ expect(error_count).not_to be_nil
+
+ pry_output = mock_pry(*foo)
+ expect(pry_output.scan(/SyntaxError/).count).to eq(error_count)
+ end
end
it "should not intefere with syntax errors explicitly raised" do