@Test(timeout = 10000)
public void testTransactionTrackChangesManualTransaction() throws Exception
{
test.clearScreen();
DirectoryResource tempDir = factory.create(OperatingSystemUtils.createTempDir()).reify(DirectoryResource.class);
tempDir.deleteOnExit();
test.getShell().setCurrentResource(tempDir);
Assert.assertFalse(test.execute("track-changes", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
Assert.assertFalse(test.execute("transaction-start", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
Assert.assertFalse(test.execute("touch foo.txt", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
Assert.assertFalse(test.execute("rm foo.txt", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
test.clearScreen();
Assert.assertFalse(test.execute("transaction-commit", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
test.waitForStdOutValue("Created " + tempDir.getFullyQualifiedName() + File.separator + "foo.txt",
SHELL_TIMEOUT, TimeUnit.SECONDS);
test.waitForStdOutValue("Deleted " + tempDir.getFullyQualifiedName() + File.separator + "foo.txt",
SHELL_TIMEOUT,
TimeUnit.SECONDS);
test.clearScreen();
Assert.assertFalse(test.execute("track-changes", SHELL_TIMEOUT, TimeUnit.SECONDS) instanceof Failed);
test.waitForStdOutValue("Resource change tracking is OFF.", SHELL_TIMEOUT, TimeUnit.SECONDS);
Assert.assertFalse(test.getStdOut().contains(
"Modified " + tempDir.getFullyQualifiedName() + File.separator + "foo.txt"));
Assert.assertFalse(test.getStdOut().contains(
"Deleted " + tempDir.getFullyQualifiedName() + File.separator + "foo.txt"));
}