Unverified 提交 c628a91c authored 作者: Noel Grandin's avatar Noel Grandin 提交者: GitHub

Merge pull request #857 from katzyn/tests

Do not write each SQL error multiple times in TestScript
......@@ -464,6 +464,17 @@ public abstract class TestBase {
throw new AssertionError(string);
}
/**
* Log an error message.
*
* @param s the message
*/
public static void logErrorMessage(String s) {
System.out.flush();
System.err.println("ERROR: " + s + "------------------------------");
logThrowable(s, null);
}
/**
* Log an error message.
*
......@@ -478,6 +489,10 @@ public abstract class TestBase {
System.err.println("ERROR: " + s + " " + e.toString()
+ " ------------------------------");
e.printStackTrace();
logThrowable(null, e);
}
private static void logThrowable(String s, Throwable e) {
// synchronize on this class, because file locks are only visible to
// other JVMs
synchronized (TestBase.class) {
......@@ -494,9 +509,14 @@ public abstract class TestBase {
}
// append
FileWriter fw = new FileWriter("error.txt", true);
PrintWriter pw = new PrintWriter(fw);
e.printStackTrace(pw);
pw.close();
if (s != null) {
fw.write(s);
}
if (e != null) {
PrintWriter pw = new PrintWriter(fw);
e.printStackTrace(pw);
pw.close();
}
fw.close();
// unlock
lock.release();
......
......@@ -41,6 +41,7 @@ public class TestScript extends TestBase {
private boolean reconnectOften;
private Connection conn;
private Statement stat;
private String fileName;
private LineNumberReader in;
private int outputLineNo;
private PrintStream out;
......@@ -155,6 +156,7 @@ public class TestScript extends TestBase {
// we processed.
conn = null;
stat = null;
fileName = null;
in = null;
outputLineNo = 0;
out = null;
......@@ -172,7 +174,7 @@ public class TestScript extends TestBase {
conn.close();
out.close();
if (errors.length() > 0) {
throw new Exception("errors:\n" + errors.toString());
throw new Exception("errors in " + scriptFileName + " found");
}
// new File(outFile).delete();
}
......@@ -200,6 +202,7 @@ public class TestScript extends TestBase {
if (is == null) {
throw new IOException("could not find " + inFile);
}
fileName = inFile;
in = new LineNumberReader(new InputStreamReader(is, "Cp1252"));
StringBuilder buff = new StringBuilder();
while (true) {
......@@ -435,17 +438,14 @@ public class TestScript extends TestBase {
if (reconnectOften && sql.toUpperCase().startsWith("EXPLAIN")) {
return;
}
errors.append("line: ");
errors.append(outputLineNo);
errors.append("\n" + "exp: ");
errors.append(compare);
errors.append("\n" + "got: ");
errors.append(s);
errors.append("\n");
errors.append(fileName).append('\n');
errors.append("line: ").append(outputLineNo).append('\n');
errors.append("exp: ").append(compare).append('\n');
errors.append("got: ").append(s).append('\n');
if (e != null) {
TestBase.logError("script", e);
}
TestBase.logError(errors.toString(), null);
TestBase.logErrorMessage(errors.toString());
if (failFast) {
conn.close();
System.exit(1);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论