use of org.jboss.fuse.patch.management.Patch in project fuse-karaf by jboss-fuse.
the class GitConflictResolutionIT method cherryPickConflict.
@Test
public void cherryPickConflict() throws Exception {
prepareChanges2();
RevWalk rw = new RevWalk(git.getRepository());
git.checkout().setName("custom").setCreateBranch(false).call();
ObjectId commit = git.getRepository().resolve("patched");
CherryPickResult result = git.cherryPick().include(commit).call();
RevCommit cMaster = rw.parseCommit(git.getRepository().resolve("master"));
RevCommit cCustom = rw.parseCommit(git.getRepository().resolve("custom"));
RevCommit cPatched = rw.parseCommit(git.getRepository().resolve("patched"));
assertThat(result.getStatus(), equalTo(CherryPickResult.CherryPickStatus.CONFLICTING));
Map<String, IndexDiff.StageState> conflicts = git.status().call().getConflictingStageState();
assertThat(conflicts.size(), equalTo(2));
assertThat(conflicts.get("etc/org.ops4j.pax.logging.cfg"), equalTo(IndexDiff.StageState.BOTH_MODIFIED));
assertThat(conflicts.get("etc/file.properties"), equalTo(IndexDiff.StageState.BOTH_MODIFIED));
new GitPatchManagementServiceImpl().handleCherryPickConflict(null, git, result, git.getRepository().parseCommit(commit), true, PatchKind.NON_ROLLUP, "x", false, false);
RevCommit cMerged = git.commit().setMessage("resolved").call();
// we have 4 commits (7349224 is a custom change that's conflicting with "patched" branch):
/*
* 92a9ad8 - (HEAD -> custom) resolved
* 7349224 - custom etc/org.ops4j.pax.logging.cfg
| * 5777547 - (patched) patched etc/org.ops4j.pax.logging.cfg
|/
* 306f328 - (master) original etc/org.ops4j.pax.logging.cfg
*/
FileWriter writer = new FileWriter("target/report.html");
PatchData pd = new PatchData("my-patch-id2");
PatchResult patchResult = PatchResult.load(pd, getClass().getResourceAsStream("/conflicts/example1/fuse-karaf-7.0.0.fuse-000160.patch.result"));
DiffUtils.generateDiffReport(new Patch(pd, null), patchResult, git, new HashSet<>(), cMaster, cCustom, cPatched, cMerged, writer);
writer.close();
}
use of org.jboss.fuse.patch.management.Patch in project fuse-karaf by jboss-fuse.
the class PatchServiceImpl method checkConsistency.
/**
* Check if the set of patches mixes P and R patches. We can install several {@link PatchKind#NON_ROLLUP}
* patches at once, but only one {@link PatchKind#ROLLUP} patch.
* @param patches
* @return kind of patches in the set
*/
private PatchKind checkConsistency(Collection<Patch> patches) throws PatchException {
boolean hasP = false;
boolean hasR = false;
for (Patch patch : patches) {
if (patch.getPatchData().isRollupPatch()) {
if (hasR) {
throw new PatchException("Can't install more than one rollup patch at once");
}
hasR = true;
} else {
hasP = true;
}
}
if (hasR && hasP) {
throw new PatchException("Can't install both rollup and non-rollup patches in single run");
}
return hasR ? PatchKind.ROLLUP : PatchKind.NON_ROLLUP;
}
use of org.jboss.fuse.patch.management.Patch in project fuse-karaf by jboss-fuse.
the class PatchServiceImplTest method testCheckPrerequisitesMissing.
@Test
public void testCheckPrerequisitesMissing() throws IOException {
PatchServiceImpl service = createMockServiceImpl(getDirectoryForResource("prereq/patch1.patch"));
Patch patch = service.getPatch("patch1");
assertNotNull(patch);
try {
service.checkPrerequisites(patch);
fail("Patch will missing prerequisites should not pass check");
} catch (PatchException e) {
assertTrue(e.getMessage().toLowerCase().contains("required patch 'prereq1' is missing"));
}
}
use of org.jboss.fuse.patch.management.Patch in project fuse-karaf by jboss-fuse.
the class PatchServiceImplTest method testCheckPrerequisitesSatisfied.
@Test
public void testCheckPrerequisitesSatisfied() throws IOException {
PatchServiceImpl service = createMockServiceImpl(getDirectoryForResource("prereq/patch3.patch"));
Patch patch = service.getPatch("patch3");
assertNotNull(patch);
// this should not throw a PatchException
service.checkPrerequisites(patch);
}
use of org.jboss.fuse.patch.management.Patch in project fuse-karaf by jboss-fuse.
the class AddCommand method doExecute.
@Override
protected void doExecute(PatchService service) throws Exception {
Iterable<Patch> patches = service.download(new URL(url));
display(patches, bundles);
}
Aggregations