added colored output, added gradle property 'test' to execute a specific test only (use for example: -Ptest=urls)

This commit is contained in:
Oliver Becker
2013-11-09 17:20:29 +01:00
parent 4aa040a356
commit 465dd99074

View File

@@ -96,57 +96,75 @@ class RhinoTest extends DefaultTask {
def options = []
def expectErrors = false
def stylize(str, style) {
def styles = [
reset : [0, 0],
bold : [1, 22],
inverse : [7, 27],
underline : [4, 24],
yellow : [33, 39],
green : [32, 39],
red : [31, 39],
grey : [90, 39]
];
return '\033[' + styles[style][0] + 'm' + str +
'\033[' + styles[style][1] + 'm';
}
@TaskAction
def runTest() {
int testSuccesses = 0, testFailures = 0, testErrors = 0
project.file('test/less/' + testDir).eachFileMatch(FileType.FILES, ~/.*\.less/) { lessFile ->
print lessFile
def out = new java.io.ByteArrayOutputStream()
def execOptions = {
main = 'org.mozilla.javascript.tools.shell.Main'
// main = 'org.mozilla.javascript.tools.debugger.Main'
classpath = project.configurations.rhino
args = [project.rhinoTestSrc, lessFile] + options
standardOutput = out
ignoreExitValue = true
}
try {
def exec = project.javaexec(execOptions)
def actual = out.toString().trim()
def actualResult = project.file(lessFile.path.replace('test/less', project.testOut).replace('.less', '.css'))
project.file(actualResult.parent).mkdirs()
actualResult << actual
def expected
if (expectErrors) {
assert exec.exitValue != 0
expected = project.file(lessFile.path.replace('.less', '.txt')).text.trim().
replace('{path}', lessFile.parent + '/').
replace('{pathhref}', '').
replace('{404status}', '')
} else {
assert exec.exitValue == 0
expected = project.file(lessFile.path.replace('.less', '.css').replace('/less/', '/css/')).text.trim()
if (!project.hasProperty('test') || lessFile.name.startsWith(project.test)) {
def out = new java.io.ByteArrayOutputStream()
def execOptions = {
main = 'org.mozilla.javascript.tools.shell.Main'
// main = 'org.mozilla.javascript.tools.debugger.Main'
classpath = project.configurations.rhino
args = [project.rhinoTestSrc, lessFile] + options
standardOutput = out
ignoreExitValue = true
}
assert actual == expected
testSuccesses++
println ' ok'
actualResult.delete()
}
catch (ex) {
println ex
println()
testErrors++;
}
catch (AssertionError ae) {
println ' failed'
// println ae
testFailures++
try {
def exec = project.javaexec(execOptions)
def actual = out.toString().trim()
def actualResult = project.file(lessFile.path.replace('test/less', project.testOut).replace('.less', '.css'))
project.file(actualResult.parent).mkdirs()
actualResult << actual
def expected
if (expectErrors) {
assert exec.exitValue != 0
expected = project.file(lessFile.path.replace('.less', '.txt')).text.trim().
replace('{path}', lessFile.parent + '/').
replace('{pathhref}', '').
replace('{404status}', '')
} else {
assert exec.exitValue == 0
expected = project.file(lessFile.path.replace('.less', '.css').replace('/less/', '/css/')).text.trim()
}
assert actual == expected
testSuccesses++
println stylize(' ok', 'green')
actualResult.delete()
}
catch (ex) {
println ex
println()
testErrors++;
}
catch (AssertionError ae) {
println stylize(' failed', 'red')
// println ae
testFailures++
}
} else {
println stylize(' skipped', 'yellow')
}
}
println testSuccesses + " ok"
println testFailures + " assertion failed"
println testErrors + " errors"
println stylize(testSuccesses + ' ok', 'green')
println stylize(testFailures + ' assertion failed', testFailures == 0 ? 'green' : 'red')
println stylize(testErrors + ' errors', testErrors == 0 ? 'green' : 'red')
// assert testFailures + testErrors == 0
}
}