-- Test cases page for . See talk page to run tests.
local doc = require('Module:Documentation/sandbox')local ScribuntoUnit = require('Module:ScribuntoUnit')local suite = ScribuntoUnit:new
---------------------------------------------------------------------------------------------- Test case helper functions--------------------------------------------------------------------------------------------
local function getEnv(page) -- Gets an env table using the specified page. return doc.getEnvironmentend
---------------------------------------------------------------------------------------------- Test helper functions--------------------------------------------------------------------------------------------
function suite:testMessage self:assertEquals('sandbox', doc.message('sandbox-subpage')) self:assertEquals('Subpages of this foobar', doc.message('subpages-link-display',)) self:assertEquals(true, doc.message('display-strange-usage-category', nil, 'boolean'))end
function suite:testMakeToolbar self:assertEquals(nil, doc.makeToolbar) self:assertEquals('
', doc.makeToolbar('Foo')) self:assertEquals(' ', doc.makeToolbar('Foo', 'Bar'))endfunction suite:testMakeWikilink self:assertEquals('Foo', doc.makeWikilink('Foo')) self:assertEquals('Bar', doc.makeWikilink('Foo', 'Bar'))end
function suite:testMakeCategoryLink self:assertEquals('', doc.makeCategoryLink('Foo')) self:assertEquals('', doc.makeCategoryLink('Foo', 'Bar'))end
function suite:testMakeUrlLink self:assertEquals('[Foo Bar]', doc.makeUrlLink('Foo', 'Bar'))end
---------------------------------------------------------------------------------------------- Test env table--------------------------------------------------------------------------------------------
function suite:assertEnvFieldEquals(expected, page, field) local env = getEnv(page) self:assertEquals(expected, env[field])end
function suite:assertEnvTitleEquals(expected, page, titleField) local env = getEnv(page) local title = env[titleField] self:assertEquals(expected, title.prefixedText)end
function suite:testEnvTitle self:assertEnvTitleEquals('Wikipedia:Sandbox', 'Wikipedia:Sandbox', 'title') self:assertEnvTitleEquals('Template:Example/sandbox', 'Template:Example/sandbox', 'title')end
function suite:testEnvBadTitle local env = doc.getEnvironment local title = env.title self:assertEquals(nil, title)end
function suite:testEnvTemplateTitle self:assertEnvTitleEquals('Template:Example', 'Template:Example', 'templateTitle') self:assertEnvTitleEquals('Template:Example', 'Template talk:Example', 'templateTitle') self:assertEnvTitleEquals('Template:Example', 'Template:Example/sandbox', 'templateTitle') self:assertEnvTitleEquals('Template:Example', 'Template talk:Example/sandbox', 'templateTitle') self:assertEnvTitleEquals('Template:Example', 'Template:Example/testcases', 'templateTitle') self:assertEnvTitleEquals('Template:Example/foo', 'Template:Example/foo', 'templateTitle') self:assertEnvTitleEquals('File:Example', 'File talk:Example', 'templateTitle') self:assertEnvTitleEquals('File:Example', 'File talk:Example/sandbox', 'templateTitle')end
function suite:testEnvDocTitle self:assertEnvTitleEquals('Template:Example/doc', 'Template:Example', 'docTitle') self:assertEnvTitleEquals('Template:Example/doc', 'Template talk:Example', 'docTitle') self:assertEnvTitleEquals('Template:Example/doc', 'Template:Example/sandbox', 'docTitle') self:assertEnvTitleEquals('Talk:Example/doc', 'Example', 'docTitle') self:assertEnvTitleEquals('File talk:Example.png/doc', 'File:Example.png', 'docTitle') self:assertEnvTitleEquals('File talk:Example.png/doc', 'File talk:Example.png/sandbox', 'docTitle')end
function suite:testEnvSandboxTitle self:assertEnvTitleEquals('Template:Example/sandbox', 'Template:Example', 'sandboxTitle') self:assertEnvTitleEquals('Template:Example/sandbox', 'Template talk:Example', 'sandboxTitle') self:assertEnvTitleEquals('Template:Example/sandbox', 'Template:Example/sandbox', 'sandboxTitle') self:assertEnvTitleEquals('Talk:Example/sandbox', 'Example', 'sandboxTitle') self:assertEnvTitleEquals('File talk:Example.png/sandbox', 'File:Example.png', 'sandboxTitle')end
function suite:testEnvTestcasesTitle self:assertEnvTitleEquals('Template:Example/testcases', 'Template:Example', 'testcasesTitle') self:assertEnvTitleEquals('Template:Example/testcases', 'Template talk:Example', 'testcasesTitle') self:assertEnvTitleEquals('Template:Example/testcases', 'Template:Example/testcases', 'testcasesTitle') self:assertEnvTitleEquals('Talk:Example/testcases', 'Example', 'testcasesTitle') self:assertEnvTitleEquals('File talk:Example.png/testcases', 'File:Example.png', 'testcasesTitle')end
function suite:testEnvProtectionLevels local pipeEnv = getEnv('Template:?') self:assertEquals('autoconfirmed', pipeEnv.protectionLevels.edit[1]) local sandboxEnv = getEnv('Wikipedia:Sandbox') local sandboxEditLevels = sandboxEnv.protectionLevels.edit if sandboxEditLevels then -- sandboxEditLevels may also be nil if the page is unprotected self:assertEquals(nil, sandboxEditLevels[1]) else self:assertEquals(nil, sandboxEditLevels) endend
function suite:testEnvSubjectSpace self:assertEnvFieldEquals(10, 'Template:Sandbox', 'subjectSpace') self:assertEnvFieldEquals(10, 'Template talk:Sandbox', 'subjectSpace') self:assertEnvFieldEquals(0, 'Foo', 'subjectSpace') self:assertEnvFieldEquals(0, 'Talk:Foo', 'subjectSpace')end
function suite:testEnvDocSpace self:assertEnvFieldEquals(10, 'Template:Sandbox', 'docSpace') self:assertEnvFieldEquals(828, 'Module:Sandbox', 'docSpace') self:assertEnvFieldEquals(1, 'Foo', 'docSpace') self:assertEnvFieldEquals(7, 'File:Example.png', 'docSpace') self:assertEnvFieldEquals(9, 'MediaWiki:Watchlist-details', 'docSpace') self:assertEnvFieldEquals(15, 'Category:Wikipedians', 'docSpace')end
function suite:testEnvDocpageBase self:assertEnvFieldEquals('Template:Example', 'Template:Example', 'docpageBase') self:assertEnvFieldEquals('Template:Example', 'Template:Example/sandbox', 'docpageBase') self:assertEnvFieldEquals('Template:Example', 'Template talk:Example', 'docpageBase') self:assertEnvFieldEquals('File talk:Example.png', 'File:Example.png', 'docpageBase') self:assertEnvFieldEquals('File talk:Example.png', 'File talk:Example.png', 'docpageBase') self:assertEnvFieldEquals('File talk:Example.png', 'File talk:Example.png/sandbox', 'docpageBase')end
function suite:testEnvCompareUrl -- We use "Template:Edit protected" rather than "Template:Example" here as it has a space in the title. local expected = 'https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1=Template%3AEdit+protected&page2=Template%3AEdit+protected%2Fsandbox' self:assertEnvFieldEquals(expected, 'Template:Edit protected', 'compareUrl') self:assertEnvFieldEquals(expected, 'Template:Edit protected/sandbox', 'compareUrl') self:assertEnvFieldEquals(nil, 'Template:Non-existent template adsfasdg', 'compareUrl') self:assertEnvFieldEquals(nil, 'Template:Fact', 'compareUrl') -- Exists but doesn't have a sandbox.end
---------------------------------------------------------------------------------------------- Test sandbox notice--------------------------------------------------------------------------------------------
function suite.getSandboxNoticeTestData(page) local env = getEnv(page) local templatePage = page:match('^(.*)/sandbox$') local image = '' local templateBlurb = 'This is the template sandbox page for ' .. templatePage .. '' local moduleBlurb = 'This is the module sandbox page for ' .. templatePage .. '' local otherBlurb = 'This is the sandbox page for ' .. templatePage .. '' local diff = '.. mw.uri.encode(templatePage) .. '&page2=' .. mw.uri.encode(page) .. ' diff' local testcasesBlurb = 'See also the companion subpage for test cases.' local category = '' local clear = '
' return env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category, clearend
function suite:testSandboxNoticeNotSandbox local env = getEnv('Template:Example') local notice = doc.sandboxNotice(env) self:assertEquals(nil, notice)end
function suite:testSandboxNoticeStaticVals local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category, clear = suite.getSandboxNoticeTestData('Template:Example/sandbox') local notice = doc.sandboxNotice(env)
-- Escape metacharacters (mainly '-') clear = clear:gsub('%p', '%%%0')
self:assertStringContains('^' .. clear, notice, false) self:assertStringContains(image, notice, true) self:assertStringContains(category, notice, true)end
function suite:testSandboxNoticeTemplateBlurb local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Template:Example/sandbox') local notice = doc.sandboxNotice(env) self:assertStringContains(templateBlurb, notice, true)end
function suite:testSandboxNoticeModuleBlurb local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Module:Math/sandbox') local notice = doc.sandboxNotice(env) self:assertStringContains(moduleBlurb, notice, true)end
function suite:testSandboxNoticeOtherBlurb local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('User:Mr. Stradivarius/sandbox') local notice = doc.sandboxNotice(env) self:assertStringContains(otherBlurb, notice, true)end
function suite:testSandboxNoticeBlurbDiff local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Template:Example/sandbox') local notice = doc.sandboxNotice(env) if mw.title.getCurrentTitle.isTalk then -- This test doesn't work in the debug console due to the use of frame:preprocess. -- The frame test doesn't seem to be working for now, so adding a namespace hack. self:assertStringContains(diff, notice, true) endend
function suite:testSandboxNoticeBlurbDiffNoBasePage local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Module:User:Mr. Stradivarius/sandbox') local notice = doc.sandboxNotice(env) if mw.title.getCurrentTitle.isTalk then -- This test doesn't work in the debug console due to the use of frame:preprocess. -- The frame test doesn't seem to be working for now, so adding a namespace hack. self:assertNotStringContains(diff, notice, true) endend
function suite:testSandboxNoticeTestcases local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Template:Edit protected/sandbox') local notice = doc.sandboxNotice(env) self:assertStringContains(testcasesBlurb, notice, true)end
function suite:testSandboxNoticeNoTestcases local env, image, templateBlurb, moduleBlurb, otherBlurb, diff, testcasesBlurb, category = suite.getSandboxNoticeTestData('Template:Example/sandbox') local notice = doc.sandboxNotice(env) self:assertNotStringContains(testcasesBlurb, notice, true)end
---------------------------------------------------------------------------------------------- Test protection template-- -- There's not much we can do with this until gets rewritten in Lua. At the-- moment the protection detection only works for the current page, and the testcases pages-- will be unprotected.--------------------------------------------------------------------------------------------
function suite:testProtectionTemplateUnprotectedTemplate local env = getEnv('Template:Example') self:assertEquals(nil, doc.protectionTemplate(env))end
function suite:testProtectionTemplateProtectedTemplate local env = getEnv('Template:Navbox') -- Test whether there is some content. We don't care what the content is, as the protection level -- detected will be for the current page, not the template. self:assertTrue(doc.protectionTemplate(env))end
function suite:testProtectionTemplateUnprotectedModule local env = getEnv('Module:Example') self:assertEquals(nil, doc.protectionTemplate(env))end
function suite:testProtectionTemplateProtectedModule local env = getEnv('Module:Yesno') -- Test whether there is some content. We don't care what the content is, as the protection level -- detected will be for the current page, not the template. self:assertTrue(doc.protectionTemplate(env))end
---------------------------------------------------------------------------------------------- Test _startBox--------------------------------------------------------------------------------------------
function suite:testStartBoxContentArg local pattern = '
\n
.-' local startBox = doc._startBox(getEnv('Template:Example')) self:assertStringContains(pattern, startBox)end
function suite:testStartBoxHtml self:assertStringContains('
\n
.-.-', doc._startBox(getEnv('Template:Example')) )end
---------------------------------------------------------------------------------------------- Test makeStartBoxLinksData--------------------------------------------------------------------------------------------
function suite:testMakeStartBoxLinksData local env = getEnv('Template:Example') local data = doc.makeStartBoxLinksData(env) self:assertEquals('Template:Example', data.title.prefixedText) self:assertEquals('Template:Example/doc', data.docTitle.prefixedText) self:assertEquals('view', data.viewLinkDisplay) self:assertEquals('edit', data.editLinkDisplay) self:assertEquals('history', data.historyLinkDisplay) self:assertEquals('purge', data.purgeLinkDisplay) self:assertEquals('create', data.createLinkDisplay)end
function suite:testMakeStartBoxLinksDataTemplatePreload local env = getEnv('Template:Example') local data = doc.makeStartBoxLinksData(env) self:assertEquals('Template:Documentation/preload', data.preload)end
function suite:testMakeStartBoxLinksDataArgsPreload local env = getEnv('Template:Example') local data = doc.makeStartBoxLinksData(env) self:assertEquals('My custom preload', data.preload)end
---------------------------------------------------------------------------------------------- Test renderStartBoxLinks--------------------------------------------------------------------------------------------
function suite.makeExampleStartBoxLinksData(exists) -- Makes a data table to be used with testRenderStartBoxLinksExists and testRenderStartBoxLinksDoesntExist. local data = if exists then data.title = mw.title.new('Template:Example') data.docTitle = mw.title.new('Template:Example/doc') else data.title = mw.title.new('Template:NonExistentTemplate') data.docTitle = mw.title.new('Template:NonExistentTemplate/doc') end data.viewLinkDisplay = 'view' data.editLinkDisplay = 'edit' data.historyLinkDisplay = 'history' data.purgeLinkDisplay = 'purge' data.createLinkDisplay = 'create' data.preload = 'Template:MyPreload' return dataend
function suite:testRenderStartBoxLinksExists local data = suite.makeExampleStartBoxLinksData(true) local expected = '[view] [edit] [history] [purge]' self:assertEquals(expected, doc.renderStartBoxLinks(data))end
function suite:testRenderStartBoxLinksDoesntExist local data = suite.makeExampleStartBoxLinksData(false) local expected = '[create] [purge]' self:assertEquals(expected, doc.renderStartBoxLinks(data))end
---------------------------------------------------------------------------------------------- Test makeStartBoxData--------------------------------------------------------------------------------------------
function suite:testStartBoxDataBlankHeading local data = doc.makeStartBoxData self:assertEquals(nil, data)end
function suite:testStartBoxDataHeadingTemplate local env = getEnv('Template:Example') local data = doc.makeStartBoxData(env) local expected = ' Template documentation' self:assertEquals(expected, data.heading)end
function suite:testStartBoxDataHeadingModule local env = getEnv('Module:Example') local data = doc.makeStartBoxData(env) local expected = ' Module documentation' self:assertEquals(expected, data.heading)end
function suite:testStartBoxDataHeadingFile local env = getEnv('File:Example.png') local data = doc.makeStartBoxData(env) local expected = 'Summary' self:assertEquals(expected, data.heading)end
function suite:testStartBoxDataHeadingOther local env = getEnv('User:Example') local data = doc.makeStartBoxData(env) local expected = 'Documentation' self:assertEquals(expected, data.heading)end
function suite:testStartBoxDataHeadingStyle local data = doc.makeStartBoxData self:assertEquals('foo:bar', data.headingStyleText)end
function suite:testStartBoxDataHeadingStyleTemplate local env = getEnv('Template:Example') local data = doc.makeStartBoxData(env) self:assertEquals(nil, data.headingStyleText)end
function suite:testStartBoxDataHeadingStyleOther local env = getEnv('User:Example') local data = doc.makeStartBoxData(env) self:assertEquals(nil, data.headingStyleText)end
function suite:testStartBoxDataLinks local env = getEnv('Template:Example') local data = doc.makeStartBoxData(env, 'some links') self:assertEquals('some links', data.links) self:assertEquals('mw-editsection-like plainlinks', data.linksClass)end
function suite:testStartBoxDataNoLinks local env = getEnv('Template:Example') local data = doc.makeStartBoxData(env) self:assertEquals(nil, data.links) self:assertEquals(nil, data.linksClass) self:assertEquals(nil, data.linksId)end
---------------------------------------------------------------------------------------------- Test renderStartBox--------------------------------------------------------------------------------------------
function suite:testRenderStartBox local expected = '
\n
' self:assertEquals(expected, doc.renderStartBox)end
function suite:testRenderStartBoxHeadingStyleText self:assertStringContains('\n
', doc.renderStartBox, true)endfunction suite:testRenderStartBoxHeading self:assertStringContains('\n
Foobar', doc.renderStartBox, true)endfunction suite:testRenderStartBoxLinks self:assertStringContains('
list of links', doc.renderStartBox, true)endfunction suite:testRenderStartBoxLinksClass self:assertStringContains('
list of links', doc.renderStartBox, true) self:assertNotStringContains('linksclass', doc.renderStartBox, true)endfunction suite:testRenderStartBoxLinksId self:assertStringContains('
list of links', doc.renderStartBox, true) self:assertNotStringContains('linksid', doc.renderStartBox, true)end---------------------------------------------------------------------------------------------- Test _content--------------------------------------------------------------------------------------------
function suite:testContentArg self:assertEquals('\nsome documentation\n', doc._content)end
function suite:testContentNoContent local env = getEnv('Template:This is a non-existent template agauchvaiu') self:assertEquals('\n\n', doc._content(env))end
function suite:testContentExists local env = doc.getEnvironment local docs = mw.getCurrentFrame:preprocess('') local expected = '\n' .. docs .. '\n' self:assertEquals(expected, doc._content(env))end
---------------------------------------------------------------------------------------------- Test _endBox--------------------------------------------------------------------------------------------
function suite:testEndBoxLinkBoxOff local env = getEnv self:assertEquals(nil, doc._endBox(env))end
function suite:testEndBoxNoDocsOtherNs local env = self:assertEquals(nil, doc._endBox(env))end
function suite:testEndBoxAlwaysShowNs self:assertTrue(doc._endBox(getEnv('Template:Non-existent template asdfalsdhaw'))) self:assertTrue(doc._endBox(getEnv('Module:Non-existent module asdhewbydcyg'))) self:assertTrue(doc._endBox(getEnv('User:Non-existent user ahfliwebalisyday')))end
function suite:testEndBoxStyles local env = getEnv('Template:Example') local endBox = doc._endBox(env) self:assertStringContains('class="documentation-metadata plainlinks"', endBox, true)end
function suite:testEndBoxLinkBoxArg local env = getEnv self:assertStringContains('Custom link box', doc._endBox(env))end
function suite:testEndBoxExperimentBlurbValidNs local expected = 'Editors can experiment in this.-
' self:assertStringContains(expected, doc._endBox(getEnv('Template:Example'))) self:assertStringContains(expected, doc._endBox(getEnv('Module:Example'))) self:assertStringContains(expected, doc._endBox(getEnv('User:Example')))end
function suite:testEndBoxExperimentBlurbInvalidNs local expected = 'Editors can experiment in this.-
' self:assertNotStringContains(expected, doc._endBox(getEnv('Wikipedia:Twinkle'))) -- Wikipedia:Twinkle has an existing /doc subpageend
function suite:testEndBoxCategoriesBlurb local expected = 'Add categories to the %[%[.-|/doc%]%] subpage%.' self:assertStringContains(expected, doc._endBox(getEnv('Template:Example'))) self:assertStringContains(expected, doc._endBox(getEnv('Module:Example'))) self:assertStringContains(expected, doc._endBox(getEnv('User:Example'))) self:assertNotStringContains(expected, doc._endBox(getEnv('Template:Example'))) self:assertNotStringContains(expected, doc._endBox(getEnv('Template:Example'))) self:assertNotStringContains(expected, doc._endBox(getEnv('Wikipedia:Twinkle')))end
---------------------------------------------------------------------------------------------- Test makeDocPageBlurb--------------------------------------------------------------------------------------------
function suite:testDocPageBlurbError self:assertEquals(nil, doc.makeDocPageBlurb)end
function suite:testDocPageBlurbTemplateDocExists local env = getEnv('Template:Documentation') local expected = 'The above documentation is transcluded from .
function suite:testDocPageBlurbTemplateDocDoesntExist local env = getEnv('Template:Non-existent template ajlkfdsa') self:assertEquals(nil, doc.makeDocPageBlurb(env))end
function suite:testDocPageBlurbModuleDocExists local env = getEnv('Module:Example') local expected = 'The above documentation is transcluded from .
function suite:testDocPageBlurbModuleDocDoesntExist local env = getEnv('Module:Non-existent module ajlkfdsa') local expected = 'You might want to create a documentation page for this Scribunto module.
' self:assertEquals(expected, doc.makeDocPageBlurb(env))end
---------------------------------------------------------------------------------------------- Test makeExperimentBlurb--------------------------------------------------------------------------------------------
function suite:testExperimentBlurbTemplate local env = getEnv('Template:Example') self:assertStringContains("Editors can experiment in this template's .- and .- pages.", doc.makeExperimentBlurb(env), false)end
function suite:testExperimentBlurbModule local env = getEnv('Module:Example') self:assertStringContains("Editors can experiment in this module's .- and .- pages.", doc.makeExperimentBlurb(env), false)end
' self:assertStringContains(pattern, doc.makeExperimentBlurb(env), true)endfunction suite:testExperimentBlurbSandboxDoesntExist local env = getEnv('Template:Non-existent template sajdfasd') local pattern = 'sandbox
' self:assertStringContains(pattern, doc.makeExperimentBlurb(env), true)end ' self:assertStringContains(pattern, doc.makeExperimentBlurb(env), true)endfunction suite:testExperimentBlurbTestcasesDontExist local env = getEnv('Template:Non-existent template sajdfasd') local pattern = 'testcases
' self:assertStringContains(pattern, doc.makeExperimentBlurb(env), true)end---------------------------------------------------------------------------------------------- Test makeCategoriesBlurb--------------------------------------------------------------------------------------------
function suite:testMakeCategoriesBlurb local env = getEnv('Template:Example') self:assertEquals('Add categories to the /doc subpage.', doc.makeCategoriesBlurb(env))end
---------------------------------------------------------------------------------------------- Test makeSubpagesBlurb--------------------------------------------------------------------------------------------
function suite:testMakeSubpagesBlurbTemplate local env = getEnv('Template:Example') self:assertEquals('Subpages of this template.', doc.makeSubpagesBlurb(env))end
function suite:testMakeSubpagesBlurbModule local env = getEnv('Module:Example') self:assertEquals('Subpages of this module.', doc.makeSubpagesBlurb(env))end
function suite:testMakeSubpagesBlurbOther local env = getEnv('File:Example.png') self:assertEquals('Subpages of this page.', doc.makeSubpagesBlurb(env))end---------------------------------------------------------------------------------------------- Test addTrackingCategories--------------------------------------------------------------------------------------------
function suite.getStrangeUsageCat return ''end
function suite:testAddTrackingCategoriesTemplatePage local env = getEnv('Template:Example') self:assertEquals(, doc.addTrackingCategories(env))end
function suite:testAddTrackingCategoriesDocPage local env = getEnv('Template:Example/doc') self:assertEquals(self.getStrangeUsageCat, doc.addTrackingCategories(env))end
function suite:testAddTrackingCategoriesTestcasesPage local env = getEnv('Template:Example/testcases') self:assertEquals(self.getStrangeUsageCat, doc.addTrackingCategories(env))end
function suite:testAddTrackingCategoriesModuleDoc local env = getEnv('Module:Math/doc') self:assertEquals(self.getStrangeUsageCat, doc.addTrackingCategories(env))end
function suite:testAddTrackingCategoriesModuleTestcases local env = getEnv('Module:Math/testcases') self:assertEquals(, doc.addTrackingCategories(env))end
function suite:testAddTrackingCategoriesInvalidTitle local env = getEnv('Template:Foo[]Bar') self:assertEquals(nil, doc.addTrackingCategories(env))end
---------------------------------------------------------------------------------------------- Whitespace tests--------------------------------------------------------------------------------------------
function suite:testNoTrailingWhitespace self:assertStringContains('of this template%]%].
return suite