Skip to content

Commit f86124a

Browse files
authored
[cherrypick] DownloadPackageV1 - Fix successful result status on download failure (#14568)
* Handle the case of pkg download error in DownloadPackageV1 task. * Remove only token variable for DownloadPackageV1 tests. * Bump patch version.
1 parent 2625de6 commit f86124a

12 files changed

+75
-21
lines changed

Tasks/DownloadPackageV1/Tests/L0.ts

+15
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,21 @@ describe("Download single file package suite", function() {
164164

165165
done();
166166
});
167+
168+
it("tries to download npm package, but gets download error", (done: MochaDone) => {
169+
this.timeout(1000);
170+
171+
let tp: string = path.join(__dirname, "L0DownloadNpmPackageDownloadError.js");
172+
173+
let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp);
174+
175+
tr.run();
176+
177+
assert(tr.stderr.length === 0, "should not have written to stderr");
178+
assert(tr.failed, "task should have failed");
179+
180+
done();
181+
});
167182
});
168183

169184
describe("Download multi file package suite", function() {

Tasks/DownloadPackageV1/Tests/L0DownloadMultiFilePackage.ts

-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ tr.setInput("verbosity", "verbose");
2222
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2323
process.env["AGENT_VERSION"] = "2.116.0";
2424
process.env["HOME"] = "/users/test";
25-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
26-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2725

2826
// provide answers for task mock
2927
tr.setAnswers({

Tasks/DownloadPackageV1/Tests/L0DownloadNpmPackage.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ process.env["AGENT_TEMPDIRECTORY"] = tempPath;
2323
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2424
process.env["AGENT_VERSION"] = "2.116.0";
2525
process.env["HOME"] = "/users/test";
26-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
27-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2826

2927
// provide answers for task mock
3028
tr.setAnswers({
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import tmrm = require("azure-pipelines-task-lib/mock-run");
2+
import path = require("path");
3+
import { WebApiMock } from "./helpers/webapimock";
4+
5+
let taskPath = path.join(__dirname, "..", "main.js");
6+
let outputPath: string = path.join(__dirname, "out", "packageOutput");
7+
let tempPath: string = path.join(__dirname, "temp");
8+
let zipLocation: string = path.join(tempPath, "singlePackageName.tgz");
9+
let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath);
10+
11+
// Set inputs
12+
tr.setInput("packageType", "npm");
13+
tr.setInput("feed", "feedId");
14+
tr.setInput("view", "viewId");
15+
tr.setInput("definition", "6f598cbe-a5e2-4f75-aa78-e0fd08301a15");
16+
tr.setInput("version", "versionId");
17+
tr.setInput("downloadPath", outputPath);
18+
tr.setInput("extract", "true");
19+
tr.setInput("verbosity", "verbose");
20+
21+
// Set variables.
22+
process.env["AGENT_TEMPDIRECTORY"] = tempPath;
23+
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
24+
process.env["AGENT_VERSION"] = "2.116.0";
25+
process.env["HOME"] = "/users/test";
26+
27+
// provide answers for task mock
28+
tr.setAnswers({
29+
exist: {
30+
[outputPath]: true,
31+
[tempPath]: true
32+
},
33+
rmRF: {
34+
[zipLocation]: {
35+
success: true
36+
}
37+
}
38+
});
39+
40+
// Register connections mock
41+
tr.registerMock("./connections", {
42+
getConnection: function(): Promise<any> {
43+
return Promise.resolve(new WebApiMock());
44+
}
45+
});
46+
47+
tr.registerMock("./package", {
48+
download: async function(): Promise<any> {
49+
throw "download error";
50+
}
51+
})
52+
53+
54+
tr.run();

Tasks/DownloadPackageV1/Tests/L0DownloadNugetPackage.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ process.env["AGENT_TEMPDIRECTORY"] = tempPath;
2323
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2424
process.env["AGENT_VERSION"] = "2.116.0";
2525
process.env["HOME"] = "/users/test";
26-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
27-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2826

2927
// provide answers for task mock
3028
tr.setAnswers({

Tasks/DownloadPackageV1/Tests/L0DownloadNugetPackageNameResolves.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ process.env["AGENT_TEMPDIRECTORY"] = tempPath;
2323
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2424
process.env["AGENT_VERSION"] = "2.116.0";
2525
process.env["HOME"] = "/users/test";
26-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
27-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2826

2927
// provide answers for task mock
3028
tr.setAnswers({

Tasks/DownloadPackageV1/Tests/L0DownloadNugetPackage_BadZip.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ process.env["AGENT_TEMPDIRECTORY"] = tempPath;
2323
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2424
process.env["AGENT_VERSION"] = "2.116.0";
2525
process.env["HOME"] = "/users/test";
26-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
27-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2826

2927
// provide answers for task mock
3028
tr.setAnswers({

Tasks/DownloadPackageV1/Tests/L0DownloadNugetPackage_noextract.ts

-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ tr.setInput("verbosity", "verbose");
2121
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2222
process.env["AGENT_VERSION"] = "2.116.0";
2323
process.env["HOME"] = "/users/test";
24-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
25-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2624

2725
// provide answers for task mock
2826
tr.setAnswers({

Tasks/DownloadPackageV1/Tests/L0DownloadNugetProjectScopedPackage.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ process.env["AGENT_TEMPDIRECTORY"] = tempPath;
2323
process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/";
2424
process.env["AGENT_VERSION"] = "2.116.0";
2525
process.env["HOME"] = "/users/test";
26-
process.env["ENDPOINT_AUTH_SYSTEMVSSCONNECTION"] =
27-
'{"scheme":"OAuth","parameters":{"AccessToken":"YWFtYWxsYWQ6ZXd0emE1bmN3MzN6c3lyM2NoN2prazUzejczamN6MnluNGtiNzd0ZXc0NnlhZzV2d3ZlcQ=="}}';
2826

2927
// provide answers for task mock
3028
tr.setAnswers({

Tasks/DownloadPackageV1/main.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,11 @@ async function main(): Promise<void> {
7777
}
7878

7979
const packageFiles: PackageFile[] = await p.download(feed.feedId, feed.projectId, packageId, version, downloadPath, extractPackage);
80-
81-
return await Promise.all(
82-
packageFiles.map(p => p.process()))
83-
.then(() => tl.setResult(tl.TaskResult.Succeeded, ""))
84-
.catch(error => tl.setResult(tl.TaskResult.Failed, error));
8580

81+
await Promise.all(packageFiles.map((p) => p.process()));
82+
tl.setResult(tl.TaskResult.Succeeded, "");
83+
} catch (error) {
84+
tl.setResult(tl.TaskResult.Failed, error);
8685
} finally {
8786
logTelemetry({
8887
PackageType: packageType,

Tasks/DownloadPackageV1/task.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"version": {
1111
"Major": 1,
1212
"Minor": 183,
13-
"Patch": 0
13+
"Patch": 1
1414
},
1515
"demands": [],
1616
"releaseNotes": "Adds support to download Maven, Python, Universal and Npm packages.",

Tasks/DownloadPackageV1/task.loc.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"version": {
1111
"Major": 1,
1212
"Minor": 183,
13-
"Patch": 0
13+
"Patch": 1
1414
},
1515
"demands": [],
1616
"releaseNotes": "ms-resource:loc.releaseNotes",

0 commit comments

Comments
 (0)