|
| 1 | +import { suite } from "uvu"; |
| 2 | +import * as assert from "uvu/assert"; |
| 3 | + |
| 4 | +import { highlight } from "./highlight"; |
| 5 | + |
| 6 | +const _highlight = suite("highlight"); |
| 7 | + |
| 8 | +_highlight("does not highlight other languages", () => { |
| 9 | + const highlighted = highlight("cd ./somedir\ncat file.txt", "bash"); |
| 10 | + assert.snapshot( |
| 11 | + highlighted, |
| 12 | + `<pre class='language-bash'><code><span class="token builtin class-name">cd</span> ./somedir |
| 13 | +<span class="token function">cat</span> file.txt</code></pre>` |
| 14 | + ); |
| 15 | +}); |
| 16 | + |
| 17 | +_highlight("highlights bash", () => { |
| 18 | + const highlighted = highlight("cd ./somedir\ncat file.txt", "bash"); |
| 19 | + assert.snapshot( |
| 20 | + highlighted, |
| 21 | + `<pre class='language-bash'><code><span class="token builtin class-name">cd</span> ./somedir |
| 22 | +<span class="token function">cat</span> file.txt</code></pre>` |
| 23 | + ); |
| 24 | +}); |
| 25 | + |
| 26 | +_highlight("highlights html", () => { |
| 27 | + const highlighted = highlight(`<div attr="some-attr">hello</div>`, "html"); |
| 28 | + assert.snapshot( |
| 29 | + highlighted, |
| 30 | + `<pre class='language-markup'><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">attr</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>some-attr<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>hello<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span></code></pre>` |
| 31 | + ); |
| 32 | +}); |
| 33 | + |
| 34 | +_highlight("highlights svelte", () => { |
| 35 | + const highlighted = highlight( |
| 36 | + `{#each x as z, i (key)}<p>hi</p>{/each}`, |
| 37 | + "sv" |
| 38 | + ); |
| 39 | + assert.snapshot( |
| 40 | + highlighted, |
| 41 | + `<pre class='language-svelte'><code><span class="token each"><span class="token punctuation">{</span><span class="token keyword">#each</span> <span class="token language-javascript">x </span><span class="token keyword">as</span> <span class="token language-javascript">z<span class="token punctuation">,</span> i </span><span class="token language-javascript"><span class="token punctuation">(</span>key<span class="token punctuation">)</span></span><span class="token punctuation">}</span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span>hi<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span><span class="token each"><span class="token punctuation">{</span><span class="token keyword">/each</span><span class="token punctuation">}</span></span></code></pre>` |
| 42 | + ); |
| 43 | +}); |
| 44 | + |
| 45 | +_highlight("highlights javascript", () => { |
| 46 | + const highlighted = highlight(`console.log('boo')`, "js"); |
| 47 | + assert.snapshot( |
| 48 | + highlighted, |
| 49 | + `<pre class='language-javascript'><code>console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'boo'</span><span class="token punctuation">)</span></code></pre>` |
| 50 | + ); |
| 51 | +}); |
| 52 | + |
| 53 | +_highlight("highlights css", () => { |
| 54 | + const highlighted = highlight(`.thing { color: pink; }`, "css"); |
| 55 | + assert.snapshot( |
| 56 | + highlighted, |
| 57 | + `<pre class='language-css'><code><span class="token selector">.thing</span> <span class="token punctuation">{</span> <span class="token property">color</span><span class="token punctuation">:</span> pink<span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre>` |
| 58 | + ); |
| 59 | +}); |
| 60 | + |
| 61 | +_highlight("highlights diff", () => { |
| 62 | + const highlighted = highlight(`+ doodaa\notherthing\n- thingy'n`, "diff"); |
| 63 | + assert.snapshot( |
| 64 | + highlighted, |
| 65 | + `<pre class='language-diff'><code><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> doodaa |
| 66 | +</span></span>otherthing |
| 67 | +<span class="token deleted-sign deleted"><span class="token prefix deleted">-</span><span class="token line"> thingy'n</span></span></code></pre>` |
| 68 | + ); |
| 69 | +}); |
| 70 | + |
| 71 | +_highlight("does not highlight other languages", () => { |
| 72 | + const highlighted = highlight("heloooo$_$ boo\nbooboo", ""); |
| 73 | + assert.snapshot( |
| 74 | + highlighted, |
| 75 | + `<pre class='language-'><code>heloooo$_$ boo |
| 76 | +booboo</code></pre>` |
| 77 | + ); |
| 78 | +}); |
| 79 | + |
| 80 | +_highlight.run(); |
0 commit comments