summaryrefslogtreecommitdiff
path: root/spec/syntax_suggest/unit/explain_syntax_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/syntax_suggest/unit/explain_syntax_spec.rb')
-rw-r--r--spec/syntax_suggest/unit/explain_syntax_spec.rb36
1 files changed, 32 insertions, 4 deletions
diff --git a/spec/syntax_suggest/unit/explain_syntax_spec.rb b/spec/syntax_suggest/unit/explain_syntax_spec.rb
index 394981dcf6..7ddb32b8ea 100644
--- a/spec/syntax_suggest/unit/explain_syntax_spec.rb
+++ b/spec/syntax_suggest/unit/explain_syntax_spec.rb
@@ -14,12 +14,26 @@ module SyntaxSuggest
).call
expect(explain.missing).to eq([])
- expect(explain.errors.join).to include("unterminated string")
+ expect(explain.errors.join.strip).to_not be_empty
end
- it "handles %w[]" do
+ %w[w W i I].each do |type|
+ it "handles %#{type}-style array" do
+ source = <<~EOM
+ node.is_a?(Op) && %#{type}[| ||].include?(node.value) &&
+ EOM
+
+ explain = ExplainSyntax.new(
+ code_lines: CodeLine.from_source(source)
+ ).call
+
+ expect(explain.missing).to eq([])
+ end
+ end
+
+ it "handles %r-style regexp" do
source = <<~EOM
- node.is_a?(Op) && %w[| ||].include?(node.value) &&
+ node.is_a?(Op) && %r{| ||}.include?(node.value) &&
EOM
explain = ExplainSyntax.new(
@@ -29,6 +43,20 @@ module SyntaxSuggest
expect(explain.missing).to eq([])
end
+ ["", "q", "Q"].each do |type|
+ it "handles %#{type}-style string" do
+ source = <<~EOM
+ node.is_a?(Op) && %#{type}(| ||).include?(node.value) &&
+ EOM
+
+ explain = ExplainSyntax.new(
+ code_lines: CodeLine.from_source(source)
+ ).call
+
+ expect(explain.missing).to eq([])
+ end
+ end
+
it "doesn't falsely identify strings or symbols as critical chars" do
source = <<~EOM
a = ['(', '{', '[', '|']
@@ -191,7 +219,7 @@ module SyntaxSuggest
).call
expect(explain.missing).to eq([])
- expect(explain.errors).to eq(RipperErrors.new(source).call.errors)
+ expect(explain.errors).to eq(GetParseErrors.errors(source))
end
it "handles an unexpected rescue" do