diff --git a/lib/jsdoc/util/templateHelper.js b/lib/jsdoc/util/templateHelper.js index 876e6a68..2c230527 100644 --- a/lib/jsdoc/util/templateHelper.js +++ b/lib/jsdoc/util/templateHelper.js @@ -42,6 +42,12 @@ function makeUniqueFilename(filename, str) { var key = filename.toLowerCase(); var nonUnique = true; + // don't allow filenames to begin with an underscore + if (!filename.length || filename[0] === '_') { + filename = 'X' + filename; + key = filename.toLowerCase(); + } + // append enough underscores to make the filename unique while (nonUnique) { if ( hasOwnProp.call(files, key) ) { diff --git a/test/specs/jsdoc/util/templateHelper.js b/test/specs/jsdoc/util/templateHelper.js index a01cefa2..c4586b10 100644 --- a/test/specs/jsdoc/util/templateHelper.js +++ b/test/specs/jsdoc/util/templateHelper.js @@ -1,16 +1,16 @@ -/*global afterEach, beforeEach, describe, expect, env, it, jasmine, spyOn, xdescribe */ /*eslint quotes:0 */ 'use strict'; var hasOwnProp = Object.prototype.hasOwnProperty; describe("jsdoc/util/templateHelper", function() { - var helper = require('jsdoc/util/templateHelper'), - doclet = require('jsdoc/doclet'), - doop = require('jsdoc/util/doop'), - logger = require('jsdoc/util/logger'), - resolver = require('jsdoc/tutorial/resolver'), - taffy = require('taffydb').taffy; + var helper = require('jsdoc/util/templateHelper'); + var doclet = require('jsdoc/doclet'); + var doop = require('jsdoc/util/doop'); + var logger = require('jsdoc/util/logger'); + var resolver = require('jsdoc/tutorial/resolver'); + var taffy = require('taffydb').taffy; + helper.registerLink('test', 'path/to/test.html'); it("should exist", function() { @@ -202,6 +202,10 @@ describe("jsdoc/util/templateHelper", function() { expect(filename).toBe('a very strange __________ filename.html'); }); + it('should not allow a filename to start with an underscore', function() { + expect( helper.getUniqueFilename('') ).toBe('X_.html'); + }); + it('should not return the same filename twice', function() { var name = 'polymorphic'; var filename1 = helper.getUniqueFilename(name);