Diferencia entre revisiones de «Módulo:QuickTest»

De Familia Sanchez Arjona
Saltar a: navegación, buscar
m (Lua -> Scribunto)
m (simplified)
Línea 3: Línea 3:
 
local p = {}
 
local p = {}
  
function p.run(frame)
+
function p.run(titleCurrentPage)
local title = frame:getParent():getTitle()
+
local title = titleCurrentPage
 
local titlesplit = mw.text.split(title, '/', true)
 
local titlesplit = mw.text.split(title, '/', true)
 
if titlesplit[1] ~= 'Module:' then return '' end
 
if titlesplit[1] ~= 'Module:' then return '' end
Línea 16: Línea 16:
 
local testFunction = m['runTests']
 
local testFunction = m['runTests']
 
local testFunctionType = type(testFunction)
 
local testFunctionType = type(testFunction)
if ( testFunctionType ~= 'function' and not ( testFunctionType == 'table' and getmetatable(testFunction).__call ) ) then
+
if ( testFunctionType ~= 'function' or not ( testFunctionType == 'table' and getmetatable(testFunction).__call ) ) then
 
return '', title
 
return '', title
 
end
 
end
Línea 29: Línea 29:
 
end
 
end
  
function cat(title, cat, frame)
+
function cat(title, titleCurrentPage, cat)
if frame:getParent():getTitle() == title then return cat end
+
if titleCurrentPage == title then return cat end
 
return ''
 
return ''
 
end
 
end
  
 
function p.testModule(frame)
 
function p.testModule(frame)
local testResult, title = p.run(frame)
+
local titleCurrentPage = frame and frame:getParent():getTitle() or 'Module:File'
 +
local testResult, title = p.run(titleCurrentPage)
 
if testResult == true then
 
if testResult == true then
return '[[File:Accept.png|16px|alt=Ok]]: Tests passed. C.f. [[COM:LUA/T#auto]]' .. cat(title, '[[Category:Scribunto modules with tests passed]]', frame)
+
return '[[File:Accept.png|16px|alt=Ok]]: Tests passed. C.f. [[COM:LUA/T#auto]]' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with tests passed]]')
 
elseif testResult == false then
 
elseif testResult == false then
return '[[File:Bug error.png|16px|alt=Bug]]: Tests failed. Run <code>=p.runTests()</code> in the LUA console on [[' .. title .. ']] for more details.' .. cat(title, '[[Category:Scribunto modules with tests failed]]', frame)
+
return '[[File:Bug error.png|16px|alt=Bug]]: Tests failed. Run <code>=p.runTests()</code> in the LUA console on [[' .. title .. ']] for more details.' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with tests failed]]')
 
elseif testResult == 'error' then
 
elseif testResult == 'error' then
return '[[File:Error.png|16px|alt=Error]]: Error executing tests.' .. cat(title, '[[Category:Scribunto modules with errors executing tests]]', frame)
+
return '[[File:Error.png|16px|alt=Error]]: Error executing tests.' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with errors executing tests]]')
 
else
 
else
return testResult .. cat(title, '[[Category:Scribunto modules without test API]]', frame)
+
return testResult .. cat(title, titleCurrentPage, '[[Category:Scribunto modules without test API]]')
 
end
 
end
 
end
 
end
  
 
return p
 
return p

Revisión del 18:08 20 dic 2013

La documentación para este módulo puede ser creada en Módulo:QuickTest/doc

-- Tests whether a module has a test API, and if so, runs these tests

local p = {}

function p.run(titleCurrentPage)
	local title = titleCurrentPage
	local titlesplit = mw.text.split(title, '/', true)
	if titlesplit[1] ~= 'Module:' then return '' end
	if titlesplit[#titlesplit] == 'doc' then
		table.remove(titlesplit)
	end
	title = table.concat(titlesplit, '/')
	
	-- Load the module
	local m = require(title)
	local testFunction = m['runTests']
	local testFunctionType = type(testFunction)
	if ( testFunctionType ~= 'function' or not ( testFunctionType == 'table' and getmetatable(testFunction).__call ) ) then
		return '', title
	end
	
	-- Execute the test function
	local ok, result = pcall(testFunction)
	if ok then
		return result, title
	else
		return 'error', title
	end
end

function cat(title, titleCurrentPage, cat)
	if titleCurrentPage == title then return cat end
	return ''
end

function p.testModule(frame)
	local titleCurrentPage = frame and frame:getParent():getTitle() or 'Module:File'
	local testResult, title = p.run(titleCurrentPage)
	if testResult == true then
		return '[[File:Accept.png|16px|alt=Ok]]: Tests passed. C.f. [[COM:LUA/T#auto]]' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with tests passed]]')
	elseif testResult == false then
		return '[[File:Bug error.png|16px|alt=Bug]]: Tests failed. Run <code>=p.runTests()</code> in the LUA console on [[' .. title .. ']] for more details.' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with tests failed]]')
	elseif testResult == 'error' then
		return '[[File:Error.png|16px|alt=Error]]: Error executing tests.' .. cat(title, titleCurrentPage, '[[Category:Scribunto modules with errors executing tests]]')
	else
		return testResult .. cat(title, titleCurrentPage, '[[Category:Scribunto modules without test API]]')
	end
end

return p