# frozen_string_literal: true RSpec.describe YARD::Templates::Helpers::HtmlSyntaxHighlightHelper do include YARD::Templates::Helpers::HtmlHelper include YARD::Templates::Helpers::HtmlSyntaxHighlightHelper describe "#html_syntax_highlight" do let(:object) { CodeObjects::NamespaceObject.new(:root, :YARD) } before do Registry.root.source_type = :ruby end it "does not highlight source if options.highlight is false" do expect(self).to receive(:options).and_return(Options.new.update(:highlight => false)) expect(html_syntax_highlight("def x\nend")).to eq "def x\nend" end it "highlights source (legacy)" do type = Parser::SourceParser.parser_type Parser::SourceParser.parser_type = :ruby18 expect(self).to receive(:options).and_return(Options.new.update(:highlight => true)) expect = "defx 'x'+ /x/iend" result = html_syntax_highlight("def x\n 'x' + /x/i\nend") html_equals_string(result, expect) Parser::SourceParser.parser_type = type end it "highlights source (ripper)" do expect(self).to receive(:options).and_return(Options.new.update(:highlight => true)) Parser::SourceParser.parser_type = :ruby expect = "def x ' x' + /x /i\nend" result = html_syntax_highlight("def x\n 'x' + /x/i\nend") html_equals_string(result, expect) end if HAVE_RIPPER it "returns escaped unhighlighted source if a syntax error is found (ripper)" do allow(self).to receive(:options).and_return(Options.new.update(:highlight => true)) expect(html_syntax_highlight("def &x; ... end")).to eq "def &x; ... end" end if HAVE_RIPPER it "returns escaped unhighlighted source if a syntax error is found (ripper)" do allow(self).to receive(:options).and_return(Options.new.update(:highlight => true)) expect(html_syntax_highlight("$ git clone http://url")).to eq "$ git clone http://url" end if HAVE_RIPPER it "links constants/methods" do other = CodeObjects::NamespaceObject.new(:root, :Other) allow(self).to receive(:options).and_return(Options.new.update(:highlight => true)) allow(self).to receive(:run_verifier).with([other]).and_return([other]) allow(self).to receive(:link_object).with(other, "Other").and_return("LINK!") result = html_syntax_highlight("def x; Other end") html_equals_string(result, "def x; LINK! end") end if HAVE_RIPPER end end