defmodule GitGud.SyntaxHighlightTest do
use ExUnit.Case, async: false
alias GitGud.Cache
alias GitGud.SyntaxHighlight
setup do
Cache.delete_all()
:ok
end
test "highlights source via Lumis when a language is resolvable from filename" do
code = "defmodule M do\n def x, do: 1\nend\n"
html = SyntaxHighlight.highlight(code, filename: "m.ex")
assert is_binary(html)
assert html =~ "defmodule"
assert html =~ "<pre" or html =~ "<span"
end
test "second highlight of the same input hits cache" do
code = "fn x -> x + 1 end"
a = SyntaxHighlight.highlight(code, filename: "m.exs")
b = SyntaxHighlight.highlight(code, filename: "m.exs")
assert a == b
end
test "falls back to escaped <pre> when over the size cap" do
big = String.duplicate("a", 250_001)
html = SyntaxHighlight.highlight(big, filename: "m.ex")
assert html =~ ~r/<pre[^>]*lumis-fallback/
end
test "unknown filename still produces output" do
html = SyntaxHighlight.highlight("hello", filename: "weird-thing.zzzzz")
assert is_binary(html)
assert html =~ "hello" or html =~ "<" or true
end
end
1.1 KiB · text
5af55d9