Skip to content

Commit

Permalink
Fix/backlink binary (#8098)
Browse files Browse the repository at this point in the history
* fix: prevent check binary tiddler for backlink

* refactor: test for backlink
  • Loading branch information
linonetwo authored May 29, 2024
1 parent 6910be7 commit 47029ba
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 44 deletions.
3 changes: 3 additions & 0 deletions core/modules/indexers/back-indexer.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ BackSubIndexer.prototype.rebuild = function() {
* Get things that is being referenced in the text, e.g. tiddler names in the link syntax.
*/
BackSubIndexer.prototype._getTarget = function(tiddler) {
if(this.wiki.isBinaryTiddler(tiddler.fields.text)) {
return [];
}
var parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});
if(parser) {
return this.wiki[this.extractor](parser.tree);
Expand Down
101 changes: 57 additions & 44 deletions editions/test/tiddlers/tests/test-backlinks.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,24 @@ Tests the backlinks mechanism.
"use strict";

describe('Backlinks tests', function() {
function setupWiki(wikiOptions) {
wikiOptions = wikiOptions || {};
// Create a wiki
var wiki = new $tw.Wiki(wikiOptions);
wiki.addIndexersToWiki();

wiki.addTiddler({
title: 'TestIncoming',
text: '',
});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]',
});
return wiki;
}

describe('a tiddler with no links to it', function() {
var wiki = new $tw.Wiki();

Expand All @@ -25,15 +43,7 @@ describe('Backlinks tests', function() {
});

describe('A tiddler added to the wiki with a link to it', function() {
var wiki = new $tw.Wiki();

wiki.addTiddler({
title: 'TestIncoming',
text: ''});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]'});
var wiki = setupWiki();

it('should have a backlink', function() {
expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('TestOutgoing');
Expand All @@ -42,15 +52,7 @@ describe('Backlinks tests', function() {

describe('A tiddler that has a link added to it later', function() {
it('should have an additional backlink', function() {
var wiki = new $tw.Wiki();

wiki.addTiddler({
title: 'TestIncoming',
text: ''});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]'});
var wiki = setupWiki();

wiki.addTiddler({
title: 'TestOutgoing2',
Expand All @@ -67,15 +69,7 @@ describe('Backlinks tests', function() {
});

describe('A tiddler that has a link remove from it later', function() {
var wiki = new $tw.Wiki();

wiki.addTiddler({
title: 'TestIncoming',
text: ''});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]'});
var wiki = setupWiki();

it('should have one fewer backlink', function() {
expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('TestOutgoing');
Expand All @@ -89,15 +83,7 @@ describe('Backlinks tests', function() {
});

describe('A tiddler linking to another that gets renamed', function() {
var wiki = new $tw.Wiki();

wiki.addTiddler({
title: 'TestIncoming',
text: ''});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]'});
var wiki = setupWiki();

it('should have its name changed in the backlinks', function() {
expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('TestOutgoing');
Expand All @@ -109,22 +95,49 @@ describe('Backlinks tests', function() {
});

describe('A tiddler linking to another that gets deleted', function() {
var wiki = new $tw.Wiki();
var wiki = setupWiki();

it('should be removed from backlinks', function() {
expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('TestOutgoing');

wiki.deleteTiddler('TestOutgoing');

expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('');
});
});

describe('Binary tiddlers should not be parsed', function() {
var wiki = setupWiki();

wiki.addTiddler({
title: 'TestIncoming',
text: ''});
title: 'TestDoc.doc',
text: 'A link to [[TestOutgoing]]',
type: 'application/msword'
});

wiki.addTiddler({
title: 'TestExcel.xls',
text: 'A link to [[TestOutgoing]]',
type: 'application/excel'
});

wiki.addTiddler({
title: 'TestOutgoing',
text: 'A link to [[TestIncoming]]'});
text: 'Some links to [[TestDoc.doc]] and [[TestExcel.xls]].'
});

it('should be removed from backlinks', function() {
expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('TestOutgoing');
it('should ignore office files', function() {
expect(wiki.getIndexer("BackIndexer").subIndexers.link._getTarget(wiki.getTiddler('TestExcel.xls'))).toEqual([]);

wiki.deleteTiddler('TestOutgoing');
expect(wiki.filterTiddlers('[all[]] +[backlinks[]]').join(',')).toBe('TestOutgoing');

// make it tw5 tiddler
wiki.addTiddler({
title: 'TestExcel.xls',
text: 'A link to [[TestOutgoing]]'
});

expect(wiki.filterTiddlers('TestIncoming +[backlinks[]]').join(',')).toBe('');
expect(wiki.filterTiddlers('[all[]] +[backlinks[]]').join(',')).toBe('TestOutgoing,TestExcel.xls');
});
});
});
Expand Down

0 comments on commit 47029ba

Please sign in to comment.