blob: 904f8433ff639bd1874e8f559dee074296d68a85 [file] [log] [blame]
--------------------------------------------------------------------------------
-- Copyright (c) 2014 Sierra Wireless and others.
-- All rights reserved. This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License v1.0
-- which accompanies this distribution, and is available at
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
-- Sierra Wireless - initial API and implementation
--------------------------------------------------------------------------------
local diff = require 'diff'
local formatter = require 'formatter'
local string = require 'string'
local M = {}
function M.test(luainputpath, luareferencepath)
-- Load provided source
local luafile, errormessage = io.open(luainputpath, 'r')
assert(luafile, string.format('Unable to read from %s.\n%s',
luainputpath, errormessage or '')
)
local luasource = luafile:read('*a')
luafile:close()
-- Extract filename
local lastseparator = luainputpath:reverse():find('[/\\]') - 1
local filename = luainputpath:sub(-lastseparator)
-- Choose delimiter from file name
local delimiters = {
["mac.lua"] = '\r',
["unix.lua"] = '\n',
["windows.lua"] = '\r\n'
}
local delimiter = delimiters[ filename ]
assert(delimiter, string.format(
'Could not determine line ending to check for %s.', filename))
-- Format code
local formattedCode = formatter.indentcode(luasource, delimiter, true, ' ')
assert(formattedCode,
string.format('Unable to format %s.', luainputpath)
)
-- Load provided reference
local referenceFile, errormessage = io.open(luareferencepath)
assert(referenceFile, string.format('Unable to read reference from %s.\n%s',
luareferencepath, errormessage or '')
)
local referenceCode = referenceFile:read('*a')
if referenceCode ~= formattedCode then
return nil, string.format('Formatting Error:\%s',
diff(referenceCode, formattedCode):format_as_text())
end
return true
end
return M