Program: 82907
Project: 82907
Buggy source:
/** 
 * Runs a particular test case.
 */
private void runTestImpl(String moduleName,TestCase testCase,TestResult testResult) throws UnableToCompleteException {
  String syntheticModuleName=moduleName + "String_Node_Str";
  boolean sameTest=syntheticModuleName.equals(currentModuleName);
  if (sameTest && lastLaunchFailed) {
    throw new UnableToCompleteException();
  }
  currentModuleName=syntheticModuleName;
  if (!sameTest) {
    ModuleDef synthetic=ModuleDefLoader.createSyntheticModule(getTopLogger(),currentModuleName,new String[]{moduleName,"String_Node_Str"},true);
    synthetic.clearEntryPoints();
    synthetic.addEntryPointTypeName(GWTRunner.class.getName());
    Property moduleNameProp=synthetic.getProperties().create("String_Node_Str");
    moduleNameProp.addKnownValue(moduleName);
    moduleNameProp.setActiveValue(moduleName);
  }
  lastLaunchFailed=false;
  messageQueue.setNextTestName(currentModuleName,testCase.getClass().getName(),testCase.getName());
  try {
    runStyle.maybeLaunchModule(currentModuleName,!sameTest);
  }
 catch (  UnableToCompleteException e) {
    lastLaunchFailed=true;
    testResult.addError(testCase,e);
    return;
  }
  try {
    testBeginTimeout=System.currentTimeMillis() + TEST_BEGIN_TIMEOUT_MILLIS;
    pumpEventLoop();
  }
 catch (  TimeoutException e) {
    lastLaunchFailed=true;
    testResult.addError(testCase,e);
    return;
  }
  List<TestResults> results=messageQueue.getResults(currentModuleName);
  if (results == null) {
    return;
  }
  boolean parallelTesting=numClients > 1;
  for (  TestResults result : results) {
    Trial firstTrial=result.getTrials().get(0);
    Throwable exception=firstTrial.getException();
    if (parallelTesting && exception != null) {
      String msg="String_Node_Str" + result.getHost() + "String_Node_Str"+ result.getAgent();
      if (exception instanceof AssertionFailedError) {
        AssertionFailedError newException=new AssertionFailedError(msg + "String_Node_Str" + exception.getMessage());
        newException.setStackTrace(exception.getStackTrace());
        exception=newException;
      }
 else {
        exception=new RuntimeException(msg,exception);
      }
    }
    if (exception instanceof AssertionFailedError) {
      testResult.addFailure(testCase,(AssertionFailedError)exception);
    }
 else     if (exception != null) {
      testResult.addError(testCase,exception);
    }
    if (testCase instanceof Benchmark) {
      report.addBenchmarkResults(testCase,result);
    }
  }
}

Fixed version (ground truth):
/** 
 * Runs a particular test case.
 */
private void runTestImpl(String moduleName,TestCase testCase,TestResult testResult) throws UnableToCompleteException {
  String syntheticModuleName=moduleName + "String_Node_Str";
  boolean sameTest=syntheticModuleName.equals(currentModuleName);
  if (sameTest && lastLaunchFailed) {
    throw new UnableToCompleteException();
  }
  currentModuleName=syntheticModuleName;
  if (!sameTest) {
    ModuleDef synthetic=ModuleDefLoader.createSyntheticModule(getTopLogger(),currentModuleName,new String[]{moduleName,"String_Node_Str"},true);
    synthetic.clearEntryPoints();
    synthetic.addEntryPointTypeName(GWTRunner.class.getName());
    Property moduleNameProp=synthetic.getProperties().create("String_Node_Str");
    moduleNameProp.addKnownValue(moduleName);
    moduleNameProp.setActiveValue(moduleName);
  }
  lastLaunchFailed=false;
  messageQueue.setNextTestName(currentModuleName,testCase.getClass().getName(),testCase.getName());
  try {
    runStyle.maybeLaunchModule(currentModuleName,!sameTest);
  }
 catch (  UnableToCompleteException e) {
    lastLaunchFailed=true;
    testResult.addError(testCase,new JUnitFatalLaunchException(e));
    return;
  }
  try {
    testBeginTimeout=System.currentTimeMillis() + TEST_BEGIN_TIMEOUT_MILLIS;
    pumpEventLoop();
  }
 catch (  TimeoutException e) {
    lastLaunchFailed=true;
    testResult.addError(testCase,e);
    return;
  }
  List<TestResults> results=messageQueue.getResults(currentModuleName);
  if (results == null) {
    return;
  }
  boolean parallelTesting=numClients > 1;
  for (  TestResults result : results) {
    Trial firstTrial=result.getTrials().get(0);
    Throwable exception=firstTrial.getException();
    if (parallelTesting && exception != null) {
      String msg="String_Node_Str" + result.getHost() + "String_Node_Str"+ result.getAgent();
      if (exception instanceof AssertionFailedError) {
        AssertionFailedError newException=new AssertionFailedError(msg + "String_Node_Str" + exception.getMessage());
        newException.setStackTrace(exception.getStackTrace());
        exception=newException;
      }
 else {
        exception=new RuntimeException(msg,exception);
      }
    }
    if (exception instanceof AssertionFailedError) {
      testResult.addFailure(testCase,(AssertionFailedError)exception);
    }
 else     if (exception != null) {
      if (exception instanceof JUnitFatalLaunchException) {
        lastLaunchFailed=true;
      }
      testResult.addError(testCase,exception);
    }
    if (testCase instanceof Benchmark) {
      report.addBenchmarkResults(testCase,result);
    }
  }
}