repo.workingCopy().remove("a");
Changeset p1 = commit();
ConflictResolvingContext ms = repo.workingCopy().merge(p2);
Assert.assertEquals(1, ms.getKeepDeleteConflicts().size());
KeepDeleteConflict keepDeleteConflict = ms.getKeepDeleteConflicts().iterator().next();
Assert.assertEquals(KeepDeleteConflict.State.KEEP, keepDeleteConflict.getState());
Assert.assertEquals("a", keepDeleteConflict.getFilename());
Assert.assertEquals(p2, keepDeleteConflict.getKeepParent());
update(p2);
ms = repo.workingCopy().merge(p1);
Assert.assertEquals(1, ms.getKeepDeleteConflicts().size());
keepDeleteConflict = ms.getKeepDeleteConflicts().iterator().next();
Assert.assertEquals(KeepDeleteConflict.State.KEEP, keepDeleteConflict.getState());
Assert.assertEquals("a", keepDeleteConflict.getFilename());
Assert.assertEquals(p2, keepDeleteConflict.getKeepParent());
File a = getTestRepository().file("a");
Assert.assertTrue(a.exists());
keepDeleteConflict.delete();
Assert.assertFalse(a.exists());
StatusResult status1 = repo.workingCopy().status();
Assert.assertArrayEquals(new String[] { "a" }, status1.getRemoved().toArray());
StatusResult status2 = repo.workingCopy().parent2Status();
Assert.assertTrue(status2.getRemoved().isEmpty());
keepDeleteConflict.keep();
Assert.assertTrue(a.exists());
status1 = repo.workingCopy().status();
Assert.assertTrue(status1.getRemoved().isEmpty());
status2 = repo.workingCopy().parent2Status();
Assert.assertTrue(status2.getRemoved().isEmpty());