Module:Template test case: Difference between revisions

Implement basic support for testing a module.
 
imported>Izno
add a clear
 
(5 intermediate revisions by 3 users not shown)
Line 327: Line 327:
local out = obj:getOutput()
local out = obj:getOutput()
-- Remove the random parts from strip markers.
-- Remove the random parts from strip markers.
out = out:gsub('(\127\'"`UNIQ.-)%-%x+%-(QINU`"\'\127)', '%1%2')
out = out:gsub('(\127[^\127]*UNIQ%-%-%l+%-)%x+(%-%-?QINU[^\127]*\127)', '%1%2')
return out
return out
end
end
Line 346: Line 346:
end
end
local isEqual = self:templateOutputIsEqual()
local isEqual = self:templateOutputIsEqual()
local root = mw.html.create('table')
local root = mw.html.create('div')
if self.options.wantdiff then
root
root
:addClass('mw-collapsible')
:addClass('mw-collapsible')
if self.options.notcollapsed == false then
root
:addClass('mw-collapsed')
end
root
:css('background-color', 'transparent')
:css('width', '100%')
:css('width', '100%')
:css('border', 'solid silver 1px')
:css('border', 'solid silver 1px')
:tag('tr')
:css('padding', '0.2em')
:tag('th')
:css('clear', 'both')
:addClass(self.options.notcollapsed == false and 'mw-collapsed' or nil)
if self.options.wantdiff then
root
:tag('div')
:css('background-color', isEqual and 'yellow' or '#90a8ee')
:css('background-color', isEqual and 'yellow' or '#90a8ee')
:css('font-weight', 'bold')
:css('padding', '0.2em')
:wikitext(title)
:wikitext(title)
:done()
:done()
:done()
:tag('tr')
:tag('td')
:newline()
:wikitext(s)
:newline()
else
else
root
:addClass('mw-collapsible')
if self.options.notcollapsed == false then
root
:addClass('mw-collapsed')
end
if self.options.notcollapsed ~= true or false then
if self.options.notcollapsed ~= true or false then
root
root
Line 381: Line 368:
end
end
root
root
:css('background-color', 'transparent')
:tag('div')
:css('width', '100%')
:css('border', 'solid silver 1px')
:tag('tr')
:tag('th')
:css('background-color', isEqual and 'lightgreen' or 'yellow')
:css('background-color', isEqual and 'lightgreen' or 'yellow')
:css('font-weight', 'bold')
:css('padding', '0.2em')
:wikitext(title)
:wikitext(title)
:done()
:done()
:done()
end
:tag('tr')
root
:tag('td')
:tag('div')
:newline()
:addClass('mw-collapsible-content')
:wikitext(s)
:newline()
:newline()
:wikitext(s)
end
:newline()
return tostring(root)
return tostring(root)
end
end
Line 526: Line 511:
dataRow:tag('td')
dataRow:tag('td')
:newline()
:newline()
:wikitext(self:getTemplateOutput(obj))
                :wikitext(self.options.before)
:wikitext('<pre style="white-space: pre-wrap;">')
                :wikitext(self:getTemplateOutput(obj))
:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
                :wikitext(self.options.after)
:wikitext('</pre>')
                :wikitext('<pre style="white-space: pre-wrap;">')
                :wikitext(mw.text.nowiki(self.options.before or ""))
                :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
                :wikitext(mw.text.nowiki(self.options.after or ""))
                :wikitext('</pre>')
elseif self.options.output == 'nowiki' then
elseif self.options.output == 'nowiki' then
dataRow:tag('td')
dataRow:tag('td')
:newline()
:newline()
:wikitext(mw.text.nowiki(self.options.before or ""))
:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
:wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
:wikitext(mw.text.nowiki(self.options.after or ""))
else
else
dataRow:tag('td')
dataRow:tag('td')
:newline()
:newline()
:wikitext(self.options.before)
:wikitext(self:getTemplateOutput(obj))
:wikitext(self:getTemplateOutput(obj))
:wikitext(self.options.after)
end
end
end
end
Line 557: Line 550:
end
end
if self.options.output == 'nowiki+' then
if self.options.output == 'nowiki+' then
line[#line + 1] = self.options.before or ""
line[#line + 1] = self:getTemplateOutput(obj)
line[#line + 1] = self:getTemplateOutput(obj)
line[#line + 1] = self.options.after or ""
line[#line + 1] = '<pre style="white-space: pre-wrap;">'
line[#line + 1] = '<pre style="white-space: pre-wrap;">'
line[#line + 1] = mw.text.nowiki(self.options.before or "")
line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
line[#line + 1] = mw.text.nowiki(self.options.after or "")
line[#line + 1] = '</pre>'
line[#line + 1] = '</pre>'
elseif self.options.output == 'nowiki' then
elseif self.options.output == 'nowiki' then
line[#line + 1] = mw.text.nowiki(self.options.before or "")
line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
line[#line + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
line[#line + 1] = mw.text.nowiki(self.options.after or "")
else
else
line[#line + 1] = self.options.before or ""
line[#line + 1] = self:getTemplateOutput(obj)
line[#line + 1] = self:getTemplateOutput(obj)
line[#line + 1] = self.options.after or ""
end
end
ret[#ret + 1] = table.concat(line)
ret[#ret + 1] = table.concat(line)
Line 634: Line 635:
end
end
end
end


return tostring(root)
return tostring(root)
Line 650: Line 650:
end
end
if self.options.output == 'nowiki+' then
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>'
ret[#ret + 1] = (self.options.before or "") ..
self:getTemplateOutput(obj) ..
(self.options.after or "") ..
'<pre style="white-space: pre-wrap;">' ..
mw.text.nowiki(self.options.before or "") ..
mw.text.nowiki(self:getTemplateOutput(obj)) ..
mw.text.nowiki(self.options.after or "") .. '</pre>'
elseif self.options.output == 'nowiki' then
elseif self.options.output == 'nowiki' then
ret[#ret + 1] = mw.text.nowiki(self:getTemplateOutput(obj))
ret[#ret + 1] = mw.text.nowiki(self.options.before or "") ..
mw.text.nowiki(self:getTemplateOutput(obj)) ..
mw.text.nowiki(self.options.after or "")
else
else
ret[#ret + 1] = self:getTemplateOutput(obj)
ret[#ret + 1] = (self.options.before or "") ..
self:getTemplateOutput(obj) ..
(self.options.after or "")
end
end
end
end