azure-pipelines-task-lib 4.12.1 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/internal.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import vm = require('./vault');
2
3
  /**
3
4
  * Hash table of known variable info. The formatted env var name is the lookup key.
@@ -137,3 +138,4 @@ export declare function _isRooted(p: string): boolean;
137
138
  export declare function _normalizeSeparators(p: string): string;
138
139
  export declare function _exposeProxySettings(): void;
139
140
  export declare function _exposeCertSettings(): void;
141
+ export declare function isSigPipeError(e: NodeJS.ErrnoException): e is NodeJS.ErrnoException;
package/internal.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._exposeCertSettings = exports._exposeProxySettings = exports._normalizeSeparators = exports._isRooted = exports._getDirectoryName = exports._ensureRooted = exports._isUncPath = exports._loadData = exports._ensurePatternRooted = exports._getFindInfoFromPattern = exports._cloneMatchOptions = exports._legacyFindFiles_convertPatternToRegExp = exports._which = exports._checkPath = exports._exist = exports._debug = exports._error = exports._warning = exports._command = exports._getVariableKey = exports._getVariable = exports._loc = exports._setResourcePath = exports._setErrStream = exports._setStdStream = exports._writeLine = exports._truncateBeforeSensitiveKeyword = exports._endsWith = exports._startsWith = exports.IssueAuditAction = exports.IssueSource = exports._vault = exports._knownVariableMap = void 0;
3
+ exports.isSigPipeError = exports._exposeCertSettings = exports._exposeProxySettings = exports._normalizeSeparators = exports._isRooted = exports._getDirectoryName = exports._ensureRooted = exports._isUncPath = exports._loadData = exports._ensurePatternRooted = exports._getFindInfoFromPattern = exports._cloneMatchOptions = exports._legacyFindFiles_convertPatternToRegExp = exports._which = exports._checkPath = exports._exist = exports._debug = exports._error = exports._warning = exports._command = exports._getVariableKey = exports._getVariable = exports._loc = exports._setResourcePath = exports._setErrStream = exports._setStdStream = exports._writeLine = exports._truncateBeforeSensitiveKeyword = exports._endsWith = exports._startsWith = exports.IssueAuditAction = exports.IssueSource = exports._vault = exports._knownVariableMap = void 0;
4
4
  var fs = require("fs");
5
5
  var path = require("path");
6
6
  var os = require("os");
@@ -923,3 +923,11 @@ function _exposeTaskLibSecret(keyFile, secret) {
923
923
  return new Buffer(storageFile).toString('base64') + ':' + new Buffer(encryptedContent).toString('base64');
924
924
  }
925
925
  }
926
+ function isSigPipeError(e) {
927
+ var _a;
928
+ if (!e || typeof e !== 'object') {
929
+ return false;
930
+ }
931
+ return e.code === 'EPIPE' && ((_a = e.syscall) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === 'WRITE';
932
+ }
933
+ exports.isSigPipeError = isSigPipeError;
package/mock-test.js CHANGED
@@ -210,23 +210,20 @@ var MockTestRunner = /** @class */ (function () {
210
210
  // Returns a path to node.exe with the correct version for this task (based on if its node10 or node)
211
211
  MockTestRunner.prototype.getNodePath = function (nodeVersion) {
212
212
  return __awaiter(this, void 0, void 0, function () {
213
- var version, downloadVersion, downloadDestination, pathToExe, result;
213
+ var version, versions, downloadVersion, downloadDestination, pathToExe, result;
214
214
  return __generator(this, function (_a) {
215
215
  switch (_a.label) {
216
216
  case 0:
217
217
  version = nodeVersion || this.getNodeVersion();
218
- switch (version) {
219
- case 6:
220
- downloadVersion = 'v6.17.1';
221
- break;
222
- case 10:
223
- downloadVersion = 'v10.21.0';
224
- break;
225
- case 16:
226
- downloadVersion = 'v16.13.0';
227
- break;
228
- default:
229
- throw new Error('Invalid node version, must be 6, 10, or 16 (received ' + version + ')');
218
+ versions = {
219
+ 20: 'v20.13.1',
220
+ 16: 'v16.20.2',
221
+ 10: 'v10.24.1',
222
+ 6: 'v6.17.1',
223
+ };
224
+ downloadVersion = versions[version];
225
+ if (!downloadVersion) {
226
+ throw new Error('Invalid node version, must be 6, 10, 16 or 20 (received ' + version + ')');
230
227
  }
231
228
  downloadDestination = path.join(downloadDirectory, 'node' + version);
232
229
  pathToExe = this.getPathToNodeExe(downloadVersion, downloadDestination);
@@ -249,29 +246,27 @@ var MockTestRunner = /** @class */ (function () {
249
246
  }
250
247
  var taskJsonContents = fs.readFileSync(taskJsonPath, { encoding: 'utf-8' });
251
248
  var taskJson = JSON.parse(taskJsonContents);
252
- var nodeVersionFound = false;
253
- var execution = (taskJson['execution']
254
- || taskJson['prejobexecution']
255
- || taskJson['postjobexecution']);
256
- var keys = Object.keys(execution);
257
- for (var i = 0; i < keys.length; i++) {
258
- if (keys[i].toLowerCase() == 'node16') {
259
- // Prefer node 16 and return immediately.
260
- return 16;
261
- }
262
- else if (keys[i].toLowerCase() == 'node10') {
263
- // Prefer node 10 and return immediately.
264
- return 10;
265
- }
266
- else if (keys[i].toLowerCase() == 'node') {
267
- nodeVersionFound = true;
249
+ var nodeVersion = 0;
250
+ var executors = ['execution', 'prejobexecution', 'postjobexecution'];
251
+ for (var _i = 0, executors_1 = executors; _i < executors_1.length; _i++) {
252
+ var executor = executors_1[_i];
253
+ if (!taskJson[executor])
254
+ continue;
255
+ for (var _a = 0, _b = Object.keys(taskJson[executor]); _a < _b.length; _a++) {
256
+ var key = _b[_a];
257
+ var currExecutor = key.toLocaleLowerCase();
258
+ if (!currExecutor.startsWith('node'))
259
+ continue;
260
+ var version = currExecutor.replace('node', '');
261
+ var intVersion = parseInt(version) || 6; // node handler is node v6 by default
262
+ nodeVersion = Math.max(intVersion, nodeVersion);
268
263
  }
269
264
  }
270
- if (!nodeVersionFound) {
265
+ if (nodeVersion === 0) {
271
266
  console.warn('Unable to determine execution type from task.json, defaulting to use Node 16');
272
267
  return 16;
273
268
  }
274
- return 6;
269
+ return nodeVersion;
275
270
  };
276
271
  // Returns the path to the task.json for the task being tested. Returns null if unable to find it.
277
272
  // Searches by moving up the directory structure from the initial starting point and checking at each level.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azure-pipelines-task-lib",
3
- "version": "4.12.1",
3
+ "version": "4.14.0",
4
4
  "description": "Azure Pipelines Task SDK",
5
5
  "main": "./task.js",
6
6
  "typings": "./task.d.ts",
package/task.js CHANGED
@@ -102,8 +102,10 @@ exports.setSanitizedResult = setSanitizedResult;
102
102
  // Catching all exceptions
103
103
  //
104
104
  process.on('uncaughtException', function (err) {
105
- setResult(TaskResult.Failed, exports.loc('LIB_UnhandledEx', err.message));
106
- exports.error(String(err.stack), im.IssueSource.TaskInternal);
105
+ if (!im.isSigPipeError(err)) {
106
+ setResult(TaskResult.Failed, exports.loc('LIB_UnhandledEx', err.message));
107
+ exports.error(String(err.stack), im.IssueSource.TaskInternal);
108
+ }
107
109
  });
108
110
  //
109
111
  // Catching unhandled rejections from promises and rethrowing them as exceptions