use of jetbrains.buildServer.vcs.SVcsModification in project teamcity-rest by JetBrains.
the class ChangeStatusTest method testQueued.
public void testQueued() {
final BuildTypeImpl buildConf = registerBuildType("buildConf1", "project");
VcsRootInstance root1 = prepareSingleVscRoot(buildConf);
SVcsModification m20 = myFixture.addModification(modification().in(root1).version("20").parentVersions("10"));
SQueuedBuild queuedBuild = build().in(buildConf).onModifications(m20).addToQueue();
ChangeStatus status = new ChangeStatus(myFixture.getChangeStatusProvider().getMergedChangeStatus(m20), Fields.ALL_NESTED, getBeanContext(myFixture));
queuedBuild.removeFromQueue(myUser, "comment");
assertEquals(0, (int) status.getFinished());
assertEquals(0, (int) status.getSuccessful());
assertEquals(0, (int) status.getFailed());
assertEquals(0, (int) status.getPendingBuildTypes());
assertEquals(1, (int) status.getQueuedBuildsCount());
}
use of jetbrains.buildServer.vcs.SVcsModification in project teamcity-rest by JetBrains.
the class ChangeStatusTest method testSuccessfulFinished.
public void testSuccessfulFinished() {
final BuildTypeImpl buildConf = registerBuildType("buildConf1", "project");
VcsRootInstance root1 = prepareSingleVscRoot(buildConf);
SVcsModification m20 = myFixture.addModification(modification().in(root1).version("20").parentVersions("10"));
build().in(buildConf).onModifications(m20).finish();
ChangeStatus status = new ChangeStatus(myFixture.getChangeStatusProvider().getMergedChangeStatus(m20), Fields.ALL_NESTED, getBeanContext(myFixture));
assertEquals(1, (int) status.getFinished());
assertEquals(0, (int) status.getRunning());
assertEquals(1, (int) status.getSuccessful());
}
use of jetbrains.buildServer.vcs.SVcsModification in project teamcity-rest by JetBrains.
the class ChangeStatusTest method testFailedRunning.
public void testFailedRunning() {
final BuildTypeImpl buildConf = registerBuildType("buildConf1", "project");
VcsRootInstance root1 = prepareSingleVscRoot(buildConf);
SVcsModification m20 = myFixture.addModification(modification().in(root1).version("20").parentVersions("10"));
RunningBuildEx runningBuildEx = build().in(buildConf).onModifications(m20).run();
ChangeStatus status = new ChangeStatus(myFixture.getChangeStatusProvider().getMergedChangeStatus(m20), Fields.ALL_NESTED, getBeanContext(myFixture));
myFixture.finishBuild(runningBuildEx, true);
assertEquals(0, (int) status.getFinished());
assertEquals(0, (int) status.getSuccessful());
assertEquals(0, (int) status.getFailed());
assertEquals(1, (int) status.getRunning());
}
use of jetbrains.buildServer.vcs.SVcsModification in project teamcity-rest by JetBrains.
the class IssueUsage method getChangesInternal.
public Changes getChangesInternal() {
if (TeamCityProperties.getBooleanOrTrue("rest.beans.issueUsage.useStoredVcsModification")) {
// todo: TeamCity API
final IssueEx issueEx;
issueEx = (IssueEx) myIssue;
if (issueEx != null) {
final SVcsModification relatedModification = (SVcsModification) issueEx.getRelatedModification();
if (relatedModification != null) {
return Changes.fromSVcsModifications(Collections.singletonList(relatedModification), null, myFields.getNestedField("changes", Fields.NONE, Fields.LONG), myBeanContext);
}
}
return null;
} else {
// this is highly inefficient especially when serving /relatedIssues for a build with large number of changes
final List<SVcsModification> relatedModifications = new ArrayList<SVcsModification>();
final List<SVcsModification> vcsModifications = myBuild.getContainingChanges();
for (SVcsModification vcsModification : vcsModifications) {
if (vcsModification.getRelatedIssues().contains(myIssue)) {
relatedModifications.add(vcsModification);
}
}
return relatedModifications.isEmpty() ? null : Changes.fromSVcsModifications(relatedModifications, null, myFields.getNestedField("changes", Fields.NONE, Fields.LONG), myBeanContext);
}
}
use of jetbrains.buildServer.vcs.SVcsModification in project teamcity-rest by JetBrains.
the class ChangeRequest method getChangeFailedTestsTree.
/**
* Experimental, subject to change
* @since 2021.2
*/
@GET
@Path("/{changeLocator}/testsTree")
@Produces({ "application/xml", "application/json" })
@ApiOperation(value = "Get failed tests tree for the matching change.", nickname = "getChangeFailedTestsTree", hidden = true)
public TestScopeTree getChangeFailedTestsTree(@ApiParam(format = LocatorName.CHANGE) @PathParam("changeLocator") String changeLocator, // todo: remove after ui migration
@QueryParam(TestScopeTreeCollector.SUBTREE_ROOT_ID) String subTreeRootId, @QueryParam("treeLocator") String treeLocatorText, @QueryParam("fields") String fields) {
final SVcsModification change = myChangeFinder.getItem(changeLocator).getSVcsModification();
ChangeStatusProvider myStatusProvider = myServiceLocator.getSingletonService(ChangeStatusProvider.class);
ChangeStatus changeStatus = myStatusProvider.getMergedChangeStatus(change);
Stream<BuildPromotion> firstBuildsPromotions = changeStatus.getBuildTypesStatusMap().values().stream().filter(Objects::nonNull);
Locator treeLocator = Locator.createPotentiallyEmptyLocator(treeLocatorText);
if (subTreeRootId != null) {
treeLocator.setDimension(ProblemOccurrencesTreeCollector.SUB_TREE_ROOT_ID, subTreeRootId);
}
return new TestScopeTree(myTestScopeTreeCollector.getSlicedTreeFromBuildPromotions(firstBuildsPromotions, treeLocator), new Fields(fields), myBeanContext);
}
Aggregations