diff options
Diffstat (limited to 'spec/syntax_suggest')
-rw-r--r-- | spec/syntax_suggest/integration/ruby_command_line_spec.rb | 8 | ||||
-rw-r--r-- | spec/syntax_suggest/integration/syntax_suggest_spec.rb | 16 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/api_spec.rb | 6 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/around_block_scan_spec.rb | 2 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/block_expand_spec.rb | 4 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb | 4 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb | 4 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/capture_code_context_spec.rb | 32 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/clean_document_spec.rb | 14 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/code_line_spec.rb | 12 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/code_search_spec.rb | 82 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/core_ext_spec.rb | 2 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/explain_syntax_spec.rb | 4 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/lex_all_spec.rb | 3 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/pathname_from_message_spec.rb | 9 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/scan_history_spec.rb | 6 |
16 files changed, 110 insertions, 98 deletions
diff --git a/spec/syntax_suggest/integration/ruby_command_line_spec.rb b/spec/syntax_suggest/integration/ruby_command_line_spec.rb index b41a4c86e3..c1ec4be54e 100644 --- a/spec/syntax_suggest/integration/ruby_command_line_spec.rb +++ b/spec/syntax_suggest/integration/ruby_command_line_spec.rb @@ -9,7 +9,7 @@ module SyntaxSuggest Dir.mktmpdir do |dir| tmpdir = Pathname(dir) script = tmpdir.join("script.rb") - script.write <<~'EOM' + script.write <<~EOM puts Kernel.private_methods EOM @@ -159,7 +159,7 @@ module SyntaxSuggest Dir.mktmpdir do |dir| tmpdir = Pathname(dir) script = tmpdir.join("script.rb") - script.write <<~'EOM' + script.write <<~EOM $stderr = STDOUT eval("def lol") EOM @@ -167,7 +167,7 @@ module SyntaxSuggest out = `#{ruby} -I#{lib_dir} -rsyntax_suggest #{script} 2>&1` expect($?.success?).to be_falsey - expect(out).to include("(eval):1") + expect(out).to match(/\(eval.*\):1/) expect(out).to_not include("SyntaxSuggest") expect(out).to_not include("Could not find filename") @@ -178,7 +178,7 @@ module SyntaxSuggest Dir.mktmpdir do |dir| tmpdir = Pathname(dir) script = tmpdir.join("script.rb") - script.write <<~'EOM' + script.write <<~EOM break EOM diff --git a/spec/syntax_suggest/integration/syntax_suggest_spec.rb b/spec/syntax_suggest/integration/syntax_suggest_spec.rb index 64dafabcdd..9071d37c1b 100644 --- a/spec/syntax_suggest/integration/syntax_suggest_spec.rb +++ b/spec/syntax_suggest/integration/syntax_suggest_spec.rb @@ -26,7 +26,7 @@ module SyntaxSuggest debug_display(io.string) debug_display(benchmark) - expect(io.string).to include(<<~'EOM') + expect(io.string).to include(<<~EOM) 6 class SyntaxTree < Ripper 170 def self.parse(source) 174 end @@ -54,7 +54,7 @@ module SyntaxSuggest end expect(io.string).to_not include("def ruby_install_binstub_path") - expect(io.string).to include(<<~'EOM') + expect(io.string).to include(<<~EOM) > 1067 def add_yarn_binary > 1068 return [] if yarn_preinstalled? > 1069 | @@ -72,7 +72,7 @@ module SyntaxSuggest ) debug_display(io.string) - expect(io.string).to include(<<~'EOM') + expect(io.string).to include(<<~EOM) 1 Rails.application.routes.draw do > 113 namespace :admin do > 116 match "/foobar(*path)", via: :all, to: redirect { |_params, req| @@ -91,7 +91,7 @@ module SyntaxSuggest ) debug_display(io.string) - expect(io.string).to include(<<~'EOM') + expect(io.string).to include(<<~EOM) 1 describe "webmock tests" do 22 it "body" do 27 query = Cutlass::FunctionQuery.new( @@ -113,7 +113,7 @@ module SyntaxSuggest ) debug_display(io.string) - expect(io.string).to include(<<~'EOM') + expect(io.string).to include(<<~EOM) 5 module DerailedBenchmarks 6 class RequireTree > 13 def initialize(name) @@ -166,7 +166,7 @@ module SyntaxSuggest end it "ambiguous end" do - source = <<~'EOM' + source = <<~EOM def call # 0 print "lol" # 1 end # one # 2 @@ -186,7 +186,7 @@ module SyntaxSuggest end it "simple regression" do - source = <<~'EOM' + source = <<~EOM class Dog def bark puts "woof" @@ -206,7 +206,7 @@ module SyntaxSuggest end it "empty else" do - source = <<~'EOM' + source = <<~EOM class Foo def foo if cond? diff --git a/spec/syntax_suggest/unit/api_spec.rb b/spec/syntax_suggest/unit/api_spec.rb index 079a91e46d..e900b9e10b 100644 --- a/spec/syntax_suggest/unit/api_spec.rb +++ b/spec/syntax_suggest/unit/api_spec.rb @@ -8,6 +8,12 @@ end module SyntaxSuggest RSpec.describe "Top level SyntaxSuggest api" do + it "doesn't load prism if env var is set" do + skip("SYNTAX_SUGGEST_DISABLE_PRISM not set") unless ENV["SYNTAX_SUGGEST_DISABLE_PRISM"] + + expect(SyntaxSuggest.use_prism_parser?).to be_falsey + end + it "has a `handle_error` interface" do fake_error = Object.new def fake_error.message diff --git a/spec/syntax_suggest/unit/around_block_scan_spec.rb b/spec/syntax_suggest/unit/around_block_scan_spec.rb index d6756448bd..6c940a5919 100644 --- a/spec/syntax_suggest/unit/around_block_scan_spec.rb +++ b/spec/syntax_suggest/unit/around_block_scan_spec.rb @@ -5,7 +5,7 @@ require_relative "../spec_helper" module SyntaxSuggest RSpec.describe AroundBlockScan do it "continues scan from last location even if scan is false" do - source = <<~'EOM' + source = <<~EOM print 'omg' print 'lol' print 'haha' diff --git a/spec/syntax_suggest/unit/block_expand_spec.rb b/spec/syntax_suggest/unit/block_expand_spec.rb index 5cff73621d..fde0360775 100644 --- a/spec/syntax_suggest/unit/block_expand_spec.rb +++ b/spec/syntax_suggest/unit/block_expand_spec.rb @@ -146,7 +146,7 @@ module SyntaxSuggest EOM end - it "expand until next boundry (indentation)" do + it "expand until next boundary (indentation)" do source_string = <<~EOM describe "what" do Foo.call @@ -188,7 +188,7 @@ module SyntaxSuggest EOM end - it "expand until next boundry (empty lines)" do + it "expand until next boundary (empty lines)" do source_string = <<~EOM describe "what" do end diff --git a/spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb b/spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb index 02d9be4387..09f8d90d33 100644 --- a/spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb +++ b/spec/syntax_suggest/unit/capture/before_after_keyword_ends_spec.rb @@ -5,7 +5,7 @@ require_relative "../../spec_helper" module SyntaxSuggest RSpec.describe Capture::BeforeAfterKeywordEnds do it "before after keyword ends" do - source = <<~'EOM' + source = <<~EOM def nope print 'not me' end @@ -36,7 +36,7 @@ module SyntaxSuggest ).call lines.sort! - expect(lines.join).to include(<<~'EOM') + expect(lines.join).to include(<<~EOM) def lol end def yolo diff --git a/spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb b/spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb index 61d1642d97..ed2265539a 100644 --- a/spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb +++ b/spec/syntax_suggest/unit/capture/falling_indent_lines_spec.rb @@ -5,7 +5,7 @@ require_relative "../../spec_helper" module SyntaxSuggest RSpec.describe Capture::FallingIndentLines do it "on_falling_indent" do - source = <<~'EOM' + source = <<~EOM class OH def lol print 'lol @@ -33,7 +33,7 @@ module SyntaxSuggest end lines.sort! - expect(lines.join).to eq(<<~'EOM') + expect(lines.join).to eq(<<~EOM) class OH def hello end diff --git a/spec/syntax_suggest/unit/capture_code_context_spec.rb b/spec/syntax_suggest/unit/capture_code_context_spec.rb index 46f13e8961..d9379d0ce7 100644 --- a/spec/syntax_suggest/unit/capture_code_context_spec.rb +++ b/spec/syntax_suggest/unit/capture_code_context_spec.rb @@ -5,7 +5,7 @@ require_relative "../spec_helper" module SyntaxSuggest RSpec.describe CaptureCodeContext do it "capture_before_after_kws two" do - source = <<~'EOM' + source = <<~EOM class OH def hello @@ -23,7 +23,7 @@ module SyntaxSuggest code_lines: code_lines ) display.capture_before_after_kws(block) - expect(display.sorted_lines.join).to eq(<<~'EOM'.indent(2)) + expect(display.sorted_lines.join).to eq(<<~EOM.indent(2)) def hello def hai end @@ -31,7 +31,7 @@ module SyntaxSuggest end it "capture_before_after_kws" do - source = <<~'EOM' + source = <<~EOM def sit end @@ -50,7 +50,7 @@ module SyntaxSuggest ) lines = display.capture_before_after_kws(block).sort - expect(lines.join).to eq(<<~'EOM') + expect(lines.join).to eq(<<~EOM) def sit end def bark @@ -60,7 +60,7 @@ module SyntaxSuggest end it "handles ambiguous end" do - source = <<~'EOM' + source = <<~EOM def call # 0 print "lol" # 1 end # one # 2 @@ -79,7 +79,7 @@ module SyntaxSuggest lines = lines.sort.map(&:original) - expect(lines.join).to eq(<<~'EOM') + expect(lines.join).to eq(<<~EOM) def call # 0 end # one # 2 end # two # 3 @@ -94,7 +94,7 @@ module SyntaxSuggest code_lines = CleanDocument.new(source: source).call.lines code_lines[0..75].each(&:mark_invisible) - code_lines[77..-1].each(&:mark_invisible) + code_lines[77..].each(&:mark_invisible) expect(code_lines.join.strip).to eq("class Lookups") block = CodeBlock.new(lines: code_lines[76..149]) @@ -106,7 +106,7 @@ module SyntaxSuggest lines = display.call lines = lines.sort.map(&:original) - expect(lines.join).to include(<<~'EOM'.indent(2)) + expect(lines.join).to include(<<~EOM.indent(2)) class Lookups def format_requires end @@ -114,7 +114,7 @@ module SyntaxSuggest end it "shows ends of captured block" do - source = <<~'EOM' + source = <<~EOM class Dog def bark puts "woof" @@ -123,7 +123,7 @@ module SyntaxSuggest code_lines = CleanDocument.new(source: source).call.lines block = CodeBlock.new(lines: code_lines) - code_lines[1..-1].each(&:mark_invisible) + code_lines[1..].each(&:mark_invisible) expect(block.to_s.strip).to eq("class Dog") @@ -132,7 +132,7 @@ module SyntaxSuggest code_lines: code_lines ) lines = display.call.sort.map(&:original) - expect(lines.join).to eq(<<~'EOM') + expect(lines.join).to eq(<<~EOM) class Dog def bark end @@ -140,7 +140,7 @@ module SyntaxSuggest end it "captures surrounding context on falling indent" do - source = <<~'EOM' + source = <<~EOM class Blerg end @@ -164,7 +164,7 @@ module SyntaxSuggest code_lines: code_lines ) lines = display.call.sort.map(&:original) - expect(lines.join).to eq(<<~'EOM') + expect(lines.join).to eq(<<~EOM) class OH def hello it "foo" do @@ -174,7 +174,7 @@ module SyntaxSuggest end it "captures surrounding context on same indent" do - source = <<~'EOM' + source = <<~EOM class Blerg end class OH @@ -200,7 +200,7 @@ module SyntaxSuggest code_lines = CleanDocument.new(source: source).call.lines block = CodeBlock.new(lines: code_lines[7..10]) - expect(block.to_s).to eq(<<~'EOM'.indent(2)) + expect(block.to_s).to eq(<<~EOM.indent(2)) def lol end @@ -217,7 +217,7 @@ module SyntaxSuggest lines: lines ).call - expect(out).to eq(<<~'EOM'.indent(2)) + expect(out).to eq(<<~EOM.indent(2)) 3 class OH 8 def lol 9 end diff --git a/spec/syntax_suggest/unit/clean_document_spec.rb b/spec/syntax_suggest/unit/clean_document_spec.rb index 25a62e4454..5b5ca04cfd 100644 --- a/spec/syntax_suggest/unit/clean_document_spec.rb +++ b/spec/syntax_suggest/unit/clean_document_spec.rb @@ -8,7 +8,7 @@ module SyntaxSuggest source = fixtures_dir.join("this_project_extra_def.rb.txt").read code_lines = CleanDocument.new(source: source).call.lines - expect(code_lines[18 - 1].to_s).to eq(<<-'EOL') + expect(code_lines[18 - 1].to_s).to eq(<<-EOL) @io.puts <<~EOM SyntaxSuggest: A syntax error was detected @@ -54,7 +54,7 @@ module SyntaxSuggest DisplayCodeWithLineNumbers.new( lines: lines ).call - ).to eq(<<~'EOM'.indent(2)) + ).to eq(<<~EOM.indent(2)) 1 User 2 .where(name: 'schneems') 3 .first @@ -65,7 +65,7 @@ module SyntaxSuggest lines: lines, highlight_lines: lines[0] ).call - ).to eq(<<~'EOM') + ).to eq(<<~EOM) > 1 User > 2 .where(name: 'schneems') > 3 .first @@ -85,7 +85,7 @@ module SyntaxSuggest code_lines = doc.lines expect(code_lines[0].to_s.count($/)).to eq(5) - code_lines[1..-1].each do |line| + code_lines[1..].each do |line| expect(line.to_s.strip.length).to eq(0) end end @@ -139,7 +139,7 @@ module SyntaxSuggest source = <<~'EOM' context "timezones workaround" do it "should receive a time in UTC format and return the time with the"\ - "office's UTC offset substracted from it" do + "office's UTC offset subtracted from it" do travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do office = build(:office) end @@ -155,7 +155,7 @@ module SyntaxSuggest ).to eq(<<~'EOM'.indent(2)) 1 context "timezones workaround" do 2 it "should receive a time in UTC format and return the time with the"\ - 3 "office's UTC offset substracted from it" do + 3 "office's UTC offset subtracted from it" do 4 travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do 5 office = build(:office) 6 end @@ -171,7 +171,7 @@ module SyntaxSuggest ).to eq(<<~'EOM') 1 context "timezones workaround" do > 2 it "should receive a time in UTC format and return the time with the"\ - > 3 "office's UTC offset substracted from it" do + > 3 "office's UTC offset subtracted from it" do 4 travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do 5 office = build(:office) 6 end diff --git a/spec/syntax_suggest/unit/code_line_spec.rb b/spec/syntax_suggest/unit/code_line_spec.rb index d5b568fd19..5b62cc2757 100644 --- a/spec/syntax_suggest/unit/code_line_spec.rb +++ b/spec/syntax_suggest/unit/code_line_spec.rb @@ -5,7 +5,7 @@ require_relative "../spec_helper" module SyntaxSuggest RSpec.describe CodeLine do it "bug in keyword detection" do - lines = CodeLine.from_source(<<~'EOM') + lines = CodeLine.from_source(<<~EOM) def to_json(*opts) { type: :module, @@ -19,7 +19,7 @@ module SyntaxSuggest it "supports endless method definitions" do skip("Unsupported ruby version") unless Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3") - line = CodeLine.from_source(<<~'EOM').first + line = CodeLine.from_source(<<~EOM).first def square(x) = x * x EOM @@ -28,7 +28,7 @@ module SyntaxSuggest end it "retains original line value, after being marked invisible" do - line = CodeLine.from_source(<<~'EOM').first + line = CodeLine.from_source(<<~EOM).first puts "lol" EOM expect(line.line).to match('puts "lol"') @@ -38,7 +38,7 @@ module SyntaxSuggest end it "knows which lines can be joined" do - code_lines = CodeLine.from_source(<<~'EOM') + code_lines = CodeLine.from_source(<<~EOM) user = User. where(name: 'schneems'). first @@ -50,7 +50,7 @@ module SyntaxSuggest end it "trailing if" do - code_lines = CodeLine.from_source(<<~'EOM') + code_lines = CodeLine.from_source(<<~EOM) puts "lol" if foo if foo end @@ -60,7 +60,7 @@ module SyntaxSuggest end it "trailing unless" do - code_lines = CodeLine.from_source(<<~'EOM') + code_lines = CodeLine.from_source(<<~EOM) puts "lol" unless foo unless foo end diff --git a/spec/syntax_suggest/unit/code_search_spec.rb b/spec/syntax_suggest/unit/code_search_spec.rb index f836ba36f3..502de14d7f 100644 --- a/spec/syntax_suggest/unit/code_search_spec.rb +++ b/spec/syntax_suggest/unit/code_search_spec.rb @@ -12,13 +12,13 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join.strip).to eq(<<~'EOM'.strip) + expect(search.invalid_blocks.join.strip).to eq(<<~EOM.strip) class Lookups EOM end it "squished do regression" do - source = <<~'EOM' + source = <<~EOM def call trydo @@ -47,14 +47,14 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) trydo end # one EOM end it "regression test ambiguous end" do - source = <<~'EOM' + source = <<~EOM def call # 0 print "lol" # 1 end # one # 2 @@ -64,13 +64,13 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) end # two # 3 EOM end it "regression dog test" do - source = <<~'EOM' + source = <<~EOM class Dog def bark puts "woof" @@ -79,7 +79,7 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) class Dog EOM expect(search.invalid_blocks.first.lines.length).to eq(4) @@ -99,7 +99,7 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) Foo.call do |a end # one EOM @@ -118,7 +118,7 @@ module SyntaxSuggest search = CodeSearch.new(source) search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) Foo.call do { EOM end @@ -152,7 +152,7 @@ module SyntaxSuggest end it "handles no spaces between blocks" do - source = <<~'EOM' + source = <<~EOM context "foo bar" do it "bars the foo" do travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do @@ -172,7 +172,7 @@ module SyntaxSuggest it "records debugging steps to a directory" do Dir.mktmpdir do |dir| dir = Pathname(dir) - search = CodeSearch.new(<<~'EOM', record_dir: dir) + search = CodeSearch.new(<<~EOM, record_dir: dir) class OH def hello def hai @@ -193,7 +193,7 @@ module SyntaxSuggest end it "def with missing end" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) class OH def hello @@ -206,7 +206,7 @@ module SyntaxSuggest expect(search.invalid_blocks.join.strip).to eq("def hello") - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) class OH def hello @@ -218,7 +218,7 @@ module SyntaxSuggest expect(search.invalid_blocks.join.strip).to eq("def hello") - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) class OH def hello def hai @@ -227,7 +227,7 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) def hello EOM end @@ -244,13 +244,13 @@ module SyntaxSuggest highlight_lines: search.invalid_blocks.flat_map(&:lines) ).call - expect(document).to include(<<~'EOM') + expect(document).to include(<<~EOM) > 36 def filename EOM end it "Format Code blocks real world example" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) require 'rails_helper' RSpec.describe AclassNameHere, type: :worker do @@ -291,7 +291,7 @@ module SyntaxSuggest highlight_lines: search.invalid_blocks.flat_map(&:lines) ).call - expect(document).to include(<<~'EOM') + expect(document).to include(<<~EOM) 1 require 'rails_helper' 2 3 RSpec.describe AclassNameHere, type: :worker do @@ -308,7 +308,7 @@ module SyntaxSuggest describe "needs improvement" do describe "mis-matched-indentation" do it "extra space before end" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) Foo.call def foo puts "lol" @@ -318,14 +318,14 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call end # two EOM end it "stacked ends 2" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) def cat blerg end @@ -339,7 +339,7 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call do end # one end # two @@ -348,7 +348,7 @@ module SyntaxSuggest end it "stacked ends " do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) Foo.call def foo puts "lol" @@ -358,14 +358,14 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call end EOM end it "missing space before end" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) Foo.call def foo @@ -377,7 +377,7 @@ module SyntaxSuggest search.call # expand-1 and expand-2 seem to be broken? - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call end EOM @@ -386,7 +386,7 @@ module SyntaxSuggest end it "returns syntax error in outer block without inner block" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) Foo.call def foo puts "lol" @@ -396,27 +396,27 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call end # two EOM end it "doesn't just return an empty `end`" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) Foo.call end EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) Foo.call end EOM end it "finds multiple syntax errors" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) describe "hi" do Foo.call end @@ -429,7 +429,7 @@ module SyntaxSuggest EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) Foo.call end Bar.call @@ -438,47 +438,47 @@ module SyntaxSuggest end it "finds a typo def" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) defzfoo puts "lol" end EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM') + expect(search.invalid_blocks.join).to eq(<<~EOM) defzfoo end EOM end it "finds a mis-matched def" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) def foo def blerg end EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) def blerg EOM end it "finds a naked end" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) def foo end # one end # two EOM search.call - expect(search.invalid_blocks.join).to eq(<<~'EOM'.indent(2)) + expect(search.invalid_blocks.join).to eq(<<~EOM.indent(2)) end # one EOM end it "returns when no invalid blocks are found" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) def foo puts 'lol' end @@ -489,14 +489,14 @@ module SyntaxSuggest end it "expands frontier by eliminating valid lines" do - search = CodeSearch.new(<<~'EOM') + search = CodeSearch.new(<<~EOM) def foo puts 'lol' end EOM search.create_blocks_from_untracked_lines - expect(search.code_lines.join).to eq(<<~'EOM') + expect(search.code_lines.join).to eq(<<~EOM) def foo end EOM diff --git a/spec/syntax_suggest/unit/core_ext_spec.rb b/spec/syntax_suggest/unit/core_ext_spec.rb index 802d03ecc0..499c38a240 100644 --- a/spec/syntax_suggest/unit/core_ext_spec.rb +++ b/spec/syntax_suggest/unit/core_ext_spec.rb @@ -8,7 +8,7 @@ module SyntaxSuggest Dir.mktmpdir do |dir| tmpdir = Pathname(dir) file = tmpdir.join("file.rb") - file.write(<<~'EOM'.strip) + file.write(<<~EOM.strip) print 'no newline EOM diff --git a/spec/syntax_suggest/unit/explain_syntax_spec.rb b/spec/syntax_suggest/unit/explain_syntax_spec.rb index 394981dcf6..c62a42b925 100644 --- a/spec/syntax_suggest/unit/explain_syntax_spec.rb +++ b/spec/syntax_suggest/unit/explain_syntax_spec.rb @@ -14,7 +14,7 @@ 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 @@ -191,7 +191,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 diff --git a/spec/syntax_suggest/unit/lex_all_spec.rb b/spec/syntax_suggest/unit/lex_all_spec.rb index 0c0df7cfaa..9621c9ecec 100644 --- a/spec/syntax_suggest/unit/lex_all_spec.rb +++ b/spec/syntax_suggest/unit/lex_all_spec.rb @@ -17,9 +17,6 @@ module SyntaxSuggest end # 9 EOM - # raw_lex = Ripper.lex(source) - # expect(raw_lex.to_s).to_not include("dog") - lex = LexAll.new(source: source) expect(lex.map(&:token).to_s).to include("dog") expect(lex.first.line).to eq(1) diff --git a/spec/syntax_suggest/unit/pathname_from_message_spec.rb b/spec/syntax_suggest/unit/pathname_from_message_spec.rb index 76756efda9..de58acebaa 100644 --- a/spec/syntax_suggest/unit/pathname_from_message_spec.rb +++ b/spec/syntax_suggest/unit/pathname_from_message_spec.rb @@ -43,6 +43,15 @@ module SyntaxSuggest expect(file).to be_falsey end + it "does not output error message on syntax error inside of an (eval at __FILE__:__LINE__)" do + message = "(eval at #{__FILE__}:#{__LINE__}):1: invalid multibyte char (UTF-8) (SyntaxError)\n" + io = StringIO.new + file = PathnameFromMessage.new(message, io: io).call.name + + expect(io.string).to eq("") + expect(file).to be_falsey + end + it "does not output error message on syntax error inside of streamed code" do # An example of streamed code is: $ echo "def foo" | ruby message = "-:1: syntax error, unexpected end-of-input\n" diff --git a/spec/syntax_suggest/unit/scan_history_spec.rb b/spec/syntax_suggest/unit/scan_history_spec.rb index 0e75ac66ce..d8b0a54ba6 100644 --- a/spec/syntax_suggest/unit/scan_history_spec.rb +++ b/spec/syntax_suggest/unit/scan_history_spec.rb @@ -5,7 +5,7 @@ require_relative "../spec_helper" module SyntaxSuggest RSpec.describe ScanHistory do it "retains commits" do - source = <<~'EOM' + source = <<~EOM class OH # 0 def lol # 1 print 'lol # 2 @@ -42,7 +42,7 @@ module SyntaxSuggest end it "is stashable" do - source = <<~'EOM' + source = <<~EOM class OH # 0 def lol # 1 print 'lol # 2 @@ -79,7 +79,7 @@ module SyntaxSuggest end it "doesnt change if you dont't change it" do - source = <<~'EOM' + source = <<~EOM class OH # 0 def lol # 1 print 'lol # 2 |