Skip to content

Commit 6b0e417

Browse files
saikrishnavKrishna V
andauthored
Build Email Fixes (#33)
Co-authored-by: Krishna V <[email protected]>
1 parent a8f8bac commit 6b0e417

File tree

5 files changed

+19
-10
lines changed

5 files changed

+19
-10
lines changed

Tasks/emailReportTask/config/pipeline/PipelineConfiguration.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,10 @@ export class PipelineConfiguration {
109109
if (this.testTabLink == null) {
110110
if (this.pipelineType == PipelineType.Release) {
111111
this.testTabLink = LinkHelper.getTestTabLinkInRelease(this);
112+
} else if (this.pipelineType == PipelineType.Build) {
113+
this.testTabLink = LinkHelper.getTestTabLinkInBuild(this);
112114
}
113-
}
115+
}
114116
return this.testTabLink;
115117
}
116118
}

Tasks/emailReportTask/model/helpers/LinkHelper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export class LinkHelper {
126126
return projectName + "/" + LinkHelper.BuildPipelineExtension;
127127
}
128128

129-
private static getTestTabLinkInBuild(config: PipelineConfiguration) {
129+
public static getTestTabLinkInBuild(config: PipelineConfiguration) {
130130
var collectionUri = config.$teamUri;
131131
var parameters = new Map<string, string>(
132132
[

Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export class MailAddressViewModel {
6161
if (!isNullOrUndefined(report.$failedTestOwners)) {
6262
report.$failedTestOwners.forEach(identity => {
6363
var mailAddress = this.getMailAddressFromIdentityRef(identity);
64-
if (StringUtils.isNullOrWhiteSpace(mailAddress)) {
64+
if (!StringUtils.isNullOrWhiteSpace(mailAddress)) {
6565
mailAddresses.push(mailAddress);
6666
}
6767
});

Tasks/emailReportTask/model/viewmodel/TestResultViewModel.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { DisplayNameHelper } from "../../utils/DisplayNameHelper";
99
import { ReleaseReferenceViewModel } from "./ReleaseReferenceViewModel";
1010
import { PipelineType } from "../../config/pipeline/PipelineType";
1111
import { BuildReferenceViewModel } from "./BuildReferenceViewModel";
12+
import { isNullOrUndefined } from "util";
1213

1314
export class TestResultViewModelWrapper {
1415
public TestResultViewModel: TestResultViewModel[];
@@ -65,6 +66,16 @@ export class TestResultViewModel {
6566
}
6667
}
6768

69+
if(isNullOrUndefined(result.durationInMs)) {
70+
if(!isNullOrUndefined(result.startedDate) && !isNullOrUndefined(result.completedDate)) {
71+
result.durationInMs = result.completedDate.getTime() - result.startedDate.getTime();
72+
}
73+
74+
if(isNullOrUndefined(result.durationInMs) || result.durationInMs < 0) {
75+
// unknown duration - assume test didn't run instead of displaying "Undefined/NaN" in email
76+
result.durationInMs = 0;
77+
}
78+
}
6879
this.Duration = TimeFormatter.FormatDuration(result.durationInMs);
6980
this.CreateBugLink = LinkHelper.getCreateBugLinkForTest(config, testResultModel.testResult);
7081
}

Tasks/emailReportTask/providers/restclients/AbstractTestResultsClient.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,15 @@ export abstract class AbstractTestResultsClient extends AbstractClient implement
4040
var query = new TestResultsQueryImpl();
4141
query.fields = ["Owner"];
4242

43-
const tasks: Promise<TestResultsQuery>[] = [];
43+
const results: TestCaseResult[] = [];
4444
const testApi = await this.testApiPromise;
4545
for (let i = 0, j = resultsToFetch.length; i < j; i += this.MaxItemsSupported) {
4646
const tempArray = resultsToFetch.slice(i, i + this.MaxItemsSupported);
4747
query.results = tempArray;
48-
tasks.push(RetryablePromise.RetryAsync(async () => testApi.getTestResultsByQuery(query, this.pipelineConfig.$projectName), "GetTestResultOwners"));
48+
let queryResult: TestResultsQuery = await RetryablePromise.RetryAsync(async () => testApi.getTestResultsByQuery(query, this.pipelineConfig.$projectName), "GetTestResultOwners");
49+
results.push(...queryResult.results);
4950
}
5051

51-
await Promise.all(tasks);
52-
53-
const results: TestCaseResult[] = [];
54-
tasks.forEach(async t => results.push(...(await t).results));
55-
5652
const ownerMap = new Map<string, IdentityRef>();
5753
results.forEach(r => {
5854
if (this.isValid(r.owner)) {

0 commit comments

Comments
 (0)