Skip to content

Commit

Permalink
Add TextReporterQuiet, a workaround for CI systems (#35)
Browse files Browse the repository at this point in the history
* Add TextReporterQuiet, untested

* Fix incorrect branch in patch

* Fix class name
  • Loading branch information
LPGhatguy committed Jan 14, 2019
1 parent 6e9157d commit b07bc59
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 0 deletions.
97 changes: 97 additions & 0 deletions lib/Reporters/TextReporterQuiet.lua
@@ -0,0 +1,97 @@
--[[
Copy of TextReporter that doesn't output successful tests.
This should be temporary, it's just a workaround to make CI environments
happy in the short-term.
]]

local TestService = game:GetService("TestService")

local TestEnum = require(script.Parent.Parent.TestEnum)

local INDENT = (" "):rep(3)
local STATUS_SYMBOLS = {
[TestEnum.TestStatus.Success] = "+",
[TestEnum.TestStatus.Failure] = "-",
[TestEnum.TestStatus.Skipped] = "~"
}
local UNKNOWN_STATUS_SYMBOL = "?"

local TextReporterQuiet = {}

local function reportNode(node, buffer, level)
buffer = buffer or {}
level = level or 0

if node.status == TestEnum.TestStatus.Skipped then
return buffer
end

local line

if node.status ~= TestEnum.TestStatus.Success then
local symbol = STATUS_SYMBOLS[node.status] or UNKNOWN_STATUS_SYMBOL

line = ("%s[%s] %s"):format(
INDENT:rep(level),
symbol,
node.planNode.phrase
)
end

table.insert(buffer, line)

for _, child in ipairs(node.children) do
reportNode(child, buffer, level + 1)
end

return buffer
end

local function reportRoot(node)
local buffer = {}

for _, child in ipairs(node.children) do
reportNode(child, buffer, 0)
end

return buffer
end

local function report(root)
local buffer = reportRoot(root)

return table.concat(buffer, "\n")
end

function TextReporterQuiet.report(results)
local resultBuffer = {
"Test results:",
report(results),
("%d passed, %d failed, %d skipped"):format(
results.successCount,
results.failureCount,
results.skippedCount
)
}

print(table.concat(resultBuffer, "\n"))

if results.failureCount > 0 then
print(("%d test nodes reported failures."):format(results.failureCount))
end

if #results.errors > 0 then
print("Errors reported by tests:")
print("")

for _, message in ipairs(results.errors) do
TestService:Error(message)

-- Insert a blank line after each error
print("")
end
end
end

return TextReporterQuiet
2 changes: 2 additions & 0 deletions lib/init.lua
Expand Up @@ -8,6 +8,7 @@ local TestResults = require(script.TestResults)
local TestRunner = require(script.TestRunner)
local TestSession = require(script.TestSession)
local TextReporter = require(script.Reporters.TextReporter)
local TextReporterQuiet = require(script.Reporters.TextReporterQuiet)
local TeamCityReporter = require(script.Reporters.TeamCityReporter)

local function run(testRoot, callback)
Expand All @@ -33,6 +34,7 @@ local TestEZ = {

Reporters = {
TextReporter = TextReporter,
TextReporterQuiet = TextReporterQuiet,
TeamCityReporter = TeamCityReporter,
},
}
Expand Down

0 comments on commit b07bc59

Please sign in to comment.