From 465dd990740827b9952373343c1d09c85bd65fd5 Mon Sep 17 00:00:00 2001 From: Oliver Becker Date: Sat, 9 Nov 2013 17:20:29 +0100 Subject: [PATCH] added colored output, added gradle property 'test' to execute a specific test only (use for example: -Ptest=urls) --- build.gradle | 104 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 43 deletions(-) diff --git a/build.gradle b/build.gradle index 241a80f1..3b8d9481 100644 --- a/build.gradle +++ b/build.gradle @@ -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 } }