Browse Source

javarun attributes for interpreting error/output streams as errors, used only when forking

tags/V1_1_0
wisberg 21 years ago
parent
commit
46323d9c1d

+ 48
- 4
testing/src/org/aspectj/testing/harness/bridge/JavaRun.java View File

@@ -143,6 +143,13 @@ public class JavaRun implements IAjcRun {
ClassLoader loader = null;
URL[] urls = FileUtil.getFileURLs(libs);
boolean completedNormally = false;
if (spec.outStreamIsError) {
// XXX implement same-vm stream snooping
// strictly speaking, also warn for errStream, but
// it is on by default (in same-VM, Tester controls;
// in other-vm stream-snooping controls)
MessageUtil.info(status, "unimplemented: stream-based error implemented in same vm");
}
Class targetClass = null;
try {
loader = new TestClassLoader(urls, dirs);
@@ -281,7 +288,10 @@ public class JavaRun implements IAjcRun {
commandLabel.append(Arrays.asList(controller.getCommand()).toString());
final ByteArrayOutputStream errSnoop
= new ByteArrayOutputStream();
final ByteArrayOutputStream outSnoop
= new ByteArrayOutputStream();
controller.setErrSnoop(errSnoop);
controller.setOutSnoop(outSnoop);
controller.start();
// give it 3 minutes...
long maxTime = System.currentTimeMillis() + 3 * 60 * 1000;
@@ -305,10 +315,24 @@ public class JavaRun implements IAjcRun {
}
}
if (0 < errSnoop.size()) {
MessageUtil.error(handler, errSnoop.toString());
if (!doneFlag.failed) {
doneFlag.failed = true;
}
if (spec.errStreamIsError) {
MessageUtil.error(handler, errSnoop.toString());
if (!doneFlag.failed) {
doneFlag.failed = true;
}
} else {
MessageUtil.info(handler, "Error stream: " + errSnoop.toString());
}
}
if (0 < outSnoop.size()) {
if (spec.outStreamIsError) {
MessageUtil.error(handler, outSnoop.toString());
if (!doneFlag.failed) {
doneFlag.failed = true;
}
} else {
MessageUtil.info(handler, "Output stream: " + outSnoop.toString());
}
}
if (doneFlag.failed) {
MessageUtil.info(handler, "other-vm command-line: " + commandLabel);
@@ -409,6 +433,12 @@ public class JavaRun implements IAjcRun {
/** if true, skip Tester setup (e.g., if Tester n/a) */
protected boolean skipTester;
/** if true, report text to output stream as error */
protected boolean outStreamIsError;

/** if true, report text to error stream as error */
protected boolean errStreamIsError = true;
public Spec() {
super(XMLNAME);
setXMLNames(NAMES);
@@ -428,6 +458,14 @@ public class JavaRun implements IAjcRun {
this.className = className;
}
public void setErrStreamIsError(boolean errStreamIsError) {
this.errStreamIsError = errStreamIsError;
}

public void setOutStreamIsError(boolean outStreamIsError) {
this.outStreamIsError = outStreamIsError;
}

/** @param skip if true, then do not set up Tester */
public void setSkipTester(boolean skip) {
skipTester = skip;
@@ -467,6 +505,12 @@ public class JavaRun implements IAjcRun {
if (null != javaVersion) {
out.printAttribute("vm", javaVersion);
}
if (outStreamIsError) {
out.printAttribute("outStreamIsError", "true");
}
if (!errStreamIsError) { // defaults to true
out.printAttribute("errStreamIsError", "false");
}
super.writeAttributes(out);
out.endAttributes();
if (!LangUtil.isEmpty(dirChanges)) {

+ 3
- 1
testing/src/org/aspectj/testing/xml/AjcSpecXmlReader.java View File

@@ -395,7 +395,9 @@ public class AjcSpecXmlReader {
jrunspec.addMessage((IMessage) null);
// input s.b. interpretable by Boolean.valueOf(String)
jrunspec.setSkipTester(true);

jrunspec.setErrStreamIsError(true);
jrunspec.setOutStreamIsError(true);
DirChanges.Spec dcspec = new DirChanges.Spec();
dcspec.setAdded((String) null);
dcspec.setRemoved((String) null);

+ 2
- 0
testing/testsrc/org/aspectj/testing/harness/bridge/AjcSpecTest.java View File

@@ -219,6 +219,8 @@ public class AjcSpecTest extends TestCase {
assertEquals(l.className, r.className);
assertEquals(l.javaVersion, r.javaVersion);
assertEquals(l.skipTester, r.skipTester);
assertEquals(l.outStreamIsError, r.outStreamIsError);
assertEquals(l.errStreamIsError, r.errStreamIsError);
} else if (c == IncCompilerRun.class) {
IncCompilerRun.Spec l = ((IncCompilerRun) lhs).spec;
IncCompilerRun.Spec r = ((IncCompilerRun) rhs).spec;

+ 2
- 0
tests/ajcTestSuite.dtd View File

@@ -33,6 +33,8 @@
<!ATTLIST run skipTester CDATA #IMPLIED >
<!ATTLIST run vm CDATA #IMPLIED >
<!ATTLIST run options CDATA #IMPLIED >
<!ATTLIST run errStreamIsError CDATA #IMPLIED >
<!ATTLIST run outStreamIsError CDATA #IMPLIED >
<!ELEMENT file (#PCDATA)>
<!ATTLIST file path CDATA #IMPLIED >

Loading…
Cancel
Save