Better error reporting.

This commit is contained in:
Martin Haye 2016-03-27 08:18:32 -07:00
parent 3a1ad7a0c0
commit 510385ccd3

View File

@ -921,7 +921,7 @@ class PackPartitions
mapEl.scripts ? mapEl.scripts[0] : [], mapEl.scripts ? mapEl.scripts[0] : [],
totalWidth, totalHeight, xRange, yRange) totalWidth, totalHeight, xRange, yRange)
replaceIfDiff(scriptDir + name + ".pla") replaceIfDiff(scriptDir + name + ".pla")
compileModule(name, scriptDir, false) // false=not verbose compileModule(name, "src/mapScripts/", false) // false=not verbose
return [num, module.locationsWithTriggers] return [num, module.locationsWithTriggers]
} }
@ -1291,8 +1291,10 @@ class PackPartitions
{ {
def prevStdin = System.in def prevStdin = System.in
def prevStdout = System.out def prevStdout = System.out
def prevStderr = System.err
def prevUserDir = System.getProperty("user.dir") def prevUserDir = System.getProperty("user.dir")
def result def result
def errBuf = new ByteArrayOutputStream()
try try
{ {
System.setProperty("user.dir", new File(inDir).getAbsolutePath()) System.setProperty("user.dir", new File(inDir).getAbsolutePath())
@ -1301,6 +1303,7 @@ class PackPartitions
System.in = inStream System.in = inStream
outFile.withOutputStream { outStream -> outFile.withOutputStream { outStream ->
System.out = new PrintStream(outStream) System.out = new PrintStream(outStream)
System.err = new PrintStream(errBuf)
result = programClass.newInstance().run(args) result = programClass.newInstance().run(args)
} }
} }
@ -1311,10 +1314,15 @@ class PackPartitions
} finally { } finally {
System.in = prevStdin System.in = prevStdin
System.out = prevStdout System.out = prevStdout
System.err = prevStderr
System.setProperty("user.dir", prevUserDir) System.setProperty("user.dir", prevUserDir)
} }
if (result != 0) if (result != 0) {
throw new Exception("$programName failed with code $result") def errStr = errBuf.toString("UTF-8")
if (errStr.length() > 0)
errStr = "\nError output:\n" + errStr + "-----\n"
throw new Exception("$programName (cd $inDir && ${args.join(' ')}) < $inFile > $outFile failed with code $result." + errStr)
}
} }
/** /**