Module:Template test case: Difference between revisions

    m (fix regex – was broken in 2015 by https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/214404/)
    (Add test cases using "output" parameter to Category:Test cases using output parameter. Updated all formats to allow "output=nowiki" or "output=nowiki+" to change display of template output, similar to the "nowiki" parameter in Module:UnitTests. Tested in /sandbox. See examples in /testcases, Template:Test case/testcases, Template:Test case nowiki/testcases, and Template:Collapsible test case/testcases.)
    Line 288: Line 288:


    -- Add tracking categories. At the moment we are only tracking templates
    -- Add tracking categories. At the moment we are only tracking templates
    -- that use any "heading" parameters.
    -- that use any "heading" parameters or an "output" parameter.
    obj.categories = {}
    obj.categories = {}
    for k, v in pairs(options) do
    for k, v in pairs(options) do
    if type(k) == 'string' and k:find('heading') then
    if type(k) == 'string' and k:find('heading') then
    obj.categories['Test cases using heading parameters'] = true
    obj.categories['Test cases using heading parameters'] = true
    break
    elseif k == 'output' then
    obj.categories['Test cases using output parameter'] = true
    end
    end
    end
    end
    Line 404: Line 405:
    -- Template output
    -- Template output
    for i, obj in ipairs(self.templates) do
    for i, obj in ipairs(self.templates) do
    dataRow:tag('td')
    if self.options.output == 'nowiki+' then
    :newline()
    dataRow:tag('td')
    :wikitext(self.options.before)
    :newline()
    :wikitext(self:getTemplateOutput(obj))
    :wikitext(self.options.before)
    :wikitext(self.options.after)
    :wikitext(self:getTemplateOutput(obj))
    :wikitext(self.options.after)
    :wikitext('<pre style="white-space: pre-wrap;">')
    :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
    :wikitext('</pre>')
    elseif self.options.output == 'nowiki' then
    dataRow:tag('td')
    :newline()
    :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
    else
    dataRow:tag('td')
    :newline()
    :wikitext(self.options.before)
    :wikitext(self:getTemplateOutput(obj))
    :wikitext(self.options.after)
    end
    end
    end
    Line 441: Line 457:
    dataRow:tag('th')
    dataRow:tag('th')
    :attr('scope', 'row')
    :attr('scope', 'row')
    :css('vertical-align', 'top')
    :css('text-align', 'left')
    :css('text-align', 'left')
    :wikitext(obj:makeHeader())
    :wikitext(obj:makeHeader())
    dataRow:tag('td')
    dataRow:tag('td')
    :css('vertical-align', 'top')
    :css('padding', '0 1em')
    :css('padding', '0 1em')
    :wikitext('→')
    :wikitext('→')
    Line 456: Line 474:
    -- Template output
    -- Template output
    dataRow:tag('td')
    if self.options.output == 'nowiki+' then
    :newline()
    dataRow:tag('td')
    :wikitext(self:getTemplateOutput(obj))
    :newline()
    :wikitext(self:getTemplateOutput(obj))
    :wikitext('<pre style="white-space: pre-wrap;">')
    :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
    :wikitext('</pre>')
    elseif self.options.output == 'nowiki' then
    dataRow:tag('td')
    :newline()
    :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
    else
    dataRow:tag('td')
    :newline()
    :wikitext(self:getTemplateOutput(obj))
    end
    end
    end


    Line 476: Line 507:
    line[#line + 1] = ' '
    line[#line + 1] = ' '
    end
    end
    line[#line + 1] = self:getTemplateOutput(obj)
    if self.options.output == 'nowiki+' then
    line[#line + 1] = self:getTemplateOutput(obj)
    line[#line + 1] = '<pre style="white-space: pre-wrap;">'
    line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
    line[#line + 1] = '</pre>'
    elseif self.options.output == 'nowiki' then
    line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
    else
    line[#line + 1] = self:getTemplateOutput(obj)
    end
    ret[#ret + 1] = table.concat(line)
    ret[#ret + 1] = table.concat(line)
    end
    end
    Line 498: Line 538:
    ret[#ret + 1] = obj:makeHeader()
    ret[#ret + 1] = obj:makeHeader()
    end
    end
    ret[#ret + 1] = self:getTemplateOutput(obj)
    if self.options.output == 'nowiki+' then
    ret[#ret + 1] = self:getTemplateOutput(obj) .. '<pre style="white-space: pre-wrap;">' .. mw.text.nowiki(self:getTemplateOutput(obj)) .. '</pre>'
    elseif self.options.output == 'nowiki' then
    ret[#ret + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
    else
    ret[#ret + 1] = self:getTemplateOutput(obj)
    end
    end
    end
    return table.concat(ret, '\n\n')
    return table.concat(ret, '\n\n')