]> git.proxmox.com Git - mirror_xterm.js.git/blobdiff - src/Linkifier.test.ts
Create `terminal.buffer` convenience attribute
[mirror_xterm.js.git] / src / Linkifier.test.ts
index f4dc9f4dd1e79f01af2ae513ed0a7475c0ec0f01..132ce5f06e5258780ad48ee18c83f30aff2b0fd4 100644 (file)
@@ -17,6 +17,7 @@ class TestLinkifier extends Linkifier {
 }
 
 describe('Linkifier', () => {
+  let dom: jsdom.JSDOM;
   let window: Window;
   let document: Document;
 
@@ -24,13 +25,11 @@ describe('Linkifier', () => {
   let rows: HTMLElement[];
   let linkifier: TestLinkifier;
 
-  beforeEach(done => {
-    jsdom.env('', (err, w) => {
-      window = w;
-      document = window.document;
-      linkifier = new TestLinkifier();
-      done();
-    });
+  beforeEach(() => {
+    dom = new jsdom.JSDOM('');
+    window = dom.window;
+    document = window.document;
+    linkifier = new TestLinkifier();
   });
 
   function addRow(html: string) {
@@ -119,13 +118,19 @@ describe('Linkifier', () => {
       it('should match a link immediately after a link at the end of a text node', done => {
         assertLinkifiesRow('<span>foo bar</span>baz', /bar|baz/, '<span>foo <a>bar</a></span><a>baz</a>', done);
       });
+      it('should not duplicate text after a unicode character (wrapped in a span)', done => {
+        // This is a regression test for an issue that came about when using
+        // an oh-my-zsh theme that added the large blue diamond unicode
+        // character (U+1F537) which caused the path to be duplicated. See #642.
+        assertLinkifiesRow('echo \'<span class="xterm-normal-char">🔷</span>foo\'', /foo/, 'echo \'<span class="xterm-normal-char">🔷</span><a>foo</a>\'', done);
+      });
     });
 
     describe('validationCallback', () => {
       it('should enable link if true', done => {
         addRow('test');
         linkifier.registerLinkMatcher(/test/, () => done(), {
-          validationCallback: (url, cb) => {
+          validationCallback: (url, element, cb) => {
             cb(true);
             assert.equal((<HTMLElement>rows[0].firstChild).tagName, 'A');
             setTimeout(() => clickElement(rows[0].firstChild), 0);
@@ -137,7 +142,7 @@ describe('Linkifier', () => {
       it('should disable link if false', done => {
         addRow('test');
         linkifier.registerLinkMatcher(/test/, () => assert.fail(), {
-          validationCallback: (url, cb) => {
+          validationCallback: (url, element, cb) => {
             cb(false);
             assert.equal((<HTMLElement>rows[0].firstChild).tagName, 'A');
             setTimeout(() => clickElement(rows[0].firstChild), 0);
@@ -152,7 +157,7 @@ describe('Linkifier', () => {
         addRow('test test');
         let count = 0;
         linkifier.registerLinkMatcher(/test/, () => assert.fail(), {
-          validationCallback: (url, cb) => {
+          validationCallback: (url, element, cb) => {
             count += 1;
             if (count === 2) {
               done();