Program: 151442
Project: 151442
Buggy source:
@Test(timeout=10000) public void testTransactionTrackChangesOff() throws Exception {
  DirectoryResource tempDir=factory.create(OperatingSystemUtils.createTempDir()).reify(DirectoryResource.class);
  tempDir.deleteOnExit();
  final AtomicBoolean flag=new AtomicBoolean(false);
  factory.addTransactionListener(new ResourceTransactionListener(){
    @Override public void transactionStarted(    ResourceTransaction transaction){
      flag.set(true);
    }
    @Override public void transactionRolledBack(    ResourceTransaction transaction){
      flag.set(true);
    }
    @Override public void transactionCommitted(    ResourceTransaction transaction,    Set<ResourceEvent> changeSet){
      flag.set(true);
    }
  }
);
  test.clearScreen();
  test.getShell().setCurrentResource(tempDir);
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  Assert.assertFalse(flag.get());
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str" + tempDir.getFullyQualifiedName() + "String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
  Assert.assertTrue(flag.get());
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
}

Fixed version (ground truth):
@Test(timeout=10000) public void testTransactionTrackChangesOff() throws Exception {
  DirectoryResource tempDir=factory.create(OperatingSystemUtils.createTempDir()).reify(DirectoryResource.class);
  tempDir.deleteOnExit();
  final AtomicBoolean flag=new AtomicBoolean(false);
  factory.addTransactionListener(new ResourceTransactionListener(){
    @Override public void transactionStarted(    ResourceTransaction transaction){
      flag.set(true);
    }
    @Override public void transactionRolledBack(    ResourceTransaction transaction){
      flag.set(true);
    }
    @Override public void transactionCommitted(    ResourceTransaction transaction,    Set<ResourceEvent> changeSet){
      flag.set(true);
    }
  }
);
  test.clearScreen();
  test.getShell().setCurrentResource(tempDir);
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  Assert.assertFalse(flag.get());
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str" + tempDir.getFullyQualifiedName() + File.separator+ "String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
  Assert.assertTrue(flag.get());
  Assert.assertFalse(test.execute("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS) instanceof Failed);
  test.waitForStdOutValue("String_Node_Str",SHELL_TIMEOUT,TimeUnit.SECONDS);
}