1
0

CI: API test defaults to failure, unless explicitly succeeded.

This fixes problems with the CI build succeeding when the API description has a syntax error in it and the APIDump  plugin won't even load.
This commit is contained in:
Mattes D 2016-10-25 18:49:42 +02:00
parent 824f5dbbd6
commit 5552feafca
2 changed files with 26 additions and 22 deletions

View File

@ -19,6 +19,7 @@ make -j 2 test ARGS="-V";
echo "Testing..."
cd Server/;
touch apiCheckFailed.flag
if [ "$TRAVIS_CUBERITE_BUILD_TYPE" != "COVERAGE" ]; then
$CUBERITE_PATH << EOF
load APIDump
@ -36,4 +37,8 @@ EOF
cat ./DuplicateDocs.txt
exit 1
fi
if [ -f ./apiCheckFailed.flag ]; then
echo "ERROR: API check has failed with an unknown error"
exit 1
fi
fi

View File

@ -26,29 +26,25 @@ local function LoadAPIFiles(a_Folder, a_DstTable)
local FileName = Folder .. fnam;
-- We only want .lua files from the folder:
if (cFile:IsFile(FileName) and fnam:match(".*%.lua$")) then
local TablesFn, Err = loadfile(FileName);
if (type(TablesFn) ~= "function") then
LOGWARNING("Cannot load API descriptions from " .. FileName .. ", Lua error '" .. Err .. "'.");
else
local Tables = TablesFn();
if (type(Tables) ~= "table") then
LOGWARNING("Cannot load API descriptions from " .. FileName .. ", returned object is not a table (" .. type(Tables) .. ").");
break
local TablesFn = assert(loadfile(FileName))
local Tables = TablesFn()
if (type(Tables) ~= "table") then
error("Cannot load API descriptions from " .. FileName .. ", returned object is not a table (" .. type(Tables) .. ").")
break
end
for k, cls in pairs(Tables) do
if (a_DstTable[k]) then
-- The class is documented in two files, warn and store into a file (so that CIs can mark build as failure):
LOGWARNING(string.format(
"APIDump warning: class %s is documented at two places, the documentation in file %s will overwrite the previously loaded one!",
k, FileName
))
local f = io.open("DuplicateDocs.txt", "a")
f:write(k, "\t", FileName)
f:close()
end
for k, cls in pairs(Tables) do
if (a_DstTable[k]) then
-- The class is documented in two files, warn and store into a file (so that CIs can mark build as failure):
LOGWARNING(string.format(
"APIDump warning: class %s is documented at two places, the documentation in file %s will overwrite the previously loaded one!",
k, FileName
))
local f = io.open("DuplicateDocs.txt", "a")
f:write(k, "\t", FileName)
f:close()
end
a_DstTable[k] = cls;
end
end -- if (TablesFn)
a_DstTable[k] = cls
end
end -- if (is lua file)
end -- for fnam - Folder[]
end
@ -2040,6 +2036,9 @@ local function HandleCmdApiCheck(a_Split, a_EntireCmd)
return true, "Found new undocumented symbols:\n" .. table.concat(newUndocumented, "\n")
end
-- The check completed successfully, remove the "test failed" flag from the filesystem:
cFile:DeleteFile("apiCheckFailed.flag")
return true, "API check completed successfully"
end