diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ef4f93d0e53c..986dedb80f1e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -91,13 +91,13 @@ Tasks/CmdLineV2/* @jtpetty Tasks/CocoaPodsV0/* @leantk -Tasks/Common/artifacts-common/* @zjrunner @zarenner @shubham90 +Tasks/Common/artifacts-common/* @jotaylo @shubham90 Tasks/Common/AzureRmDeploy-common/* @vincentdass @SumiranAgg Tasks/Common/Deployment/* @bishal-pdMSFT @chshrikh -Tasks/Common/MSBuildHelpers/* @ericsciple @austin-jensen +Tasks/Common/MSBuildHelpers/* @daveken Tasks/Common/PowershellHelpers/* @bishal-pdMSFT @hiyadav @@ -179,7 +179,7 @@ Tasks/DownloadFileshareArtifactsV0/* @Lovakumar @omeshp Tasks/DownloadGitHubReleasesV0/* @Lovakumar @gykuma -Tasks/DownloadPackageV0/* @zjrunner +Tasks/DownloadPackageV0/* @jotaylo @shubham90 Tasks/DownloadPipelineArtifactV0/* @mihaif @jahsu-MSFT @fadnavistanmay @owenhuynMSFT @arunkm @@ -247,7 +247,7 @@ Tasks/KubernetesManifestV0/* @vithati Tasks/ManualInterventionV8/* @vithati -Tasks/MavenAuthenticateV0/* @zjrunner @aasim +Tasks/MavenAuthenticateV0/* @jotaylo @shubham90 @aasim Tasks/MavenV2/* @leantk @@ -259,21 +259,21 @@ Tasks/MysqlDeploymentOnMachineGroupV1/* @kmkumaran @RoshanKumarMicrosof Tasks/NodeToolV0/* @damccorm -Tasks/NpmV1/* @zjrunner @jotaylo +Tasks/NpmV1/* @jotaylo -Tasks/NpmAuthenticateV0/* @zjrunner +Tasks/NpmAuthenticateV0/* @jotaylo @shubham90 -Tasks/NuGetV0/* @zjrunner +Tasks/NuGetV0/* @jotaylo @shubham90 -Tasks/NuGetCommandV2/* @zjrunner @jotaylo +Tasks/NuGetCommandV2/* @jotaylo @shubham90 -Tasks/NuGetAuthenticateV0/* @zjrunner @zarenner +Tasks/NuGetAuthenticateV0/* @jotaylo @shubham90 -Tasks/NuGetPackagerV0/* @zjrunner +Tasks/NuGetPackagerV0/* @jotaylo @shubham90 -Tasks/NuGetPublisherV0/* @zjrunner +Tasks/NuGetPublisherV0/* @jotaylo @shubham90 -Tasks/NuGetToolInstallerV0/* @zjrunner +Tasks/NuGetToolInstallerV0/* @jotaylo @shubham90 Tasks/OpenPolicyAgentInstallerV0/* @Anumita @@ -281,9 +281,9 @@ Tasks/PackerBuildV0/* @bishal-pdmsft Tasks/PackerBuildV1/* @bishal-pdmsft -Tasks/PipAuthenticateV0/* @zjrunner @shubham90 +Tasks/PipAuthenticateV0/* @shubham90 -Tasks/PipAuthenticateV1/* @zjrunner @shubham90 +Tasks/PipAuthenticateV1/* @shubham90 Tasks/PowerShellV2/* @jtpetty @@ -345,11 +345,11 @@ Tasks/SqlServerDacpacDeployment/* @kmkumaran Tasks/SshV0/* @leantk -Tasks/TwineAuthenticateV0/* @zjrunner +Tasks/TwineAuthenticateV0/* @shubham90 -Tasks/TwineAuthenticateV1/* @zjrunner @shubham90 +Tasks/TwineAuthenticateV1/* @shubham90 -Tasks/UniversalPackagesV0/* @zjrunner +Tasks/UniversalPackagesV0/* @shubham90 @jotaylo Tasks/UseDotNetV2/* @bishal-pdmsft diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index ef2f062d5d60..7627d50fc32b 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -1,5 +1,7 @@ name: Labeler -on: [issues] +on: + issues: + types: [opened] jobs: label: @@ -12,3 +14,17 @@ jobs: with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: "./issue-rules.yml" + + - name: Set Node.js 10.x + uses: actions/setup-node@master + with: + version: 10.x + + # Need to explicitly install @octokit/rest seperately or else it will mess with our typings. + - run: npm install && npm install @octokit/rest + + - name: File bugs + run: node ci/file-bugs.js + env: + GITHUB_PAT: "${{ secrets.GITHUB_TOKEN }}" + AZP_PAT: "${{ secrets.AZP_TOKEN }}" diff --git a/Tasks/ANTV1/Tests/L0.ts b/Tasks/ANTV1/Tests/L0.ts new file mode 100644 index 000000000000..acfbbe3c8ea0 --- /dev/null +++ b/Tasks/ANTV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AntV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/ANTV1/Tests/package-lock.json b/Tasks/ANTV1/Tests/package-lock.json new file mode 100644 index 000000000000..0e52d1ddc30b --- /dev/null +++ b/Tasks/ANTV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "antv1-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/ANTV1/Tests/package.json b/Tasks/ANTV1/Tests/package.json new file mode 100644 index 000000000000..2d61c6f0eb36 --- /dev/null +++ b/Tasks/ANTV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "antv1-tests", + "version": "1.0.0", + "description": "Azure Pipelines Ant V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/ANTV1/package-lock.json b/Tasks/ANTV1/package-lock.json index 1ed57ee340ec..55dcbaf738e8 100644 --- a/Tasks/ANTV1/package-lock.json +++ b/Tasks/ANTV1/package-lock.json @@ -19,11 +19,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.5.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -41,7 +41,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -50,33 +50,33 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.1", - "entities": "1.1.2", - "htmlparser2": "3.10.1", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "codecoverage-tools": { "version": "file:../../_build/Tasks/Common/codecoverage-tools-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "cheerio": "0.22.0", - "fs-extra": "0.30.0", - "os": "0.1.1", - "strip-bom": "3.0.0", - "xml2js": "0.4.19" + "azure-pipelines-task-lib": "^2.8.0", + "cheerio": "^0.22.0", + "fs-extra": "^0.30.0", + "os": "^0.1.1", + "strip-bom": "^3.0.0", + "xml2js": "^0.4.17" } }, "concat-map": { @@ -89,10 +89,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.3", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.2" + "nth-check": "~1.0.1" } }, "css-what": { @@ -105,8 +105,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "requires": { - "domelementtype": "1.3.1", - "entities": "1.1.2" + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, "domelementtype": { @@ -119,7 +119,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.1" + "domelementtype": "1" } }, "domutils": { @@ -127,8 +127,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.1", - "domelementtype": "1.3.1" + "dom-serializer": "0", + "domelementtype": "1" } }, "entities": { @@ -141,11 +141,11 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { - "graceful-fs": "4.1.15", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.3" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, "fs.realpath": { @@ -154,34 +154,34 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "domelementtype": "1.3.1", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.2", - "inherits": "2.0.3", - "readable-stream": "3.3.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" } }, "inflight": { @@ -189,20 +189,20 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "java-common": { "version": "file:../../_build/Tasks/Common/java-common-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "semver": "5.5.0" + "azure-pipelines-task-lib": "^2.8.0", + "semver": "^5.1.0" } }, "jsonfile": { @@ -210,7 +210,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "4.1.15" + "graceful-fs": "^4.1.6" } }, "klaw": { @@ -218,7 +218,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "4.1.15" + "graceful-fs": "^4.1.9" } }, "lodash.assignin": { @@ -257,9 +257,9 @@ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.pick": { "version": "4.4.0", @@ -286,7 +286,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -299,7 +299,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "once": { @@ -307,7 +307,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os": { @@ -326,27 +326,27 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "requires": { - "inherits": "2.0.3", - "string_decoder": "1.2.0", - "util-deprecate": "1.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "7.1.3" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, "sax": { "version": "1.2.4", @@ -364,11 +364,11 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.2.0" } }, "strip-bom": { @@ -396,8 +396,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.6" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { diff --git a/Tasks/ANTV1/task.loc.json b/Tasks/ANTV1/task.loc.json index c42aed172d59..f9155d21eacb 100644 --- a/Tasks/ANTV1/task.loc.json +++ b/Tasks/ANTV1/task.loc.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 155, + "Minor": 158, "Patch": 0 }, "demands": [ diff --git a/Tasks/AndroidSigningV2/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AndroidSigningV2/Strings/resources.resjson/en-US/resources.resjson index 709585e3b45d..f476a8866b97 100644 --- a/Tasks/AndroidSigningV2/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/AndroidSigningV2/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Android signing", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613717)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613717)", "loc.description": "Sign and align Android APK files", "loc.instanceNameFormat": "Signing and aligning APK file(s) $(files)", "loc.group.displayName.jarsignerOptions": "Signing Options", diff --git a/Tasks/AndroidSigningV2/package-lock.json b/Tasks/AndroidSigningV2/package-lock.json index c4d3f0b30fec..129e08b0e61e 100644 --- a/Tasks/AndroidSigningV2/package-lock.json +++ b/Tasks/AndroidSigningV2/package-lock.json @@ -31,11 +31,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.5.0", - "shelljs": "0.3.0", - "uuid": "3.2.1" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -48,7 +48,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -83,10 +83,10 @@ "securefiles-common": { "version": "file:../../_build/Tasks/Common/securefiles-common-1.0.0.tgz", "requires": { - "@types/node": "6.14.4", - "@types/q": "1.5.2", + "@types/node": "^6.0.0", + "@types/q": "^1.5.2", "azure-devops-node-api": "7.2.0", - "azure-pipelines-task-lib": "2.8.0" + "azure-pipelines-task-lib": "^2.8.0" } }, "semver": { diff --git a/Tasks/AndroidSigningV2/task.loc.json b/Tasks/AndroidSigningV2/task.loc.json index d9164506d946..76293e63c77e 100644 --- a/Tasks/AndroidSigningV2/task.loc.json +++ b/Tasks/AndroidSigningV2/task.loc.json @@ -164,4 +164,4 @@ "NoMatchingFiles": "ms-resource:loc.messages.NoMatchingFiles", "DeleteKeystoreFileFailed": "ms-resource:loc.messages.DeleteKeystoreFileFailed" } -} +} \ No newline at end of file diff --git a/Tasks/AndroidSigningV3/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AndroidSigningV3/Strings/resources.resjson/en-US/resources.resjson index 558b4103875e..e720a2429a95 100644 --- a/Tasks/AndroidSigningV3/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/AndroidSigningV3/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Android signing", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613717)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613717)", "loc.description": "Sign and align Android APK files", "loc.instanceNameFormat": "Signing and aligning APK file(s) $(files)", "loc.releaseNotes": "This version of the task uses apksigner instead of jarsigner to sign APKs.", diff --git a/Tasks/AndroidSigningV3/package-lock.json b/Tasks/AndroidSigningV3/package-lock.json index 108d09ec4372..db526f98dc63 100644 --- a/Tasks/AndroidSigningV3/package-lock.json +++ b/Tasks/AndroidSigningV3/package-lock.json @@ -31,11 +31,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.5.0", - "shelljs": "0.3.0", - "uuid": "3.2.1" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -48,7 +48,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -83,10 +83,10 @@ "securefiles-common": { "version": "file:../../_build/Tasks/Common/securefiles-common-1.0.0.tgz", "requires": { - "@types/node": "6.0.117", - "@types/q": "1.5.2", + "@types/node": "^6.0.0", + "@types/q": "^1.5.2", "azure-devops-node-api": "7.2.0", - "azure-pipelines-task-lib": "2.8.0" + "azure-pipelines-task-lib": "^2.8.0" } }, "semver": { diff --git a/Tasks/AndroidSigningV3/task.loc.json b/Tasks/AndroidSigningV3/task.loc.json index 6c3f24d0edbb..dafc10c36566 100644 --- a/Tasks/AndroidSigningV3/task.loc.json +++ b/Tasks/AndroidSigningV3/task.loc.json @@ -176,4 +176,4 @@ "NoMatchingFiles": "ms-resource:loc.messages.NoMatchingFiles", "DeleteKeystoreFileFailed": "ms-resource:loc.messages.DeleteKeystoreFileFailed" } -} +} \ No newline at end of file diff --git a/Tasks/ArchiveFilesV2/Tests/L0.ts b/Tasks/ArchiveFilesV2/Tests/L0.ts index 31830fe0e288..dd53b902c717 100644 --- a/Tasks/ArchiveFilesV2/Tests/L0.ts +++ b/Tasks/ArchiveFilesV2/Tests/L0.ts @@ -1,13 +1,34 @@ import * as assert from 'assert'; -import mocha = require('mocha'); import * as utils from '../utils.js'; +import * as ttm from 'azure-pipelines-task-lib/mock-test'; +import fs = require('fs'); +import os = require('os'); import path = require('path'); -import tl = require("azure-pipelines-task-lib/task"); +import tl = require('azure-pipelines-task-lib/task'); describe('ArchiveFiles L0 Suite', function () { - before(() => { }); - - after(() => { }); + function runValidations(validator: () => void, tr, done) { + try { + validator(); + done(); + } + catch (error) { + console.log('STDERR', tr.stderr); + console.log('STDOUT', tr.stdout); + done(error); + } + } + + before(() => { + const testTemp = path.join(__dirname, 'test_temp'); + if (!fs.existsSync(testTemp)) { + fs.mkdirSync(testTemp); + } + const testOutput = path.join(__dirname, 'test_output'); + if (!fs.existsSync(testOutput)) { + fs.mkdirSync(testOutput); + } + }) const files = (n) => { return Array.from( @@ -28,6 +49,96 @@ describe('ArchiveFiles L0 Suite', function () { done(); }); - }) + }); + + it('Successfully creates a zip', function(done: MochaDone) { + this.timeout(5000); + process.env['archiveType'] = 'zip'; + process.env['archiveFile'] = 'myZip'; + process.env['includeRootFolder'] = 'true'; + const expectedArchivePath = path.join(__dirname, 'test_output', 'myZip.zip'); + + let tp: string = path.join(__dirname, 'L0CreateArchive.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + tr.run(); + + runValidations(() => { + assert(tr.stdout.indexOf('Creating archive') > -1, 'Should have tried to create archive'); + if (process.platform.indexOf('win32') >= 0) { + assert(tr.stdout.indexOf('Items to compress: 6') > -1, 'Should have found 6 items to compress'); + } else { + assert(tr.stdout.indexOf('adding: test_folder/ (') > -1, 'Should have found 6 items to compress'); + assert(tr.stdout.indexOf('adding: test_folder/a/ (') > -1, 'Should have found 6 items to compress'); + assert(tr.stdout.indexOf('adding: test_folder/a/abc.txt (') > -1, 'Should have found 6 items to compress'); + assert(tr.stdout.indexOf('adding: test_folder/a/def.txt (') > -1, 'Should have found 6 items to compress'); + assert(tr.stdout.indexOf('adding: test_folder/b/ (') > -1, 'Should have found 6 items to compress'); + assert(tr.stdout.indexOf('adding: test_folder/b/abc.txt (') > -1, 'Should have found 6 items to compress'); + } + assert(fs.existsSync(expectedArchivePath), `Should have successfully created the archive at ${expectedArchivePath}, instead directory contents are ${fs.readdirSync(path.dirname(expectedArchivePath))}`); + }, tr, done); + }); + + it('Successfully creates a tar', function(done: MochaDone) { + this.timeout(5000); + process.env['archiveType'] = 'tar'; + process.env['archiveFile'] = 'myTar'; + process.env['includeRootFolder'] = 'true'; + let expectedArchivePath = path.join(__dirname, 'test_output', 'myTar.gz'); + if (process.platform.indexOf('win32') < 0) { + expectedArchivePath = path.join(__dirname, 'test_output', 'myTar'); + } + + let tp: string = path.join(__dirname, 'L0CreateArchive.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + tr.run(); + + runValidations(() => { + assert(tr.stdout.indexOf('Creating archive') > -1, 'Should have tried to create archive'); + assert(fs.existsSync(expectedArchivePath), `Should have successfully created the archive at ${expectedArchivePath}, instead directory contents are ${fs.readdirSync(path.dirname(expectedArchivePath))}`); + }, tr, done); + }); + +// These tests rely on 7z which isnt present on macOS +if (process.platform.indexOf('darwin') < 0) { + it('Successfully creates a 7z', function(done: MochaDone) { + this.timeout(5000); + process.env['archiveType'] = '7z'; + process.env['archiveFile'] = 'my7z'; + process.env['includeRootFolder'] = 'true'; + const expectedArchivePath = path.join(__dirname, 'test_output', 'my7z.7z'); + + let tp: string = path.join(__dirname, 'L0CreateArchive.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + tr.run(); + + runValidations(() => { + assert(tr.stdout.indexOf('Creating archive') > -1, 'Should have tried to create archive'); + assert(fs.existsSync(expectedArchivePath), `Should have successfully created the archive at ${expectedArchivePath}, instead directory contents are ${fs.readdirSync(path.dirname(expectedArchivePath))}`); + }, tr, done); + }); + + it('Successfully creates a wim', function(done: MochaDone) { + this.timeout(5000); + process.env['archiveType'] = 'wim'; + process.env['archiveFile'] = 'mywim'; + process.env['includeRootFolder'] = 'true'; + let expectedArchivePath = path.join(__dirname, 'test_output', 'myWim.wim'); + if (process.platform.indexOf('win') < 0) { + expectedArchivePath = path.join(__dirname, 'test_output', 'mywim.wim'); + } + + let tp: string = path.join(__dirname, 'L0CreateArchive.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + tr.run(); -}); \ No newline at end of file + runValidations(() => { + assert(tr.stdout.indexOf('Creating archive') > -1, 'Should have tried to create archive'); + assert(fs.existsSync(expectedArchivePath), `Should have successfully created the archive at ${expectedArchivePath}, instead directory contents are ${fs.readdirSync(path.dirname(expectedArchivePath))}`); + }, tr, done); + }); +} +}); diff --git a/Tasks/ArchiveFilesV2/Tests/L0CreateArchive.ts b/Tasks/ArchiveFilesV2/Tests/L0CreateArchive.ts new file mode 100644 index 000000000000..3555bd60e5a8 --- /dev/null +++ b/Tasks/ArchiveFilesV2/Tests/L0CreateArchive.ts @@ -0,0 +1,16 @@ +import tmrm = require('azure-pipelines-task-lib/mock-run'); +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'archivefiles.js'); +let tmr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +process.env['AGENT_TEMPDIRECTORY'] = path.join(__dirname, 'test_temp'); + +tmr.setInput('rootFolderOrFile', path.join(__dirname, 'test_folder')); +tmr.setInput('includeRootFolder', process.env['includeRootFolder']); +tmr.setInput('archiveType', process.env['archiveType']); +tmr.setInput('archiveFile', path.join('test_output', process.env['archiveFile'])); +tmr.setInput('replaceExistingArchive', 'true'); +tmr.setInput('tarCompression', 'gz'); + +tmr.run(true); \ No newline at end of file diff --git a/Tasks/ArchiveFilesV2/Tests/test_folder/a/abc.txt b/Tasks/ArchiveFilesV2/Tests/test_folder/a/abc.txt new file mode 100644 index 000000000000..f2ba8f84ab5c --- /dev/null +++ b/Tasks/ArchiveFilesV2/Tests/test_folder/a/abc.txt @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/Tasks/ArchiveFilesV2/Tests/test_folder/a/def.txt b/Tasks/ArchiveFilesV2/Tests/test_folder/a/def.txt new file mode 100644 index 000000000000..0c003832e7bf --- /dev/null +++ b/Tasks/ArchiveFilesV2/Tests/test_folder/a/def.txt @@ -0,0 +1 @@ +def \ No newline at end of file diff --git a/Tasks/ArchiveFilesV2/Tests/test_folder/b/abc.txt b/Tasks/ArchiveFilesV2/Tests/test_folder/b/abc.txt new file mode 100644 index 000000000000..f2ba8f84ab5c --- /dev/null +++ b/Tasks/ArchiveFilesV2/Tests/test_folder/b/abc.txt @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/Tasks/AzureAppServiceManageV0/package-lock.json b/Tasks/AzureAppServiceManageV0/package-lock.json index d21d4d37ddfb..19a7eea93064 100644 --- a/Tasks/AzureAppServiceManageV0/package-lock.json +++ b/Tasks/AzureAppServiceManageV0/package-lock.json @@ -25,9 +25,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } diff --git a/Tasks/AzureAppServiceSettingsV1/Tests/L0.ts b/Tasks/AzureAppServiceSettingsV1/Tests/L0.ts new file mode 100644 index 000000000000..e1cc03c702fd --- /dev/null +++ b/Tasks/AzureAppServiceSettingsV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureAppServiceSettingsV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureAppServiceSettingsV1/Tests/package-lock.json b/Tasks/AzureAppServiceSettingsV1/Tests/package-lock.json new file mode 100644 index 000000000000..d1caecf46c7e --- /dev/null +++ b/Tasks/AzureAppServiceSettingsV1/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "azure-app-service-settings-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/AzureAppServiceSettingsV1/Tests/package.json b/Tasks/AzureAppServiceSettingsV1/Tests/package.json new file mode 100644 index 000000000000..8064dbeaef1c --- /dev/null +++ b/Tasks/AzureAppServiceSettingsV1/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "azure-app-service-settings-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure App Service Settings V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/AzureAppServiceSettingsV1/package-lock.json b/Tasks/AzureAppServiceSettingsV1/package-lock.json index d249c26ee6af..749d5fb4a9b0 100644 --- a/Tasks/AzureAppServiceSettingsV1/package-lock.json +++ b/Tasks/AzureAppServiceSettingsV1/package-lock.json @@ -25,18 +25,18 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "archiver": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.2.0.tgz", - "integrity": "sha1-+1xq9UQ7P6akJjRHU7rSp7REqt0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz", + "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.3", - "buffer-crc32": "0.2.13", - "glob": "7.1.4", - "lodash": "4.17.15", - "readable-stream": "2.3.6", - "tar-stream": "1.6.2", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" } }, "archiver-utils": { @@ -44,12 +44,12 @@ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "requires": { - "glob": "7.1.4", - "graceful-fs": "4.2.2", - "lazystream": "1.0.0", - "lodash": "4.17.15", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "async": { @@ -57,7 +57,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.14" } }, "azure-pipelines-task-lib": { @@ -66,23 +66,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.7.1", - "shelljs": "0.3.0", - "uuid": "3.3.2" - }, - "dependencies": { - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - } + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "azurermdeploycommon": { @@ -91,7 +79,7 @@ "@types/mocha": "2.2.48", "@types/node": "6.0.68", "@types/q": "1.0.7", - "archiver": "1.2.0", + "archiver": "2.1.1", "azure-pipelines-task-lib": "2.8.0", "decompress-zip": "0.3.0", "jsonwebtoken": "7.3.0", @@ -118,8 +106,8 @@ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" } }, "bl": { @@ -127,8 +115,8 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "brace-expansion": { @@ -136,17 +124,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "buffer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.0.tgz", - "integrity": "sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { - "base64-js": "1.3.1", - "ieee754": "1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -154,8 +142,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -188,7 +176,7 @@ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "requires": { - "traverse": "0.3.9" + "traverse": ">=0.3.0 <0.4" } }, "compress-commons": { @@ -196,10 +184,10 @@ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -217,7 +205,7 @@ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "requires": { - "buffer": "5.4.0" + "buffer": "^5.1.0" } }, "crc32-stream": { @@ -225,8 +213,8 @@ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "requires": { - "crc": "3.8.0", - "readable-stream": "2.3.6" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "decompress-zip": { @@ -234,12 +222,12 @@ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", "requires": { - "binary": "0.3.0", - "graceful-fs": "4.2.2", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.5.1", - "readable-stream": "1.1.14", + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", "touch": "0.0.3" }, "dependencies": { @@ -248,20 +236,15 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -276,15 +259,15 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "fs-constants": { @@ -298,22 +281,22 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "hoek": { "version": "2.16.3", @@ -330,8 +313,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -354,17 +337,10 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { - "hoek": "2.16.3", - "isemail": "1.2.0", - "moment": "2.24.0", - "topo": "1.1.0" - }, - "dependencies": { - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - } + "hoek": "2.x.x", + "isemail": "1.x.x", + "moment": "2.x.x", + "topo": "1.x.x" } }, "jsonwebtoken": { @@ -372,11 +348,11 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.3.0.tgz", "integrity": "sha1-hRGNanDj/M3xQ4n056HD+cip+7o=", "requires": { - "joi": "6.10.1", - "jws": "3.2.2", - "lodash.once": "4.1.1", - "ms": "0.7.3", - "xtend": "4.0.2" + "joi": "^6.10.1", + "jws": "^3.1.4", + "lodash.once": "^4.0.0", + "ms": "^0.7.1", + "xtend": "^4.0.1" } }, "jwa": { @@ -386,7 +362,7 @@ "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "jws": { @@ -394,8 +370,8 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "jwa": "1.4.1", - "safe-buffer": "5.1.2" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, "lazystream": { @@ -403,7 +379,7 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lodash": { @@ -421,7 +397,7 @@ "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.6.2.tgz", "integrity": "sha1-cD5EN9XjlNJsAxT9j9Xevtjgmdk=", "requires": { - "inherits": "2.0.4" + "inherits": "^2.0.1" } }, "minimatch": { @@ -429,7 +405,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mkpath": { @@ -462,7 +438,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -470,7 +446,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "once": { @@ -478,7 +454,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -501,13 +477,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", - "isarray": "1.0.0", - "process-nextick-args": "2.0.1", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "remove-trailing-separator": { @@ -540,7 +516,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "tar-stream": { @@ -548,13 +524,13 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.2.0", - "end-of-stream": "1.4.1", - "fs-constants": "1.0.0", - "readable-stream": "2.3.6", - "to-buffer": "1.1.1", - "xtend": "4.0.2" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" } }, "to-buffer": { @@ -567,7 +543,7 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "touch": { @@ -575,7 +551,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" }, "dependencies": { "nopt": { @@ -583,7 +559,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } } } @@ -637,8 +613,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz", "integrity": "sha1-+EQ+B0Oeb/ktmVKPSbvTScyfMGs=", "requires": { - "sax": "1.2.4", - "xmlbuilder": "13.0.2" + "sax": ">=0.6.0", + "xmlbuilder": ">=2.4.6" } }, "xmlbuilder": { @@ -656,10 +632,10 @@ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.15", - "readable-stream": "2.3.6" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } diff --git a/Tasks/AzureCLIV1/Tests/L0.ts b/Tasks/AzureCLIV1/Tests/L0.ts new file mode 100644 index 000000000000..3b9bba2c378b --- /dev/null +++ b/Tasks/AzureCLIV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureCLIV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureCLIV1/Tests/package-lock.json b/Tasks/AzureCLIV1/Tests/package-lock.json new file mode 100644 index 000000000000..2efa0cec34be --- /dev/null +++ b/Tasks/AzureCLIV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "azure-cli-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/AzureCLIV1/Tests/package.json b/Tasks/AzureCLIV1/Tests/package.json new file mode 100644 index 000000000000..1b3c0f24deac --- /dev/null +++ b/Tasks/AzureCLIV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "azure-cli-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure CLI V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/AzureCLIV2/Tests/L0.ts b/Tasks/AzureCLIV2/Tests/L0.ts new file mode 100644 index 000000000000..9a107130566d --- /dev/null +++ b/Tasks/AzureCLIV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureCLIV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureCLIV2/Tests/package-lock.json b/Tasks/AzureCLIV2/Tests/package-lock.json new file mode 100644 index 000000000000..2efa0cec34be --- /dev/null +++ b/Tasks/AzureCLIV2/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "azure-cli-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/AzureCLIV2/Tests/package.json b/Tasks/AzureCLIV2/Tests/package.json new file mode 100644 index 000000000000..498a47f10ac0 --- /dev/null +++ b/Tasks/AzureCLIV2/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "azure-cli-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure CLI V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/AzureCloudPowerShellDeploymentV1/Tests/L0.ts b/Tasks/AzureCloudPowerShellDeploymentV1/Tests/L0.ts new file mode 100644 index 000000000000..e936684fd732 --- /dev/null +++ b/Tasks/AzureCloudPowerShellDeploymentV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('AzureCloudPowerShellDeploymentV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureCloudPowerShellDeploymentV1/tsconfig.json b/Tasks/AzureCloudPowerShellDeploymentV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/AzureCloudPowerShellDeploymentV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/AzureFunctionOnKubernetesV0/Tests/L0.ts b/Tasks/AzureFunctionOnKubernetesV0/Tests/L0.ts new file mode 100644 index 000000000000..523a67322d24 --- /dev/null +++ b/Tasks/AzureFunctionOnKubernetesV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureFunctionOnKubernetesV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureFunctionOnKubernetesV0/Tests/package-lock.json b/Tasks/AzureFunctionOnKubernetesV0/Tests/package-lock.json new file mode 100644 index 000000000000..fbc19a0daacc --- /dev/null +++ b/Tasks/AzureFunctionOnKubernetesV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "azure-function-on-kubernetes-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/AzureFunctionOnKubernetesV0/Tests/package.json b/Tasks/AzureFunctionOnKubernetesV0/Tests/package.json new file mode 100644 index 000000000000..acaf22eafcd6 --- /dev/null +++ b/Tasks/AzureFunctionOnKubernetesV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "azure-function-on-kubernetes-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure Function on Kubernetes V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/AzureFunctionOnKubernetesV0/package-lock.json b/Tasks/AzureFunctionOnKubernetesV0/package-lock.json index c42b49d050ac..72ed0577ffce 100644 --- a/Tasks/AzureFunctionOnKubernetesV0/package-lock.json +++ b/Tasks/AzureFunctionOnKubernetesV0/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@types/node": { - "version": "12.7.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz", - "integrity": "sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==" + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==" }, "@types/q": { "version": "1.5.2", @@ -20,9 +20,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -311,9 +311,9 @@ }, "dependencies": { "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", diff --git a/Tasks/AzureFunctionOnKubernetesV0/task.json b/Tasks/AzureFunctionOnKubernetesV0/task.json index a2ef8d8965e6..f1eda6282b7f 100644 --- a/Tasks/AzureFunctionOnKubernetesV0/task.json +++ b/Tasks/AzureFunctionOnKubernetesV0/task.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 6 + "Patch": 8 }, "demands": [], "groups": [ diff --git a/Tasks/AzureFunctionOnKubernetesV0/task.loc.json b/Tasks/AzureFunctionOnKubernetesV0/task.loc.json index d6a118a49ec7..4a0d2c50c487 100644 --- a/Tasks/AzureFunctionOnKubernetesV0/task.loc.json +++ b/Tasks/AzureFunctionOnKubernetesV0/task.loc.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 6 + "Patch": 8 }, "demands": [], "groups": [ diff --git a/Tasks/AzureFunctionV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AzureFunctionV1/Strings/resources.resjson/en-US/resources.resjson index 947de79ddc39..402af926742a 100644 --- a/Tasks/AzureFunctionV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/AzureFunctionV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Invoke Azure Function", - "loc.helpMarkDown": "[More information](https://go.microsoft.com/fwlink/?linkid=870235)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?linkid=870235)", "loc.description": "Invoke an Azure Function", "loc.instanceNameFormat": "Azure Function: $(function)", "loc.group.displayName.completionOptions": "Advanced", diff --git a/Tasks/AzureFunctionV1/Tests/L0.ts b/Tasks/AzureFunctionV1/Tests/L0.ts new file mode 100644 index 000000000000..57c1f7305a49 --- /dev/null +++ b/Tasks/AzureFunctionV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureFunctionV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureFunctionV1/Tests/package.json b/Tasks/AzureFunctionV1/Tests/package.json new file mode 100644 index 000000000000..a030dee4a5de --- /dev/null +++ b/Tasks/AzureFunctionV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "azure-function-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure Function V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/AzureIoTEdgeV2/Tests/L0.ts b/Tasks/AzureIoTEdgeV2/Tests/L0.ts new file mode 100644 index 000000000000..fc42e447226e --- /dev/null +++ b/Tasks/AzureIoTEdgeV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureIoTEdgeV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureIoTEdgeV2/Tests/package-lock.json b/Tasks/AzureIoTEdgeV2/Tests/package-lock.json new file mode 100644 index 000000000000..4ba6a5d07d81 --- /dev/null +++ b/Tasks/AzureIoTEdgeV2/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "azure-iot-edge-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/AzureIoTEdgeV2/Tests/package.json b/Tasks/AzureIoTEdgeV2/Tests/package.json new file mode 100644 index 000000000000..b7efed41fa0b --- /dev/null +++ b/Tasks/AzureIoTEdgeV2/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "azure-iot-edge-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure IOT Edge V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/AzurePowerShellV4/package-lock.json b/Tasks/AzurePowerShellV4/package-lock.json index 7f55ec2623c6..a37731bf7a22 100644 --- a/Tasks/AzurePowerShellV4/package-lock.json +++ b/Tasks/AzurePowerShellV4/package-lock.json @@ -36,11 +36,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -53,7 +53,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -137,7 +137,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { diff --git a/Tasks/AzureResourceManagerTemplateDeploymentV3/task.json b/Tasks/AzureResourceManagerTemplateDeploymentV3/task.json index 98bc46374acd..921e07a5fdba 100644 --- a/Tasks/AzureResourceManagerTemplateDeploymentV3/task.json +++ b/Tasks/AzureResourceManagerTemplateDeploymentV3/task.json @@ -15,7 +15,7 @@ "version": { "Major": 3, "Minor": 1, - "Patch": 2 + "Patch": 3 }, "preview": "true", "demands": [], @@ -66,7 +66,7 @@ "groupName": "AzureDetails", "helpMarkDown": "Select the Azure Resource Manager service connection having access to the selected deployment scope.", "properties": { - "EndpointFilterRule": "ScopeLevel != AzureMLWorkspace" + "EndpointFilterRule": "ScopeLevel >= deploymentScope" } }, { diff --git a/Tasks/AzureResourceManagerTemplateDeploymentV3/task.loc.json b/Tasks/AzureResourceManagerTemplateDeploymentV3/task.loc.json index c8af452fa9ce..74adfe2c9426 100644 --- a/Tasks/AzureResourceManagerTemplateDeploymentV3/task.loc.json +++ b/Tasks/AzureResourceManagerTemplateDeploymentV3/task.loc.json @@ -15,7 +15,7 @@ "version": { "Major": 3, "Minor": 1, - "Patch": 2 + "Patch": 3 }, "preview": "true", "demands": [], @@ -66,7 +66,7 @@ "groupName": "AzureDetails", "helpMarkDown": "ms-resource:loc.input.help.ConnectedServiceName", "properties": { - "EndpointFilterRule": "ScopeLevel != AzureMLWorkspace" + "EndpointFilterRule": "ScopeLevel >= deploymentScope" } }, { diff --git a/Tasks/AzureWebAppV1/Tests/L0.ts b/Tasks/AzureWebAppV1/Tests/L0.ts new file mode 100644 index 000000000000..c1834b464974 --- /dev/null +++ b/Tasks/AzureWebAppV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('AzureWebAppV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/AzureWebAppV1/Tests/package-lock.json b/Tasks/AzureWebAppV1/Tests/package-lock.json new file mode 100644 index 000000000000..1129ac194003 --- /dev/null +++ b/Tasks/AzureWebAppV1/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "azure-web-app-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/AzureWebAppV1/Tests/package.json b/Tasks/AzureWebAppV1/Tests/package.json new file mode 100644 index 000000000000..cdf02e6563a6 --- /dev/null +++ b/Tasks/AzureWebAppV1/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "azure-web-app-tests", + "version": "1.0.0", + "description": "Azure Pipelines Azure Web App V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/AzureWebAppV1/package-lock.json b/Tasks/AzureWebAppV1/package-lock.json index d12c9fad6a71..7084233de27b 100644 --- a/Tasks/AzureWebAppV1/package-lock.json +++ b/Tasks/AzureWebAppV1/package-lock.json @@ -25,9 +25,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -332,9 +332,9 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", diff --git a/Tasks/BatchScriptV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/BatchScriptV1/Strings/resources.resjson/en-US/resources.resjson index 4fce0817deb3..90eb01089927 100644 --- a/Tasks/BatchScriptV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/BatchScriptV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Batch script", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613733)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613733).\n\nPlease note: this task is not compatible with Windows containers. If you need to run a batch script on a Windows container, use the [CmdLine task](https://go.microsoft.com/fwlink/?LinkID=613735) instead.", "loc.description": "Run a Windows command or batch script and optionally allow it to change the environment", "loc.instanceNameFormat": "Run script $(filename)", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/BatchScriptV1/task.json b/Tasks/BatchScriptV1/task.json index 3510122e9865..f72d533929e1 100644 --- a/Tasks/BatchScriptV1/task.json +++ b/Tasks/BatchScriptV1/task.json @@ -4,7 +4,7 @@ "friendlyName": "Batch script", "description": "Run a Windows command or batch script and optionally allow it to change the environment", "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/batch-script", - "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613733)", + "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613733).\n\nPlease note: this task is not compatible with Windows containers. If you need to run a batch script on a Windows container, use the [CmdLine task](https://go.microsoft.com/fwlink/?LinkID=613735) instead.", "category": "Utility", "visibility": [ "Build", @@ -18,7 +18,7 @@ "version": { "Major": 1, "Minor": 1, - "Patch": 7 + "Patch": 8 }, "demands": [ "Cmd" diff --git a/Tasks/BatchScriptV1/task.loc.json b/Tasks/BatchScriptV1/task.loc.json index 5d2017746100..e2c238bd6c99 100644 --- a/Tasks/BatchScriptV1/task.loc.json +++ b/Tasks/BatchScriptV1/task.loc.json @@ -18,7 +18,7 @@ "version": { "Major": 1, "Minor": 1, - "Patch": 7 + "Patch": 8 }, "demands": [ "Cmd" diff --git a/Tasks/CMakeV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/CMakeV1/Strings/resources.resjson/en-US/resources.resjson index f3052f2e1092..a223ccbd3733 100644 --- a/Tasks/CMakeV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/CMakeV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "CMake", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613719)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613719)", "loc.description": "Build with the CMake cross-platform build system", "loc.instanceNameFormat": "CMake $(cmakeArgs)", "loc.input.label.cwd": "Working Directory", diff --git a/Tasks/CMakeV1/Tests/L0.ts b/Tasks/CMakeV1/Tests/L0.ts new file mode 100644 index 000000000000..0859cba1df15 --- /dev/null +++ b/Tasks/CMakeV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('CMakeV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/CMakeV1/Tests/package-lock.json b/Tasks/CMakeV1/Tests/package-lock.json new file mode 100644 index 000000000000..161d7c3dff39 --- /dev/null +++ b/Tasks/CMakeV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "cmake-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/CMakeV1/Tests/package.json b/Tasks/CMakeV1/Tests/package.json new file mode 100644 index 000000000000..1a69bea316d5 --- /dev/null +++ b/Tasks/CMakeV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "cmake-tests", + "version": "1.0.0", + "description": "Azure Pipelines CMake V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/CUrlUploaderV2/Tests/L0.ts b/Tasks/CUrlUploaderV2/Tests/L0.ts new file mode 100644 index 000000000000..334437c11029 --- /dev/null +++ b/Tasks/CUrlUploaderV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('CUrlUploaderV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/CUrlUploaderV2/Tests/package-lock.json b/Tasks/CUrlUploaderV2/Tests/package-lock.json new file mode 100644 index 000000000000..2249be616e7d --- /dev/null +++ b/Tasks/CUrlUploaderV2/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "curl-uploader-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/CUrlUploaderV2/Tests/package.json b/Tasks/CUrlUploaderV2/Tests/package.json new file mode 100644 index 000000000000..c2e3f9a1554e --- /dev/null +++ b/Tasks/CUrlUploaderV2/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "curl-uploader-tests", + "version": "1.0.0", + "description": "Azure Pipelines Curl Uploader V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/ChefKnifeV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/ChefKnifeV1/Strings/resources.resjson/en-US/resources.resjson index 51476eaca0b8..48c254620bf0 100644 --- a/Tasks/ChefKnifeV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/ChefKnifeV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Chef Knife", - "loc.helpMarkDown": "[More Information](https://aka.ms/chef-knife-readme)", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/chef-knife-readme)", "loc.description": "Run scripts with Knife commands on your Chef workstation", "loc.instanceNameFormat": "Chef Knife script: $(ScriptPath)", "loc.input.label.ConnectedServiceName": "Chef Subscription", diff --git a/Tasks/ChefKnifeV1/Tests/L0.ts b/Tasks/ChefKnifeV1/Tests/L0.ts new file mode 100644 index 000000000000..9918fe025af2 --- /dev/null +++ b/Tasks/ChefKnifeV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('ChefKnifeV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/ChefKnifeV1/tsconfig.json b/Tasks/ChefKnifeV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/ChefKnifeV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/ChefV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/ChefV1/Strings/resources.resjson/en-US/resources.resjson index 7affeeb51de7..7bcd5e3067c9 100644 --- a/Tasks/ChefV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/ChefV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Chef", - "loc.helpMarkDown": "[More Information](https://aka.ms/chef-readme)", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/chef-readme)", "loc.description": "Deploy to Chef environments by editing environment attributes", "loc.instanceNameFormat": "Deploy to chef by editing environment attributes of Chef subscription $(ChefServer)", "loc.input.label.connectedServiceName": "Chef Service Connection", diff --git a/Tasks/ChefV1/Tests/L0.ts b/Tasks/ChefV1/Tests/L0.ts new file mode 100644 index 000000000000..22d1beb47b76 --- /dev/null +++ b/Tasks/ChefV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('ChefV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/ChefV1/tsconfig.json b/Tasks/ChefV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/ChefV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/CocoaPodsV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/CocoaPodsV0/Strings/resources.resjson/en-US/resources.resjson index 0b8dbfb56145..3f86578fd7d1 100644 --- a/Tasks/CocoaPodsV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/CocoaPodsV0/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "CocoaPods", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613745)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613745)", "loc.description": "Install CocoaPods dependencies for Swift and Objective-C Cocoa projects", "loc.instanceNameFormat": "pod install", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/CocoaPodsV0/Tests/L0.ts b/Tasks/CocoaPodsV0/Tests/L0.ts new file mode 100644 index 000000000000..f05b582be132 --- /dev/null +++ b/Tasks/CocoaPodsV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('CocoaPodsV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/CocoaPodsV0/Tests/package-lock.json b/Tasks/CocoaPodsV0/Tests/package-lock.json new file mode 100644 index 000000000000..25b7cb983955 --- /dev/null +++ b/Tasks/CocoaPodsV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "cocoa-pods-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/CocoaPodsV0/Tests/package.json b/Tasks/CocoaPodsV0/Tests/package.json new file mode 100644 index 000000000000..b31852dd557c --- /dev/null +++ b/Tasks/CocoaPodsV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "cocoa-pods-tests", + "version": "1.0.0", + "description": "Azure Pipelines Cocoa Pods V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/Common/MSBuildHelpers/ArgumentFunctions.ps1 b/Tasks/Common/MSBuildHelpers/ArgumentFunctions.ps1 index 0febe9524b2f..298817920b4c 100644 --- a/Tasks/Common/MSBuildHelpers/ArgumentFunctions.ps1 +++ b/Tasks/Common/MSBuildHelpers/ArgumentFunctions.ps1 @@ -10,10 +10,12 @@ function Format-MSBuildArguments { Trace-VstsEnteringInvocation $MyInvocation try { if ($Platform) { + Test-MSBuildParam $Platform 'Platform' $MSBuildArguments = "$MSBuildArguments /p:platform=`"$Platform`"" } if ($Configuration) { + Test-MSBuildParam $Configuration 'Configuration' $MSBuildArguments = "$MSBuildArguments /p:configuration=`"$Configuration`"" } @@ -34,4 +36,12 @@ function Format-MSBuildArguments { } finally { Trace-VstsLeavingInvocation $MyInvocation } +} + +function Test-MSBuildParam ([string]$msbuildParam, [string]$parameterName) +{ + if ($msBuildParam -match '[<>*|:\/&%".#?]') + { + throw "The value of MSBuild parameter '$parameterName' ($msBuildParam) contains an invalid character. The value of $parameterName may not contain any of the following characters: < > * | : \ / & % `" . # ?" + } } \ No newline at end of file diff --git a/Tasks/Common/MSBuildHelpers/Tests/Format-MSBuildArguments.RejectsInvalidCharacters.ps1 b/Tasks/Common/MSBuildHelpers/Tests/Format-MSBuildArguments.RejectsInvalidCharacters.ps1 new file mode 100644 index 000000000000..9a45a4fd1d47 --- /dev/null +++ b/Tasks/Common/MSBuildHelpers/Tests/Format-MSBuildArguments.RejectsInvalidCharacters.ps1 @@ -0,0 +1,82 @@ +[CmdletBinding()] +param() + +# Arrange. +. $PSScriptRoot\..\..\..\..\Tests\lib\Initialize-Test.ps1 +Microsoft.PowerShell.Core\Import-Module $PSScriptRoot\.. + +$acceptPlatformCases = 'x86', 'x64', 'Any CPU', 'NewPlatform' + +Register-Mock Get-VstsTaskVariable { '' } -- -Name AZURE_HTTP_USER_AGENT + +# Act. +foreach ($acceptPlatformCase in $acceptPlatformCases) +{ + $accepted = $false + try { + $result = Format-MSBuildArguments -Platform $acceptPlatformCase + $accepted = $true + } + catch { + Write-Host 'Unexpected Exception:' + Write-Host $_ + } + + #Assert. + Assert-AreEqual $true $accepted "Expected the following Platform to be accepted: $acceptPlatformCase" +} + +# Arrange. +$acceptConfigurationCases = 'Release', 'Debug', 'DEBUG', 'Any Other Text Not Containing Forbidden Punctuation' + +# Act. +foreach ($acceptConfigurationCase in $acceptConfigurationCases) +{ + $accepted = $false + try { + $result = Format-MSBuildArguments -Configuration $acceptConfigurationCase + $accepted = $true + } + catch { + Write-Host 'Unexpected Exception:' + Write-Host $_ + } + + # Assert. + Assert-AreEqual $true $accepted "Expected the following Configuration to be accepted: $acceptConfigurationCase" +} + +# Arrange. +$rejectCases = 'Release; /Logger:"\\networkshare\\NotActuallyALogger.dll', '', 'ASTER*SKS', 'AMPER&AND', 'PER%ENT', '"double quotes"', 'periods.', '#HASHTAGS', 'question marks?' + +# Act. +foreach ($rejectCase in $rejectCases) +{ + $accepted = $false + try { + $result = Format-MSBuildArguments -Platform $rejectCase + $accepted = $true + } + catch { + + } + + # Assert. + Assert-AreEqual $false $accepted "Expected the following Platform to be rejected: $rejectCase" +} + +# Act. +foreach ($rejectCase in $rejectCases) +{ + $accepted = $false + try { + $result = Format-MSBuildArguments -Configuration $rejectCase + $accepted = $true + } + catch { + + } + + # Assert. + Assert-AreEqual $false $accepted "Expected the following Configuration to be rejected: $rejectCase" +} \ No newline at end of file diff --git a/Tasks/Common/MSBuildHelpers/Tests/L0.ts b/Tasks/Common/MSBuildHelpers/Tests/L0.ts index b790b4b73a4f..7a15d91a2456 100644 --- a/Tasks/Common/MSBuildHelpers/Tests/L0.ts +++ b/Tasks/Common/MSBuildHelpers/Tests/L0.ts @@ -42,6 +42,9 @@ describe('Common-MSBuildHelpers Suite', function () { it('(Format-MSBuildArguments) adds VS version property', (done) => { psr.run(path.join(__dirname, 'Format-MSBuildArguments.AddsVSVersionProperty.ps1'), done); }) + it('(Format-MSBuildArguments) rejects invalid characters', (done) => { + psr.run(path.join(__dirname, 'Format-MSBuildArguments.RejectsInvalidCharacters.ps1'), done); + }) it('(Get-SolutionFiles) resolves wildcards', (done) => { psr.run(path.join(__dirname, 'Get-SolutionFiles.ResolvesWildcards.ps1'), done); }) diff --git a/Tasks/Common/docker-common-v2/containerconnection.ts b/Tasks/Common/docker-common-v2/containerconnection.ts index 4c11f74984e2..b00e93ef89f5 100644 --- a/Tasks/Common/docker-common-v2/containerconnection.ts +++ b/Tasks/Common/docker-common-v2/containerconnection.ts @@ -22,14 +22,8 @@ export default class ContainerConnection { private configurationDirPath: string; private oldDockerConfigContent: string; - constructor() { - if(process.env["RUNNING_ON"] == "KUBERNETES") { - this.dockerPath = tl.which("img", true); - } - else { - this.dockerPath = tl.which("docker", true); - } - + constructor(isDockerRequired: boolean = true) { + this.dockerPath = tl.which("docker", isDockerRequired); } public createCommand(): tr.ToolRunner { diff --git a/Tasks/Common/docker-common-v2/dockercommandutils.ts b/Tasks/Common/docker-common-v2/dockercommandutils.ts index 25bf5242420d..c040f12b1fd3 100644 --- a/Tasks/Common/docker-common-v2/dockercommandutils.ts +++ b/Tasks/Common/docker-common-v2/dockercommandutils.ts @@ -10,8 +10,8 @@ import * as crypto from "crypto"; const matchPatternForSize = new RegExp(/[\d\.]+/); const orgUrl = tl.getVariable('System.TeamFoundationCollectionUri'); const buildString = "build"; -const hostType = tl.getVariable("System.HostType").toLowerCase(); -const isBuild = hostType === buildString; +const hostType = tl.getVariable("System.HostType"); +const isBuild = hostType && hostType.toLowerCase() === buildString; const matchPatternForDigest = new RegExp(/sha256\:(.+)/); export function build(connection: ContainerConnection, dockerFile: string, commandArguments: string, labelArguments: string[], tagArguments: string[], onCommandOut: (output) => any): any { @@ -91,7 +91,7 @@ export function getCreatorEmail(): string { const schedule = "schedule"; const buildReason = tl.getVariable("Build.Reason"); let userEmail: string = ""; - if (isBuild && (!buildReason || (buildReason && tl.getVariable("Build.Reason").toLowerCase() !== schedule))) { + if (isBuild && (!buildReason || buildReason.toLowerCase() !== schedule)) { userEmail = tl.getVariable("Build.RequestedForEmail"); } else { diff --git a/Tasks/Common/packaging-common/npm/npmutil.ts b/Tasks/Common/packaging-common/npm/npmutil.ts index 5f373e42253a..e0289f66a026 100644 --- a/Tasks/Common/packaging-common/npm/npmutil.ts +++ b/Tasks/Common/packaging-common/npm/npmutil.ts @@ -17,7 +17,7 @@ export function appendToNpmrc(npmrc: string, data: string): void { export async function getLocalRegistries(packagingUrls: string[], npmrc: string): Promise { const collectionHosts = packagingUrls.map((pkgUrl: string) => { const parsedUrl = url.parse(pkgUrl); - if (parsedUrl) { + if (parsedUrl && parsedUrl.host) { return parsedUrl.host.toLowerCase(); } return undefined; @@ -26,8 +26,11 @@ export async function getLocalRegistries(packagingUrls: string[], npmrc: string) const registries = NpmrcParser.GetRegistries(npmrc, /* saveNormalizedRegistries */ true); const localRegistries = registries.filter(registry => { - const registryHost = url.parse(registry).host; - return collectionHosts.indexOf(registryHost.toLowerCase()) >= 0; + const registryUrl = url.parse(registry); + if(registryUrl && registryUrl.host) { + return collectionHosts.indexOf(registryUrl.host.toLowerCase()) >= 0; + } + return undefined; }); tl.debug(tl.loc('FoundLocalRegistries', localRegistries.length)); diff --git a/Tasks/ContainerBuildV0/Tests/L0.ts b/Tasks/ContainerBuildV0/Tests/L0.ts index ab3d1f077d77..da36c9b2740c 100644 --- a/Tasks/ContainerBuildV0/Tests/L0.ts +++ b/Tasks/ContainerBuildV0/Tests/L0.ts @@ -40,6 +40,7 @@ describe("ContainerBuildV0 Suite", function () { delete process.env['BUILD_REPOSITORY_NAME']; delete process.env['RELEASE_DEFINITIONNAME']; delete process.env['RELEASE_RELEASEWEBURL']; + delete process.env['RUNNING_ON']; }); // Docker build tests begin diff --git a/Tasks/ContainerBuildV0/src/buildcontainer.ts b/Tasks/ContainerBuildV0/src/buildcontainer.ts index 8c35966b6699..e1d073b09f5c 100644 --- a/Tasks/ContainerBuildV0/src/buildcontainer.ts +++ b/Tasks/ContainerBuildV0/src/buildcontainer.ts @@ -10,11 +10,11 @@ tl.setResourcePath(path.join(__dirname, '..', 'task.json')); async function buildContainer() { if (process.env["RUNNING_ON"] == "KUBERNETES") { tl.debug("Building image using buildctl"); - buildctl.buildctlBuildAndPush(); + return buildctl.buildctlBuildAndPush(); } else { tl.debug("Building image using docker"); - docker.dockerBuildAndPush(); + return docker.dockerBuildAndPush(); } } diff --git a/Tasks/ContainerBuildV0/src/buildctl.ts b/Tasks/ContainerBuildV0/src/buildctl.ts index d899f180acd3..3dc49895f7a1 100644 --- a/Tasks/ContainerBuildV0/src/buildctl.ts +++ b/Tasks/ContainerBuildV0/src/buildctl.ts @@ -49,7 +49,8 @@ export async function buildctlBuildAndPush() { let registryAuthenticationToken: RegistryAuthenticationToken = getDockerRegistryEndpointAuthenticationToken(endpointId); // Connect to any specified container registry - let connection = new ContainerConnection(); + var isPoolProviderContext = process.env["RUNNING_ON"] == "KUBERNETES"; + let connection = new ContainerConnection(!isPoolProviderContext); connection.open(null, registryAuthenticationToken, true, false); let repositoryName = tl.getInput("repository"); if (!repositoryName) { @@ -106,10 +107,14 @@ export async function buildctlBuildAndPush() { buildctlTool.arg('--exporter=image'); buildctlTool.arg(`--exporter-opt=name=${imageNameandTag}`); buildctlTool.arg('--exporter-opt=push=true'); - buildctlTool.exec(); + buildctlTool.exec().then(() => {}).catch((error) => { + throw new Error(error.message); + }); } else { // only build the image - await buildctlTool.exec(); + await buildctlTool.exec().then(() => {}).catch((error) => { + throw new Error(error.message); + }); } } \ No newline at end of file diff --git a/Tasks/ContainerBuildV0/src/docker.ts b/Tasks/ContainerBuildV0/src/docker.ts index f6c989f8488e..1858bbf42324 100644 --- a/Tasks/ContainerBuildV0/src/docker.ts +++ b/Tasks/ContainerBuildV0/src/docker.ts @@ -16,10 +16,14 @@ export async function dockerBuildAndPush() { /* tslint:disable:no-var-requires */ let commandImplementation = require("./dockerbuild"); - await commandImplementation.runBuild(connection) + await commandImplementation.runBuild(connection).then(() => {}).catch((error) => { + throw new Error(error.message); + }); if (tl.getInput("dockerRegistryServiceConnection")) { commandImplementation = require("./dockerpush") - await commandImplementation.run(connection) + await commandImplementation.run(connection).then(() => {}).catch((error) => { + throw new Error(error.message); + }); } } diff --git a/Tasks/ContainerBuildV0/src/utils.ts b/Tasks/ContainerBuildV0/src/utils.ts index f4e2de549a6c..f4acd1628c5f 100644 --- a/Tasks/ContainerBuildV0/src/utils.ts +++ b/Tasks/ContainerBuildV0/src/utils.ts @@ -100,34 +100,38 @@ export async function getServiceDetails() { }; var serviceResponse = kubectlTool.execSync(executionOption); - if (serviceResponse && serviceResponse.stdout) { - namespace = JSON.parse(serviceResponse.stdout).metadata.namespace ? JSON.parse(serviceResponse.stdout).metadata.namespace : namespace; - port = JSON.parse(serviceResponse.stdout).spec.ports[0].port ? JSON.parse(serviceResponse.stdout).spec.ports[0].port : port; - clusteruri = JSON.parse(serviceResponse.stdout).status.loadBalancer.ingress[0].ip ? JSON.parse(serviceResponse.stdout).status.loadBalancer.ingress[0].ip : clusteruri; + if (serviceResponse && serviceResponse.stderr) { + throw new Error(serviceResponse.stderr); + } + else if (serviceResponse && serviceResponse.stdout) { + var responseOutput = JSON.parse(serviceResponse.stdout); + namespace = responseOutput.metadata.namespace ? responseOutput.metadata.namespace : namespace; + port = responseOutput.spec.ports[0].port ? responseOutput.spec.ports[0].port : port; + clusteruri = responseOutput.status.loadBalancer.ingress[0].ip ? responseOutput.status.loadBalancer.ingress[0].ip : clusteruri; } } export async function getBuildKitPod() { - await getServiceDetails(); + await getServiceDetails(); - let request = new webclient.WebRequest(); - let headers = { - "key": tl.getVariable('Build.Repository.Name') + tl.getInput("Dockerfile", true) - }; - let webRequestOptions: webclient.WebRequestOptions = { retriableErrorCodes: [], retriableStatusCodes: [], retryCount: 1, retryIntervalInSeconds: 5, retryRequestTimedout: true }; + let request = new webclient.WebRequest(); + let headers = { + "key": tl.getVariable('Build.Repository.Name') + tl.getInput("Dockerfile", true) + }; + let webRequestOptions: webclient.WebRequestOptions = { retriableErrorCodes: [], retriableStatusCodes: [], retryCount: 1, retryIntervalInSeconds: 5, retryRequestTimedout: true }; - request.uri = `http://${clusteruri}:${port}/buildPod`; - request.headers = headers - request.method = "GET"; + request.uri = `http://${clusteruri}:${port}/buildPod`; + request.headers = headers + request.method = "GET"; - var response = await webclient.sendRequest(request, webRequestOptions); - var podname = response.body.Message; + var response = await webclient.sendRequest(request, webRequestOptions); + var podname = response.body.Message; - tl.debug("Podname " + podname); + tl.debug("Podname " + podname); - // set the environment variable - process.env["BUILDKIT_HOST"] = "kube-pod://" + podname + "?namespace=" + namespace; + // set the environment variable + process.env["BUILDKIT_HOST"] = "kube-pod://" + podname + "?namespace=" + namespace; } function findBuildctl(rootFolder: string) { diff --git a/Tasks/ContainerBuildV0/task.json b/Tasks/ContainerBuildV0/task.json index ea90766701ce..2c8bcb07a7b8 100644 --- a/Tasks/ContainerBuildV0/task.json +++ b/Tasks/ContainerBuildV0/task.json @@ -13,8 +13,8 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, - "Patch": 3 + "Minor": 161, + "Patch": 0 }, "demands": [], "satisfies": [ @@ -47,7 +47,7 @@ "name": "Dockerfile", "type": "filePath", "label": "Dockerfile", - "defaultValue": ".", + "defaultValue": "Dockerfile", "required": true, "helpMarkDown": "Path to Dockerfile." }, diff --git a/Tasks/ContainerBuildV0/task.loc.json b/Tasks/ContainerBuildV0/task.loc.json index 8032e059f987..e64235e6bd36 100644 --- a/Tasks/ContainerBuildV0/task.loc.json +++ b/Tasks/ContainerBuildV0/task.loc.json @@ -13,8 +13,8 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, - "Patch": 3 + "Minor": 161, + "Patch": 0 }, "demands": [], "satisfies": [ @@ -47,7 +47,7 @@ "name": "Dockerfile", "type": "filePath", "label": "ms-resource:loc.input.label.Dockerfile", - "defaultValue": ".", + "defaultValue": "Dockerfile", "required": true, "helpMarkDown": "ms-resource:loc.input.help.Dockerfile" }, diff --git a/Tasks/ContainerStructureTestV0/Tests/L0.ts b/Tasks/ContainerStructureTestV0/Tests/L0.ts new file mode 100644 index 000000000000..bc2355fbbb05 --- /dev/null +++ b/Tasks/ContainerStructureTestV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('ContainerStructureTestV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/ContainerStructureTestV0/Tests/package-lock.json b/Tasks/ContainerStructureTestV0/Tests/package-lock.json new file mode 100644 index 000000000000..dd25fcf6e180 --- /dev/null +++ b/Tasks/ContainerStructureTestV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "container-structure-test-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/ContainerStructureTestV0/Tests/package.json b/Tasks/ContainerStructureTestV0/Tests/package.json new file mode 100644 index 000000000000..e25741fbb7e6 --- /dev/null +++ b/Tasks/ContainerStructureTestV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "container-structure-test-tests", + "version": "1.0.0", + "description": "Azure Pipelines Container Structure Test V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/ContainerStructureTestV0/package-lock.json b/Tasks/ContainerStructureTestV0/package-lock.json index 722b40dfe5c9..4510159317c1 100644 --- a/Tasks/ContainerStructureTestV0/package-lock.json +++ b/Tasks/ContainerStructureTestV0/package-lock.json @@ -20,9 +20,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -292,9 +292,9 @@ }, "dependencies": { "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", diff --git a/Tasks/ContainerStructureTestV0/task.json b/Tasks/ContainerStructureTestV0/task.json index 5c1c8c3e3062..b5ca08fd373c 100644 --- a/Tasks/ContainerStructureTestV0/task.json +++ b/Tasks/ContainerStructureTestV0/task.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 1, - "Patch": 7 + "Patch": 9 }, "preview": true, "demands": [], diff --git a/Tasks/ContainerStructureTestV0/task.loc.json b/Tasks/ContainerStructureTestV0/task.loc.json index e0620be38314..43942f7aff8a 100644 --- a/Tasks/ContainerStructureTestV0/task.loc.json +++ b/Tasks/ContainerStructureTestV0/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 1, - "Patch": 7 + "Patch": 9 }, "preview": true, "demands": [], diff --git a/Tasks/CopyFilesOverSSHV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/CopyFilesOverSSHV0/Strings/resources.resjson/en-US/resources.resjson index 566c1755bd79..93d0990c8961 100644 --- a/Tasks/CopyFilesOverSSHV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/CopyFilesOverSSHV0/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { - "loc.friendlyName": "Copy files Over SSH", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkId=821894)", + "loc.friendlyName": "Copy files over SSH", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkId=821894)", "loc.description": "Copy files or build artifacts to a remote machine over SSH", "loc.instanceNameFormat": "Securely copy files to the remote machine", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/CopyFilesOverSSHV0/Tests/L0.ts b/Tasks/CopyFilesOverSSHV0/Tests/L0.ts new file mode 100644 index 000000000000..6cfb9d66735f --- /dev/null +++ b/Tasks/CopyFilesOverSSHV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('CopyFilesOverSSHV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/CopyFilesOverSSHV0/Tests/package-lock.json b/Tasks/CopyFilesOverSSHV0/Tests/package-lock.json new file mode 100644 index 000000000000..ba6519c9013a --- /dev/null +++ b/Tasks/CopyFilesOverSSHV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "copy-files-over-ssh-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/CopyFilesOverSSHV0/Tests/package.json b/Tasks/CopyFilesOverSSHV0/Tests/package.json new file mode 100644 index 000000000000..2418be1b9544 --- /dev/null +++ b/Tasks/CopyFilesOverSSHV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "copy-files-over-ssh-tests", + "version": "1.0.0", + "description": "Azure Pipelines Copy Files Over SSH V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DecryptFileV1/Tests/L0.ts b/Tasks/DecryptFileV1/Tests/L0.ts new file mode 100644 index 000000000000..55c1bc93b7d7 --- /dev/null +++ b/Tasks/DecryptFileV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DecryptFileV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DecryptFileV1/Tests/package-lock.json b/Tasks/DecryptFileV1/Tests/package-lock.json new file mode 100644 index 000000000000..3063ff7186f4 --- /dev/null +++ b/Tasks/DecryptFileV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "decrypt-file-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DecryptFileV1/Tests/package.json b/Tasks/DecryptFileV1/Tests/package.json new file mode 100644 index 000000000000..28f03b6fd07b --- /dev/null +++ b/Tasks/DecryptFileV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "decrypt-file-tests", + "version": "1.0.0", + "description": "Azure Pipelines Decrypt File V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DockerComposeV0/task.json b/Tasks/DockerComposeV0/task.json index c14e15e52cd9..d46fb8574323 100644 --- a/Tasks/DockerComposeV0/task.json +++ b/Tasks/DockerComposeV0/task.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 2 + "Patch": 4 }, "demands": [], "preview": "false", diff --git a/Tasks/DockerComposeV0/task.loc.json b/Tasks/DockerComposeV0/task.loc.json index 6a03c74bc1c9..b9f04c5fd872 100644 --- a/Tasks/DockerComposeV0/task.loc.json +++ b/Tasks/DockerComposeV0/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 2 + "Patch": 4 }, "demands": [], "preview": "false", diff --git a/Tasks/DockerInstallerV0/Tests/L0.ts b/Tasks/DockerInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..cde7848d7783 --- /dev/null +++ b/Tasks/DockerInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DockerInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DockerInstallerV0/Tests/package-lock.json b/Tasks/DockerInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..aafc57689413 --- /dev/null +++ b/Tasks/DockerInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "docker-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DockerInstallerV0/Tests/package.json b/Tasks/DockerInstallerV0/Tests/package.json new file mode 100644 index 000000000000..abae12ea49f7 --- /dev/null +++ b/Tasks/DockerInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "docker-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Docker Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DockerInstallerV0/package-lock.json b/Tasks/DockerInstallerV0/package-lock.json index ad716446d301..ab69a1ce0f8a 100644 --- a/Tasks/DockerInstallerV0/package-lock.json +++ b/Tasks/DockerInstallerV0/package-lock.json @@ -22,7 +22,7 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", "requires": { - "@types/node": "6.14.2" + "@types/node": "*" } }, "azure-pipelines-task-lib": { @@ -31,11 +31,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.6.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "azure-pipelines-tool-lib": { @@ -43,13 +43,13 @@ "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-0.11.0.tgz", "integrity": "sha512-Bg3usPtOs/YvM5V9dOEwxvsructz/BTsO5mVgLQ013kJsQN9DJrTjZMAgxxdaeW1H8KPHMz/40ix1T7XZ++VCw==", "requires": { - "@types/semver": "5.5.0", - "@types/uuid": "3.4.4", - "azure-pipelines-task-lib": "2.8.0", - "semver": "5.6.0", - "semver-compare": "1.0.0", + "@types/semver": "^5.3.0", + "@types/uuid": "^3.0.1", + "azure-pipelines-task-lib": "^2.7.1", + "semver": "^5.3.0", + "semver-compare": "^1.0.0", "typed-rest-client": "1.0.9", - "uuid": "3.3.2" + "uuid": "^3.0.1" } }, "balanced-match": { @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -76,7 +76,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { diff --git a/Tasks/DockerV2/Tests/L0.ts b/Tasks/DockerV2/Tests/L0.ts index dbd5ca6f7498..22d58065cea7 100644 --- a/Tasks/DockerV2/Tests/L0.ts +++ b/Tasks/DockerV2/Tests/L0.ts @@ -240,9 +240,9 @@ describe("DockerV2 Suite", function () { console.log(tr.stderr); done(); }); - // Docker build tests end + // // Docker build tests end - // Docker push tests begin + // // Docker push tests begin it('Runs successfully for docker push', (done:MochaDone) => { let tp = path.join(__dirname, 'TestSetup.js'); process.env[shared.TestEnvVars.containerRegistry] = "dockerhubendpoint"; @@ -374,9 +374,9 @@ describe("DockerV2 Suite", function () { console.log(tr.stderr); done(); }); - // Docker push tests end + // // Docker push tests end - // Docker buildAndPush tests begin + // // Docker buildAndPush tests begin it('Runs successfully for docker buildAndPush', (done:MochaDone) => { let tp = path.join(__dirname, 'TestSetup.js'); process.env[shared.TestEnvVars.containerRegistry] = "dockerhubendpoint"; @@ -469,9 +469,9 @@ describe("DockerV2 Suite", function () { console.log(tr.stderr); done(); }); - // Docker buildAndPush tests end + // // Docker buildAndPush tests end - // Docker general command tests begin + // // Docker general command tests begin it('Runs successfully for docker images', (done:MochaDone) => { let tp = path.join(__dirname, 'TestSetup.js'); process.env[shared.TestEnvVars.command] = shared.CommandTypes.images; @@ -581,21 +581,21 @@ describe("DockerV2 Suite", function () { done(); }); - it("Runs successfully for docker build selected labels when addPipelineData is false", (done: MochaDone) => { - let tp = path.join(__dirname, 'TestSetup.js'); - process.env[shared.TestEnvVars.containerRegistry] = "dockerhubendpoint"; - process.env[shared.TestEnvVars.repository] = "testuser/testrepo"; - process.env[shared.TestEnvVars.command] = shared.CommandTypes.build; - process.env[shared.TestEnvVars.addPipelineData] = "false"; - let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp); - tr.run(); + // it("Runs successfully for docker build selected labels when addPipelineData is false", (done: MochaDone) => { + // let tp = path.join(__dirname, 'TestSetup.js'); + // process.env[shared.TestEnvVars.containerRegistry] = "dockerhubendpoint"; + // process.env[shared.TestEnvVars.repository] = "testuser/testrepo"; + // process.env[shared.TestEnvVars.command] = shared.CommandTypes.build; + // process.env[shared.TestEnvVars.addPipelineData] = "false"; + // let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp); + // tr.run(); - assert(tr.invokedToolCount == 1, 'should have invoked tool one time. actual: ' + tr.invokedToolCount); - assert(tr.stderr.length == 0 || tr.errorIssues.length, 'should not have written to stderr'); - assert(tr.succeeded, 'task should have succeeded'); - assert(tr.stdout.indexOf(`[command]docker build -f ${shared.formatPath("a/w/Dockerfile")} ${shared.DockerCommandArgs.BuildLabelsWithAddPipelineFalse} -t testuser/testrepo:11 ${shared.formatPath("a/w")}`) != -1, "docker build should run with expected arguments"); - done(); - }); + // assert(tr.invokedToolCount == 1, 'should have invoked tool one time. actual: ' + tr.invokedToolCount); + // assert(tr.stderr.length == 0 || tr.errorIssues.length, 'should not have written to stderr'); + // assert(tr.succeeded, 'task should have succeeded'); + // assert(tr.stdout.indexOf(`[command]docker build -f ${shared.formatPath("a/w/Dockerfile")} ${shared.DockerCommandArgs.BuildLabelsWithAddPipelineFalse} -t testuser/testrepo:11 ${shared.formatPath("a/w")}`) != -1, "docker build should run with expected arguments"); + // done(); + // }); function setEnvironmentVariables() : void { process.env['SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'] = 'https://mock.ms/mock/'; diff --git a/Tasks/DockerV2/task.json b/Tasks/DockerV2/task.json index d728b6e7906f..c62ae2e4566b 100644 --- a/Tasks/DockerV2/task.json +++ b/Tasks/DockerV2/task.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 161, - "Patch": 0 + "Patch": 2 }, "demands": [], "releaseNotes": "Simplified the task YAML by:
 - Removing the Container registry type input
 - Removing complex inputs as they can be passed as arguments to the command.", diff --git a/Tasks/DockerV2/task.loc.json b/Tasks/DockerV2/task.loc.json index 7d17650170e5..913fc367a96f 100644 --- a/Tasks/DockerV2/task.loc.json +++ b/Tasks/DockerV2/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 161, - "Patch": 0 + "Patch": 2 }, "demands": [], "releaseNotes": "ms-resource:loc.releaseNotes", diff --git a/Tasks/DotNetCoreCLIV2/task.json b/Tasks/DotNetCoreCLIV2/task.json index abaef1166161..b9ffdbbf7867 100644 --- a/Tasks/DotNetCoreCLIV2/task.json +++ b/Tasks/DotNetCoreCLIV2/task.json @@ -17,7 +17,7 @@ "demands": [], "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "minimumAgentVersion": "2.115.0", diff --git a/Tasks/DotNetCoreCLIV2/task.loc.json b/Tasks/DotNetCoreCLIV2/task.loc.json index a45dda1faf00..8aa5dd287b71 100644 --- a/Tasks/DotNetCoreCLIV2/task.loc.json +++ b/Tasks/DotNetCoreCLIV2/task.loc.json @@ -17,7 +17,7 @@ "demands": [], "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "minimumAgentVersion": "2.115.0", diff --git a/Tasks/DownloadBuildArtifactsV0/Tests/L0.ts b/Tasks/DownloadBuildArtifactsV0/Tests/L0.ts new file mode 100644 index 000000000000..a1a8caacc2ef --- /dev/null +++ b/Tasks/DownloadBuildArtifactsV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DownloadBuildArtifactsV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DownloadBuildArtifactsV0/Tests/package-lock.json b/Tasks/DownloadBuildArtifactsV0/Tests/package-lock.json new file mode 100644 index 000000000000..203428f42323 --- /dev/null +++ b/Tasks/DownloadBuildArtifactsV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "download-build-artifacts-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DownloadBuildArtifactsV0/Tests/package.json b/Tasks/DownloadBuildArtifactsV0/Tests/package.json new file mode 100644 index 000000000000..8335860daea4 --- /dev/null +++ b/Tasks/DownloadBuildArtifactsV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "download-build-artifacts-tests", + "version": "1.0.0", + "description": "Azure Pipelines Download Build Artifacts V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DownloadFileshareArtifactsV0/Tests/L0.ts b/Tasks/DownloadFileshareArtifactsV0/Tests/L0.ts new file mode 100644 index 000000000000..59c79d966edb --- /dev/null +++ b/Tasks/DownloadFileshareArtifactsV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DownloadFileshareArtifactsV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DownloadFileshareArtifactsV0/Tests/package-lock.json b/Tasks/DownloadFileshareArtifactsV0/Tests/package-lock.json new file mode 100644 index 000000000000..02286d2316e4 --- /dev/null +++ b/Tasks/DownloadFileshareArtifactsV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "download-fileshare-artifacts-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DownloadFileshareArtifactsV0/Tests/package.json b/Tasks/DownloadFileshareArtifactsV0/Tests/package.json new file mode 100644 index 000000000000..2137f488776f --- /dev/null +++ b/Tasks/DownloadFileshareArtifactsV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "download-fileshare-artifacts-tests", + "version": "1.0.0", + "description": "Azure Pipelines Download Fileshare Artifacts V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DownloadFileshareArtifactsV0/package-lock.json b/Tasks/DownloadFileshareArtifactsV0/package-lock.json index ecd37227a49a..27f2fd1e580d 100644 --- a/Tasks/DownloadFileshareArtifactsV0/package-lock.json +++ b/Tasks/DownloadFileshareArtifactsV0/package-lock.json @@ -13,6 +13,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -55,6 +56,29 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, + "azure-pipelines-task-lib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", + "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", + "requires": { + "minimatch": "3.0.4", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -129,12 +153,14 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -148,7 +174,8 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true }, "minimatch": { "version": "3.0.2", @@ -185,7 +212,8 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "optional": true }, "right-align": { "version": "0.1.3", @@ -249,19 +277,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, - "vsts-task-lib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.1.0.tgz", - "integrity": "sha1-w3Gu/yqNmEOIZSNdyfyUcBxATIQ=", - "requires": { - "minimatch": "^3.0.0", - "mockery": "^1.7.0", - "q": "^1.1.2", - "semver": "^5.1.0", - "shelljs": "^0.3.0", - "uuid": "^3.0.1" - } - }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", diff --git a/Tasks/DownloadGitHubReleaseV0/Tests/L0.ts b/Tasks/DownloadGitHubReleaseV0/Tests/L0.ts new file mode 100644 index 000000000000..dad383f1c046 --- /dev/null +++ b/Tasks/DownloadGitHubReleaseV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DownloadGitHubReleaseV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DownloadGitHubReleaseV0/Tests/package-lock.json b/Tasks/DownloadGitHubReleaseV0/Tests/package-lock.json new file mode 100644 index 000000000000..f78bd3ea88f9 --- /dev/null +++ b/Tasks/DownloadGitHubReleaseV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "download-github-release-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DownloadGitHubReleaseV0/Tests/package.json b/Tasks/DownloadGitHubReleaseV0/Tests/package.json new file mode 100644 index 000000000000..f466b736fe02 --- /dev/null +++ b/Tasks/DownloadGitHubReleaseV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "download-github-release-tests", + "version": "1.0.0", + "description": "Azure Pipelines Download GitHub Release V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DownloadGitHubReleaseV0/package-lock.json b/Tasks/DownloadGitHubReleaseV0/package-lock.json index b0450fda63d6..a679d2d740a8 100644 --- a/Tasks/DownloadGitHubReleaseV0/package-lock.json +++ b/Tasks/DownloadGitHubReleaseV0/package-lock.json @@ -12,6 +12,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -44,6 +45,29 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, + "azure-pipelines-task-lib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", + "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", + "requires": { + "minimatch": "3.0.4", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -162,7 +186,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "optional": true }, "json-stringify-safe": { "version": "5.0.1", @@ -173,6 +198,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -191,7 +217,8 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true }, "minimatch": { "version": "3.0.2", @@ -279,7 +306,8 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "optional": true }, "right-align": { "version": "0.1.3", diff --git a/Tasks/DownloadPackageV0/Tests/L0.ts b/Tasks/DownloadPackageV0/Tests/L0.ts new file mode 100644 index 000000000000..60c067e4f27b --- /dev/null +++ b/Tasks/DownloadPackageV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DownloadPackageV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DownloadPackageV0/Tests/package-lock.json b/Tasks/DownloadPackageV0/Tests/package-lock.json new file mode 100644 index 000000000000..8622c33bce52 --- /dev/null +++ b/Tasks/DownloadPackageV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "download-package-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/DownloadPackageV0/Tests/package.json b/Tasks/DownloadPackageV0/Tests/package.json new file mode 100644 index 000000000000..ab2ed2115d21 --- /dev/null +++ b/Tasks/DownloadPackageV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "download-package-tests", + "version": "1.0.0", + "description": "Azure Pipelines Download Package V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/DownloadPackageV0/npm-shrinkwrap.json b/Tasks/DownloadPackageV0/npm-shrinkwrap.json index 00dd22d86659..4fd5c69ff65a 100644 --- a/Tasks/DownloadPackageV0/npm-shrinkwrap.json +++ b/Tasks/DownloadPackageV0/npm-shrinkwrap.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -76,25 +76,13 @@ } }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" - }, - "dependencies": { - "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", - "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" - } - } } }, "azure-pipelines-task-lib": { @@ -216,17 +204,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "isarray": { @@ -248,37 +232,24 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } } }, "minimatch": { @@ -307,14 +278,9 @@ "abbrev": "1" } }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", - "integrity": "sha512-hMXjnMeZwNe9Xahpb0QlyPAvX0ldoYNaIwbxSbVHx0OYG9iHE94sGHJhLLFGZ0+Y4DwX3oMPeta/RZAhk7oqmA==", + "integrity": "sha512-FD0twlxEoNya5rM3H4NXRKboiivqf/mkVek86OTNVr+epl2+cpTLkcVOF98liCw60z7300DOCYk9O6Gxjo7HSg==", "requires": { "@types/ini": "1.3.30", "@types/ltx": "2.8.0", @@ -323,14 +289,14 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" }, "dependencies": { "@types/node": { @@ -372,9 +338,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "string_decoder": { "version": "0.10.31", @@ -410,9 +376,9 @@ "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" }, "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -425,25 +391,13 @@ }, "utility-common": { "version": "file:../../_build/Tasks/Common/utility-common-1.0.2.tgz", - "integrity": "sha512-+LSl4ZiVLTR7ycYatVlMx8/ymQki31Ir5dWnFMXDFR9/Cfzs498t9WnUPp97DDz6U+7A+kllldPYOtWtKHevKg==", + "integrity": "sha512-8RsaYShNVg3JalwyeQ6J7e9zuB6AflqVKIzfqYVA1xn/DJJPFc9s1jEPuqzRLeNTepj4UJvVM5xXL2Bsv6vd7w==", "requires": { "js-yaml": "3.6.1", "semver": "^5.4.1", "vso-node-api": "6.5.0", "vsts-task-lib": "2.6.0", "vsts-task-tool-lib": "0.4.0" - }, - "dependencies": { - "vso-node-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", - "integrity": "sha512-hFjPLMJkq02zF8U+LhZ4airH0ivaiKzGdlNAQlYFB3lWuGH/UANUrl63DVPUQOyGw+7ZNQ+ufM44T6mWN92xyg==", - "requires": { - "tunnel": "0.0.4", - "typed-rest-client": "^0.12.0", - "underscore": "1.8.3" - } - } } }, "uuid": { @@ -452,13 +406,24 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "vso-node-api": { - "version": "6.0.1-preview", - "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.0.1-preview.tgz", - "integrity": "sha1-RBprv5s8aNpiTbAeo1y6jwpMLKs=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", + "integrity": "sha512-hFjPLMJkq02zF8U+LhZ4airH0ivaiKzGdlNAQlYFB3lWuGH/UANUrl63DVPUQOyGw+7ZNQ+ufM44T6mWN92xyg==", "requires": { - "q": "^1.0.1", "tunnel": "0.0.4", - "underscore": "^1.8.3" + "typed-rest-client": "^0.12.0", + "underscore": "1.8.3" + }, + "dependencies": { + "typed-rest-client": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", + "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "requires": { + "tunnel": "0.0.4", + "underscore": "1.8.3" + } + } } }, "vsts-task-lib": { diff --git a/Tasks/DownloadPackageV0/task.json b/Tasks/DownloadPackageV0/task.json index e295a6e0da79..e8815ae83015 100644 --- a/Tasks/DownloadPackageV0/task.json +++ b/Tasks/DownloadPackageV0/task.json @@ -9,7 +9,7 @@ "author": "ms-vscs-rm", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [], diff --git a/Tasks/DownloadPackageV0/task.loc.json b/Tasks/DownloadPackageV0/task.loc.json index 234205699343..e08a39a71558 100644 --- a/Tasks/DownloadPackageV0/task.loc.json +++ b/Tasks/DownloadPackageV0/task.loc.json @@ -9,7 +9,7 @@ "author": "ms-vscs-rm", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [], diff --git a/Tasks/DownloadPackageV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/DownloadPackageV1/Strings/resources.resjson/en-US/resources.resjson index 1023d8f7af6e..6d34acd6944a 100644 --- a/Tasks/DownloadPackageV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/DownloadPackageV1/Strings/resources.resjson/en-US/resources.resjson @@ -31,6 +31,7 @@ "loc.messages.RedirectUrlError": "Unable to get redirect URL with error %.", "loc.messages.UnsupportedArchiveType": "Unsupported archive type: %s", "loc.messages.Error_UnexpectedErrorArtifactToolDownload": "An unexpected error occurred while trying to download the package. Exit code(%s) and error(%s)", + "loc.messages.Info_DownloadingArtifactTool": "Downloading artifact tool from %s", "loc.messages.Info_Downloading": "Downloading package: %s, version: %s using feed id: %s, project: %s", "loc.messages.Info_UsingArtifactToolDownload": "Using artifact tool to download the package" } \ No newline at end of file diff --git a/Tasks/DownloadPackageV1/task.json b/Tasks/DownloadPackageV1/task.json index f0a29a3ab913..38ec8523bf1b 100644 --- a/Tasks/DownloadPackageV1/task.json +++ b/Tasks/DownloadPackageV1/task.json @@ -10,7 +10,7 @@ "version": { "Major": 1, "Minor": 161, - "Patch": 0 + "Patch": 1 }, "demands": [], "releaseNotes": "Adds support to download Maven, Python, Universal and Npm packages.", @@ -182,6 +182,7 @@ "RedirectUrlError": "Unable to get redirect URL with error %.", "UnsupportedArchiveType": "Unsupported archive type: %s", "Error_UnexpectedErrorArtifactToolDownload": "An unexpected error occurred while trying to download the package. Exit code(%s) and error(%s)", + "Info_DownloadingArtifactTool": "Downloading artifact tool from %s", "Info_Downloading": "Downloading package: %s, version: %s using feed id: %s, project: %s", "Info_UsingArtifactToolDownload": "Using artifact tool to download the package" } diff --git a/Tasks/DownloadPackageV1/task.loc.json b/Tasks/DownloadPackageV1/task.loc.json index ec249f158431..d8e672bbd143 100644 --- a/Tasks/DownloadPackageV1/task.loc.json +++ b/Tasks/DownloadPackageV1/task.loc.json @@ -10,7 +10,7 @@ "version": { "Major": 1, "Minor": 161, - "Patch": 0 + "Patch": 1 }, "demands": [], "releaseNotes": "ms-resource:loc.releaseNotes", @@ -182,7 +182,8 @@ "RedirectUrlError": "ms-resource:loc.messages.RedirectUrlError", "UnsupportedArchiveType": "ms-resource:loc.messages.UnsupportedArchiveType", "Error_UnexpectedErrorArtifactToolDownload": "ms-resource:loc.messages.Error_UnexpectedErrorArtifactToolDownload", + "Info_DownloadingArtifactTool": "ms-resource:loc.messages.Info_DownloadingArtifactTool", "Info_Downloading": "ms-resource:loc.messages.Info_Downloading", "Info_UsingArtifactToolDownload": "ms-resource:loc.messages.Info_UsingArtifactToolDownload" } -} \ No newline at end of file +} diff --git a/Tasks/DownloadPipelineArtifactV0/task.json b/Tasks/DownloadPipelineArtifactV0/task.json index 5e8d34c4f7c1..f288d27bcb48 100644 --- a/Tasks/DownloadPipelineArtifactV0/task.json +++ b/Tasks/DownloadPipelineArtifactV0/task.json @@ -9,13 +9,14 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 139, + "Minor": 140, "Patch": 0 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "pipelineId", diff --git a/Tasks/DownloadPipelineArtifactV0/task.loc.json b/Tasks/DownloadPipelineArtifactV0/task.loc.json index a558c96918b4..ac2c225ad7d8 100644 --- a/Tasks/DownloadPipelineArtifactV0/task.loc.json +++ b/Tasks/DownloadPipelineArtifactV0/task.loc.json @@ -9,13 +9,14 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 139, + "Minor": 140, "Patch": 0 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "pipelineId", diff --git a/Tasks/DownloadPipelineArtifactV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/DownloadPipelineArtifactV1/Strings/resources.resjson/en-US/resources.resjson index 62e8df6aca8c..7aa84d6c9378 100644 --- a/Tasks/DownloadPipelineArtifactV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/DownloadPipelineArtifactV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,7 +1,7 @@ { "loc.friendlyName": "Download pipeline artifact", - "loc.helpMarkDown": "Download a named artifact from a pipeline to a local path.", - "loc.description": "Download a named artifact from a pipeline to a local path.", + "loc.helpMarkDown": "Download a named artifact from a pipeline to a local path", + "loc.description": "Download a named artifact from a pipeline to a local path", "loc.instanceNameFormat": "Download Pipeline Artifact", "loc.input.label.buildType": "Download artifacts produced by", "loc.input.help.buildType": "Download artifacts produced by the current build, or from a specific build.", diff --git a/Tasks/DownloadPipelineArtifactV1/task.json b/Tasks/DownloadPipelineArtifactV1/task.json index 1cdaeb261cd3..0e60fc4b368f 100644 --- a/Tasks/DownloadPipelineArtifactV1/task.json +++ b/Tasks/DownloadPipelineArtifactV1/task.json @@ -8,13 +8,14 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 1, + "Minor": 2, "Patch": 3 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "buildType", diff --git a/Tasks/DownloadPipelineArtifactV1/task.loc.json b/Tasks/DownloadPipelineArtifactV1/task.loc.json index aff79aefc002..b74e36b0fd29 100644 --- a/Tasks/DownloadPipelineArtifactV1/task.loc.json +++ b/Tasks/DownloadPipelineArtifactV1/task.loc.json @@ -8,13 +8,14 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 1, + "Minor": 2, "Patch": 3 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "buildType", diff --git a/Tasks/DuffleInstallerV0/Tests/L0.ts b/Tasks/DuffleInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..c827e9e1bd7c --- /dev/null +++ b/Tasks/DuffleInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('DuffleInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/DuffleInstallerV0/Tests/package-lock.json b/Tasks/DuffleInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..2b71b208a06e --- /dev/null +++ b/Tasks/DuffleInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "duffle-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/DuffleInstallerV0/Tests/package.json b/Tasks/DuffleInstallerV0/Tests/package.json new file mode 100644 index 000000000000..767e22fd3e96 --- /dev/null +++ b/Tasks/DuffleInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "duffle-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Duffle Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/DuffleInstallerV0/task.loc.json b/Tasks/DuffleInstallerV0/task.loc.json index 7a8d7ae82f6b..8fceafc71bbf 100644 --- a/Tasks/DuffleInstallerV0/task.loc.json +++ b/Tasks/DuffleInstallerV0/task.loc.json @@ -45,4 +45,4 @@ "DownloadDuffleFailed": "ms-resource:loc.messages.DownloadDuffleFailed", "DownloadStableVersionFailed": "ms-resource:loc.messages.DownloadStableVersionFailed" } -} +} \ No newline at end of file diff --git a/Tasks/FileTransformV1/Tests/L0.ts b/Tasks/FileTransformV1/Tests/L0.ts new file mode 100644 index 000000000000..23c46725a954 --- /dev/null +++ b/Tasks/FileTransformV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('FileTransformV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/FileTransformV1/Tests/package-lock.json b/Tasks/FileTransformV1/Tests/package-lock.json new file mode 100644 index 000000000000..0adff3646f02 --- /dev/null +++ b/Tasks/FileTransformV1/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "file-transform-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/FileTransformV1/Tests/package.json b/Tasks/FileTransformV1/Tests/package.json new file mode 100644 index 000000000000..8c714f13d8a1 --- /dev/null +++ b/Tasks/FileTransformV1/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "file-transform-tests", + "version": "1.0.0", + "description": "Azure Pipelines File Transform V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/FileTransformV1/package-lock.json b/Tasks/FileTransformV1/package-lock.json index 36877c830b17..e118bb9edca0 100644 --- a/Tasks/FileTransformV1/package-lock.json +++ b/Tasks/FileTransformV1/package-lock.json @@ -29,14 +29,14 @@ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.2.0.tgz", "integrity": "sha1-+1xq9UQ7P6akJjRHU7rSp7REqt0=", "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.1", - "buffer-crc32": "0.2.13", - "glob": "7.1.3", - "lodash": "4.17.11", - "readable-stream": "2.3.6", - "tar-stream": "1.6.2", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.1.0" } }, "archiver-utils": { @@ -44,20 +44,20 @@ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "requires": { - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "lazystream": "1.0.0", - "lodash": "4.17.11", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "4.17.11" + "lodash": "^4.17.14" } }, "azure-pipelines-task-lib": { @@ -66,11 +66,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -79,26 +79,26 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" } }, "bl": { "version": "1.2.2", - "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "brace-expansion": { @@ -106,17 +106,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.12" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -124,8 +124,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "requires": { - "traverse": "0.3.9" + "traverse": ">=0.3.0 <0.4" } }, "compress-commons": { @@ -161,10 +161,10 @@ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -182,7 +182,7 @@ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "requires": { - "buffer": "5.2.1" + "buffer": "^5.1.0" } }, "crc32-stream": { @@ -190,8 +190,8 @@ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "requires": { - "crc": "3.8.0", - "readable-stream": "2.3.6" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "decompress-zip": { @@ -199,12 +199,12 @@ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.15", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.4.1", - "readable-stream": "1.1.14", + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", "touch": "0.0.3" }, "dependencies": { @@ -215,13 +215,13 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -232,11 +232,11 @@ } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "fs-constants": { @@ -250,41 +250,41 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "isarray": { "version": "1.0.0", @@ -296,20 +296,20 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.0.tgz", "integrity": "sha512-SJJUrmDgXP0gkUzgErfkaeD+pugM8GYxerTALQa1gTUb5W1wrC4k07GZU+QNZd7MpFqJSYWXTQSUy8Ps03hx5Q==", "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "minimatch": { @@ -317,7 +317,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mkpath": { @@ -335,7 +335,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -343,7 +343,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "once": { @@ -351,18 +351,18 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "q": { "version": "1.4.1", @@ -371,16 +371,16 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "remove-trailing-separator": { @@ -399,9 +399,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "shelljs": { "version": "0.3.0", @@ -413,7 +413,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "tar-stream": { @@ -421,13 +421,13 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.2.0", - "end-of-stream": "1.4.1", - "fs-constants": "1.0.0", - "readable-stream": "2.3.6", - "to-buffer": "1.1.1", - "xtend": "4.0.1" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" } }, "to-buffer": { @@ -440,7 +440,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" }, "dependencies": { "nopt": { @@ -448,7 +448,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } } } @@ -464,9 +464,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "webdeployment-common-v2": { "version": "file:../../_build/Tasks/Common/webdeployment-common-v2-2.0.0.tgz", @@ -495,29 +495,29 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz", "integrity": "sha1-+EQ+B0Oeb/ktmVKPSbvTScyfMGs=", "requires": { - "sax": "1.2.4", - "xmlbuilder": "10.1.1" + "sax": ">=0.6.0", + "xmlbuilder": ">=2.4.6" } }, "xmlbuilder": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==" + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "zip-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.11", - "readable-stream": "2.3.6" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } diff --git a/Tasks/FileTransformV2/Tests/L0.ts b/Tasks/FileTransformV2/Tests/L0.ts new file mode 100644 index 000000000000..205133627eda --- /dev/null +++ b/Tasks/FileTransformV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('FileTransformV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/FileTransformV2/Tests/package-lock.json b/Tasks/FileTransformV2/Tests/package-lock.json new file mode 100644 index 000000000000..0adff3646f02 --- /dev/null +++ b/Tasks/FileTransformV2/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "file-transform-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/FileTransformV2/Tests/package.json b/Tasks/FileTransformV2/Tests/package.json new file mode 100644 index 000000000000..4b1376978d83 --- /dev/null +++ b/Tasks/FileTransformV2/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "file-transform-tests", + "version": "1.0.0", + "description": "Azure Pipelines File Transform V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/FileTransformV2/package-lock.json b/Tasks/FileTransformV2/package-lock.json index c666084cfff1..3aacd2374545 100644 --- a/Tasks/FileTransformV2/package-lock.json +++ b/Tasks/FileTransformV2/package-lock.json @@ -29,14 +29,14 @@ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.2.0.tgz", "integrity": "sha1-+1xq9UQ7P6akJjRHU7rSp7REqt0=", "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.1", - "buffer-crc32": "0.2.13", - "glob": "7.1.3", - "lodash": "4.17.11", - "readable-stream": "2.3.6", - "tar-stream": "1.6.2", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.1.0" } }, "archiver-utils": { @@ -44,20 +44,20 @@ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "requires": { - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "lazystream": "1.0.0", - "lodash": "4.17.11", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "4.17.11" + "lodash": "^4.17.14" } }, "azure-pipelines-task-lib": { @@ -66,11 +66,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -79,26 +79,26 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" } }, "bl": { "version": "1.2.2", - "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "brace-expansion": { @@ -106,17 +106,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.12" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -124,8 +124,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -153,7 +153,7 @@ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "requires": { - "traverse": "0.3.9" + "traverse": ">=0.3.0 <0.4" } }, "compress-commons": { @@ -161,10 +161,10 @@ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -182,7 +182,7 @@ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "requires": { - "buffer": "5.2.1" + "buffer": "^5.1.0" } }, "crc32-stream": { @@ -190,8 +190,8 @@ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "requires": { - "crc": "3.8.0", - "readable-stream": "2.3.6" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "decompress-zip": { @@ -199,12 +199,12 @@ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.15", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.4.1", - "readable-stream": "1.1.14", + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", "touch": "0.0.3" }, "dependencies": { @@ -215,13 +215,13 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -232,11 +232,11 @@ } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "fs-constants": { @@ -250,41 +250,41 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "isarray": { "version": "1.0.0", @@ -296,20 +296,20 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.0.tgz", "integrity": "sha512-SJJUrmDgXP0gkUzgErfkaeD+pugM8GYxerTALQa1gTUb5W1wrC4k07GZU+QNZd7MpFqJSYWXTQSUy8Ps03hx5Q==", "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "minimatch": { @@ -317,7 +317,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mkpath": { @@ -335,7 +335,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -343,7 +343,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "once": { @@ -351,18 +351,18 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "q": { "version": "1.4.1", @@ -371,16 +371,16 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "remove-trailing-separator": { @@ -399,9 +399,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "shelljs": { "version": "0.3.0", @@ -413,7 +413,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "tar-stream": { @@ -421,13 +421,13 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.2.0", - "end-of-stream": "1.4.1", - "fs-constants": "1.0.0", - "readable-stream": "2.3.6", - "to-buffer": "1.1.1", - "xtend": "4.0.1" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" } }, "to-buffer": { @@ -440,7 +440,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" }, "dependencies": { "nopt": { @@ -448,7 +448,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } } } @@ -464,9 +464,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "webdeployment-common-v2": { "version": "file:../../_build/Tasks/Common/webdeployment-common-v2-2.0.0.tgz", @@ -495,29 +495,29 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz", "integrity": "sha1-+EQ+B0Oeb/ktmVKPSbvTScyfMGs=", "requires": { - "sax": "1.2.4", - "xmlbuilder": "10.1.1" + "sax": ">=0.6.0", + "xmlbuilder": ">=2.4.6" } }, "xmlbuilder": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==" + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "zip-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.11", - "readable-stream": "2.3.6" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } diff --git a/Tasks/FtpUploadV1/Tests/L0.ts b/Tasks/FtpUploadV1/Tests/L0.ts new file mode 100644 index 000000000000..cd6e81b4ddf3 --- /dev/null +++ b/Tasks/FtpUploadV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('FtpUploadV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/FtpUploadV1/Tests/package-lock.json b/Tasks/FtpUploadV1/Tests/package-lock.json new file mode 100644 index 000000000000..04ef5eaf8472 --- /dev/null +++ b/Tasks/FtpUploadV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "ftp-upload-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/FtpUploadV1/Tests/package.json b/Tasks/FtpUploadV1/Tests/package.json new file mode 100644 index 000000000000..743cd975ef68 --- /dev/null +++ b/Tasks/FtpUploadV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "ftp-upload-tests", + "version": "1.0.0", + "description": "Azure Pipelines FTP Upload V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/FtpUploadV2/Tests/L0.ts b/Tasks/FtpUploadV2/Tests/L0.ts new file mode 100644 index 000000000000..6e8afaf578bb --- /dev/null +++ b/Tasks/FtpUploadV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('FtpUploadV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/FtpUploadV2/Tests/package-lock.json b/Tasks/FtpUploadV2/Tests/package-lock.json new file mode 100644 index 000000000000..04ef5eaf8472 --- /dev/null +++ b/Tasks/FtpUploadV2/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "ftp-upload-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/FtpUploadV2/Tests/package.json b/Tasks/FtpUploadV2/Tests/package.json new file mode 100644 index 000000000000..8a8d59e43ced --- /dev/null +++ b/Tasks/FtpUploadV2/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "ftp-upload-tests", + "version": "1.0.0", + "description": "Azure Pipelines FTP Upload V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/FuncToolsInstallerV0/Tests/L0.ts b/Tasks/FuncToolsInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..c1c04f66a9b6 --- /dev/null +++ b/Tasks/FuncToolsInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('FuncToolsInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/FuncToolsInstallerV0/Tests/package-lock.json b/Tasks/FuncToolsInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..1a52922a49d1 --- /dev/null +++ b/Tasks/FuncToolsInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "func-tools-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/FuncToolsInstallerV0/Tests/package.json b/Tasks/FuncToolsInstallerV0/Tests/package.json new file mode 100644 index 000000000000..a89639916774 --- /dev/null +++ b/Tasks/FuncToolsInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "func-tools-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Func Tools Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GitHubCommentV0/Tests/L0.ts b/Tasks/GitHubCommentV0/Tests/L0.ts new file mode 100644 index 000000000000..38c9580cf158 --- /dev/null +++ b/Tasks/GitHubCommentV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('GitHubCommentV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/GitHubCommentV0/Tests/package-lock.json b/Tasks/GitHubCommentV0/Tests/package-lock.json new file mode 100644 index 000000000000..f51be859bb7a --- /dev/null +++ b/Tasks/GitHubCommentV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "github-comment-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/GitHubCommentV0/Tests/package.json b/Tasks/GitHubCommentV0/Tests/package.json new file mode 100644 index 000000000000..542165bdc01e --- /dev/null +++ b/Tasks/GitHubCommentV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "github-comment-tests", + "version": "1.0.0", + "description": "Azure Pipelines GitHub Comment V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GitHubReleaseV0/operations/Release.ts b/Tasks/GitHubReleaseV0/operations/Release.ts index 4a79cfcc74e3..b1441f98f12c 100644 --- a/Tasks/GitHubReleaseV0/operations/Release.ts +++ b/Tasks/GitHubReleaseV0/operations/Release.ts @@ -234,7 +234,7 @@ export class Release { }`; let query = `query{ - repository(owner: ${repositoryDetails[0]}, name: ${repositoryDetails[1]}){ + repository(owner: "${repositoryDetails[0]}", name: "${repositoryDetails[1]}"){ ${issuesQuery} } } diff --git a/Tasks/GitHubReleaseV0/task.json b/Tasks/GitHubReleaseV0/task.json index 8e6053c7eace..7dd2e2405520 100644 --- a/Tasks/GitHubReleaseV0/task.json +++ b/Tasks/GitHubReleaseV0/task.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 1 + "Patch": 2 }, "demands": [], "minimumAgentVersion": "2.0.0", diff --git a/Tasks/GitHubReleaseV0/task.loc.json b/Tasks/GitHubReleaseV0/task.loc.json index 439b654ee79b..713b226570e3 100644 --- a/Tasks/GitHubReleaseV0/task.loc.json +++ b/Tasks/GitHubReleaseV0/task.loc.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 1 + "Patch": 2 }, "demands": [], "minimumAgentVersion": "2.0.0", diff --git a/Tasks/GitHubReleaseV1/operations/Release.ts b/Tasks/GitHubReleaseV1/operations/Release.ts index 4a79cfcc74e3..b1441f98f12c 100644 --- a/Tasks/GitHubReleaseV1/operations/Release.ts +++ b/Tasks/GitHubReleaseV1/operations/Release.ts @@ -234,7 +234,7 @@ export class Release { }`; let query = `query{ - repository(owner: ${repositoryDetails[0]}, name: ${repositoryDetails[1]}){ + repository(owner: "${repositoryDetails[0]}", name: "${repositoryDetails[1]}"){ ${issuesQuery} } } diff --git a/Tasks/GitHubReleaseV1/task.json b/Tasks/GitHubReleaseV1/task.json index 0529cb7182f5..3111b8871893 100644 --- a/Tasks/GitHubReleaseV1/task.json +++ b/Tasks/GitHubReleaseV1/task.json @@ -15,7 +15,7 @@ "version": { "Major": 1, "Minor": 160, - "Patch": 1 + "Patch": 2 }, "demands": [], "minimumAgentVersion": "2.0.0", diff --git a/Tasks/GitHubReleaseV1/task.loc.json b/Tasks/GitHubReleaseV1/task.loc.json index 064bf9c7177a..dd2e97b146d9 100644 --- a/Tasks/GitHubReleaseV1/task.loc.json +++ b/Tasks/GitHubReleaseV1/task.loc.json @@ -15,7 +15,7 @@ "version": { "Major": 1, "Minor": 160, - "Patch": 1 + "Patch": 2 }, "demands": [], "minimumAgentVersion": "2.0.0", diff --git a/Tasks/GoToolV0/Tests/L0.ts b/Tasks/GoToolV0/Tests/L0.ts new file mode 100644 index 000000000000..37a45bc5215d --- /dev/null +++ b/Tasks/GoToolV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('GoToolV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/GoToolV0/Tests/package-lock.json b/Tasks/GoToolV0/Tests/package-lock.json new file mode 100644 index 000000000000..bd79374f686e --- /dev/null +++ b/Tasks/GoToolV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "go-tool-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/GoToolV0/Tests/package.json b/Tasks/GoToolV0/Tests/package.json new file mode 100644 index 000000000000..3c42b78cca4b --- /dev/null +++ b/Tasks/GoToolV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "go-tool-tests", + "version": "1.0.0", + "description": "Azure Pipelines Go Tool V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GruntV0/Tests/L0.ts b/Tasks/GruntV0/Tests/L0.ts new file mode 100644 index 000000000000..b6bc233dcdfa --- /dev/null +++ b/Tasks/GruntV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('GruntV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/GruntV0/Tests/package-lock.json b/Tasks/GruntV0/Tests/package-lock.json new file mode 100644 index 000000000000..e0ee3d5cab23 --- /dev/null +++ b/Tasks/GruntV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "grunt-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/GruntV0/Tests/package.json b/Tasks/GruntV0/Tests/package.json new file mode 100644 index 000000000000..d1e8e3584150 --- /dev/null +++ b/Tasks/GruntV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "grunt-tests", + "version": "1.0.0", + "description": "Azure Pipelines Grunt V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GulpV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/GulpV0/Strings/resources.resjson/en-US/resources.resjson index 62f0b0f4910c..63a9644c3c00 100644 --- a/Tasks/GulpV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/GulpV0/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "gulp", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613721)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613721)", "loc.description": "Run the gulp Node.js streaming task-based build system", "loc.instanceNameFormat": "gulp $(targets)", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/GulpV0/Tests/L0.ts b/Tasks/GulpV0/Tests/L0.ts new file mode 100644 index 000000000000..bb2618a98b9c --- /dev/null +++ b/Tasks/GulpV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('GulpV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/GulpV0/Tests/package-lock.json b/Tasks/GulpV0/Tests/package-lock.json new file mode 100644 index 000000000000..b4c44bb0b819 --- /dev/null +++ b/Tasks/GulpV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "gulp-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/GulpV0/Tests/package.json b/Tasks/GulpV0/Tests/package.json new file mode 100644 index 000000000000..a2aa34902452 --- /dev/null +++ b/Tasks/GulpV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "gulp-tests", + "version": "1.0.0", + "description": "Azure Pipelines Gulp V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GulpV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/GulpV1/Strings/resources.resjson/en-US/resources.resjson index 457e6409e5c9..9511bde83ccd 100644 --- a/Tasks/GulpV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/GulpV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "gulp", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613721)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613721)", "loc.description": "Run the gulp Node.js streaming task-based build system", "loc.instanceNameFormat": "gulp $(targets)", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/GulpV1/Tests/L0.ts b/Tasks/GulpV1/Tests/L0.ts new file mode 100644 index 000000000000..785326a67482 --- /dev/null +++ b/Tasks/GulpV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('GulpV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/GulpV1/Tests/package-lock.json b/Tasks/GulpV1/Tests/package-lock.json new file mode 100644 index 000000000000..b4c44bb0b819 --- /dev/null +++ b/Tasks/GulpV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "gulp-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/GulpV1/Tests/package.json b/Tasks/GulpV1/Tests/package.json new file mode 100644 index 000000000000..751d3ed28b92 --- /dev/null +++ b/Tasks/GulpV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "gulp-tests", + "version": "1.0.0", + "description": "Azure Pipelines Gulp V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/GulpV1/task.loc.json b/Tasks/GulpV1/task.loc.json index 876935073e60..ad7a0b95f266 100644 --- a/Tasks/GulpV1/task.loc.json +++ b/Tasks/GulpV1/task.loc.json @@ -173,4 +173,4 @@ "NpmFailed": "ms-resource:loc.messages.NpmFailed", "IstanbulFailed": "ms-resource:loc.messages.IstanbulFailed" } -} +} \ No newline at end of file diff --git a/Tasks/HelmDeployV0/Tests/L0.ts b/Tasks/HelmDeployV0/Tests/L0.ts new file mode 100644 index 000000000000..4418c54e668e --- /dev/null +++ b/Tasks/HelmDeployV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('HelmDeployV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/HelmDeployV0/Tests/package-lock.json b/Tasks/HelmDeployV0/Tests/package-lock.json new file mode 100644 index 000000000000..bd186402ec87 --- /dev/null +++ b/Tasks/HelmDeployV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "helm-deploy-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/HelmDeployV0/Tests/package.json b/Tasks/HelmDeployV0/Tests/package.json new file mode 100644 index 000000000000..ddf323707762 --- /dev/null +++ b/Tasks/HelmDeployV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "helm-deploy-tests", + "version": "1.0.0", + "description": "Azure Pipelines Helm Deploy V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/HelmDeployV0/package-lock.json b/Tasks/HelmDeployV0/package-lock.json index 6bbaa705cc3e..8a450490d998 100644 --- a/Tasks/HelmDeployV0/package-lock.json +++ b/Tasks/HelmDeployV0/package-lock.json @@ -23,9 +23,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -35,7 +35,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "array-union": { @@ -43,7 +43,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -77,19 +77,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.7.tgz", "integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ==" - }, - "azure-pipelines-task-lib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", - "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", - "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" - } } } }, @@ -121,11 +108,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "azure-pipelines-tool-lib": { @@ -163,7 +150,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -182,13 +169,13 @@ "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz", "integrity": "sha1-mlDwS/NzJeKDtPROmFM2wlJFa9U=", "requires": { - "globby": "4.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.3" + "globby": "^4.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "ecdsa-sig-formatter": { @@ -196,7 +183,7 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "esprima": { @@ -214,11 +201,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "globby": { @@ -226,12 +213,12 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "6.0.4", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "hoek": { @@ -244,8 +231,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -263,7 +250,7 @@ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -271,7 +258,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "isemail": { @@ -284,17 +271,10 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { - "hoek": "2.16.3", - "isemail": "1.2.0", - "moment": "2.24.0", - "topo": "1.1.0" - }, - "dependencies": { - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - } + "hoek": "2.x.x", + "isemail": "1.x.x", + "moment": "2.x.x", + "topo": "1.x.x" } }, "js-yaml": { @@ -302,8 +282,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "argparse": "^1.0.7", + "esprima": "^2.6.0" } }, "jsonwebtoken": { @@ -311,11 +291,11 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.3.0.tgz", "integrity": "sha1-hRGNanDj/M3xQ4n056HD+cip+7o=", "requires": { - "joi": "6.10.1", - "jws": "3.2.2", - "lodash.once": "4.1.1", - "ms": "0.7.3", - "xtend": "4.0.1" + "joi": "^6.10.1", + "jws": "^3.1.4", + "lodash.once": "^4.0.0", + "ms": "^0.7.1", + "xtend": "^4.0.1" } }, "jwa": { @@ -325,7 +305,7 @@ "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "jws": { @@ -333,8 +313,8 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "jwa": "1.4.1", - "safe-buffer": "5.1.2" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, "kubernetes-common-v2": { @@ -343,42 +323,6 @@ "azure-pipelines-task-lib": "2.8.0", "js-yaml": "3.6.1", "vsts-task-tool-lib": "0.4.0" - }, - "dependencies": { - "azure-pipelines-task-lib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", - "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", - "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" - } - }, - "typed-rest-client": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.9.0.tgz", - "integrity": "sha1-92jMDcP06VDwbgSCXDaz54NKofI=", - "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" - } - }, - "vsts-task-tool-lib": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/vsts-task-tool-lib/-/vsts-task-tool-lib-0.4.0.tgz", - "integrity": "sha1-zOtRxyh3yWTI5E3p7eovZfyKyPk=", - "requires": { - "semver": "5.7.0", - "semver-compare": "1.0.0", - "typed-rest-client": "0.9.0", - "uuid": "3.3.2", - "vsts-task-lib": "2.0.4-preview" - } - } } }, "lodash.once": { @@ -391,7 +335,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -419,7 +363,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os": { @@ -452,7 +396,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "q": { @@ -465,7 +409,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { - "glob": "7.1.4" + "glob": "^7.1.3" }, "dependencies": { "glob": { @@ -473,53 +417,28 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, "securefiles-common": { "version": "file:../../_build/Tasks/Common/securefiles-common-1.0.0.tgz", "requires": { - "@types/node": "6.14.6", - "@types/q": "1.5.2", + "@types/node": "^6.0.0", + "@types/q": "^1.5.2", "azure-devops-node-api": "7.2.0", - "azure-pipelines-task-lib": "2.8.0" - }, - "dependencies": { - "@types/node": { - "version": "6.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.6.tgz", - "integrity": "sha512-rFs9zCFtSHuseiNXxYxFlun8ibu+jtZPgRM+2ILCmeLiGeGLiIGxuOzD+cNyHegI1GD+da3R/cIbs9+xCLp13w==" - }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" - }, - "azure-pipelines-task-lib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", - "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", - "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" - } - } + "azure-pipelines-task-lib": "^2.8.0" } }, "semver": { @@ -547,7 +466,7 @@ "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "tunnel": { @@ -599,12 +518,12 @@ "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.4-preview.tgz", "integrity": "sha1-nU63UAoL2a1Z429w8iqtxuK6+NI=", "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "minimatch": "^3.0.0", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "vsts-task-tool-lib": { @@ -612,10 +531,10 @@ "resolved": "https://registry.npmjs.org/vsts-task-tool-lib/-/vsts-task-tool-lib-0.4.0.tgz", "integrity": "sha1-zOtRxyh3yWTI5E3p7eovZfyKyPk=", "requires": { - "semver": "5.7.0", - "semver-compare": "1.0.0", - "typed-rest-client": "0.9.0", - "uuid": "3.3.2", + "semver": "^5.3.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^0.9.0", + "uuid": "^3.0.1", "vsts-task-lib": "2.0.4-preview" }, "dependencies": { @@ -636,9 +555,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } } \ No newline at end of file diff --git a/Tasks/HelmInstallerV0/Tests/L0.ts b/Tasks/HelmInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..76c7e46a529f --- /dev/null +++ b/Tasks/HelmInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('HelmInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/HelmInstallerV0/Tests/package-lock.json b/Tasks/HelmInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..726cec00265e --- /dev/null +++ b/Tasks/HelmInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "helm-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/HelmInstallerV0/Tests/package.json b/Tasks/HelmInstallerV0/Tests/package.json new file mode 100644 index 000000000000..0e6b886dbdb7 --- /dev/null +++ b/Tasks/HelmInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "helm-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Helm Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/HelmInstallerV0/package-lock.json b/Tasks/HelmInstallerV0/package-lock.json index f2659bf43540..7afb1ce49df1 100644 --- a/Tasks/HelmInstallerV0/package-lock.json +++ b/Tasks/HelmInstallerV0/package-lock.json @@ -17,7 +17,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "array-union": { @@ -25,7 +25,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -48,7 +48,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -62,13 +62,13 @@ "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz", "integrity": "sha1-mlDwS/NzJeKDtPROmFM2wlJFa9U=", "requires": { - "globby": "4.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.3" + "globby": "^4.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "esprima": { @@ -86,11 +86,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "globby": { @@ -98,12 +98,12 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "6.0.4", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "inflight": { @@ -111,8 +111,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -130,7 +130,7 @@ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -138,7 +138,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "js-yaml": { @@ -146,8 +146,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "argparse": "^1.0.7", + "esprima": "^2.6.0" } }, "kubernetes-common": { @@ -164,11 +164,11 @@ "integrity": "sha512-ja2qX4BIUvswcNbGtIoGo1SM5mRVc3Yaf7oM4oY64bNHs04chKfvH6f3cDDG0pd44OrZIGQE9LgECzeau6z2wA==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } } } @@ -178,7 +178,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -196,7 +196,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -224,7 +224,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "q": { @@ -237,7 +237,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { - "glob": "7.1.4" + "glob": "^7.1.3" }, "dependencies": { "glob": { @@ -245,12 +245,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -304,12 +304,12 @@ "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.5.tgz", "integrity": "sha1-y9WrIy6rtxDJaXkFMYcmlZHA1RA=", "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "minimatch": "^3.0.0", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "vsts-task-tool-lib": { @@ -317,10 +317,10 @@ "resolved": "https://registry.npmjs.org/vsts-task-tool-lib/-/vsts-task-tool-lib-0.4.0.tgz", "integrity": "sha1-zOtRxyh3yWTI5E3p7eovZfyKyPk=", "requires": { - "semver": "5.7.0", - "semver-compare": "1.0.0", - "typed-rest-client": "0.9.0", - "uuid": "3.3.2", + "semver": "^5.3.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^0.9.0", + "uuid": "^3.0.1", "vsts-task-lib": "2.0.4-preview" }, "dependencies": { @@ -338,12 +338,12 @@ "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.4-preview.tgz", "integrity": "sha1-nU63UAoL2a1Z429w8iqtxuK6+NI=", "requires": { - "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.7.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "minimatch": "^3.0.0", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } } } diff --git a/Tasks/HelmInstallerV0/src/helmtoolinstaller.ts b/Tasks/HelmInstallerV0/src/helmtoolinstaller.ts index d15c6a7da0b1..91deef295320 100644 --- a/Tasks/HelmInstallerV0/src/helmtoolinstaller.ts +++ b/Tasks/HelmInstallerV0/src/helmtoolinstaller.ts @@ -10,6 +10,8 @@ import * as helminstaller from "./helminstaller" tl.setResourcePath(path.join(__dirname, '..', 'task.json')); +var helmVersion = "" + async function configureKubectl() { var version = await kubectlinstaller.getKuberctlVersion(); var kubectlPath = await kubectlinstaller.downloadKubectl(version); @@ -21,8 +23,8 @@ async function configureKubectl() { } async function configureHelm() { - var version = await helminstaller.getHelmVersion(); - var helmPath = await helminstaller.downloadHelm(version); + helmVersion = await helminstaller.getHelmVersion(); + var helmPath = await helminstaller.downloadHelm(helmVersion); // prepend the tools path. instructs the agent to prepend for future tasks if (!process.env['PATH'].startsWith(path.dirname(helmPath))) { @@ -33,10 +35,14 @@ async function configureHelm() { async function verifyHelm() { console.log(tl.loc("VerifyHelmInstallation")); var helmToolPath = tl.which("helm", true); - var helmTool = tl.tool(helmToolPath); - helmTool.arg("init"); - helmTool.arg("--client-only"); - return helmTool.exec() + + // Check if using Helm 2 or Helm 3 + if (helmVersion.startsWith("v2")) { + var helmTool = tl.tool(helmToolPath); + helmTool.arg("init"); + helmTool.arg("--client-only"); + return helmTool.exec() + } } configureHelm() diff --git a/Tasks/HelmInstallerV0/task.json b/Tasks/HelmInstallerV0/task.json index 622df7958057..11dc43ffee32 100644 --- a/Tasks/HelmInstallerV0/task.json +++ b/Tasks/HelmInstallerV0/task.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 159, + "Minor": 161, "Patch": 0 }, "demands": [], diff --git a/Tasks/HelmInstallerV0/task.loc.json b/Tasks/HelmInstallerV0/task.loc.json index 72a022d58dc4..c14422b422f1 100644 --- a/Tasks/HelmInstallerV0/task.loc.json +++ b/Tasks/HelmInstallerV0/task.loc.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 159, + "Minor": 161, "Patch": 0 }, "demands": [], @@ -93,4 +93,4 @@ "HelmLatestNotKnown": "ms-resource:loc.messages.HelmLatestNotKnown", "VerifyHelmInstallation": "ms-resource:loc.messages.VerifyHelmInstallation" } -} +} \ No newline at end of file diff --git a/Tasks/HelmInstallerV1/Tests/L0.ts b/Tasks/HelmInstallerV1/Tests/L0.ts new file mode 100644 index 000000000000..b8466960e06d --- /dev/null +++ b/Tasks/HelmInstallerV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('HelmInstallerV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/HelmInstallerV1/Tests/package-lock.json b/Tasks/HelmInstallerV1/Tests/package-lock.json new file mode 100644 index 000000000000..726cec00265e --- /dev/null +++ b/Tasks/HelmInstallerV1/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "helm-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/HelmInstallerV1/Tests/package.json b/Tasks/HelmInstallerV1/Tests/package.json new file mode 100644 index 000000000000..b32aff4a72e9 --- /dev/null +++ b/Tasks/HelmInstallerV1/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "helm-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Helm Installer V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/HelmInstallerV1/src/helmtoolinstaller.ts b/Tasks/HelmInstallerV1/src/helmtoolinstaller.ts index 4bba1f906ecd..de875b0eeeee 100644 --- a/Tasks/HelmInstallerV1/src/helmtoolinstaller.ts +++ b/Tasks/HelmInstallerV1/src/helmtoolinstaller.ts @@ -7,11 +7,11 @@ import utils = require("./utils"); tl.setResourcePath(path.join(__dirname, '..', 'task.json')); +var version = "" async function configureHelm() { - var version = await utils.getHelmVersion(); + version = await utils.getHelmVersion(); var helmPath = await utils.downloadHelm(version); - // prepend the tools path. instructs the agent to prepend for future tasks if (!process.env['PATH'].startsWith(path.dirname(helmPath))) { toolLib.prependPath(path.dirname(helmPath)); @@ -21,10 +21,14 @@ async function configureHelm() { async function verifyHelm() { console.log(tl.loc("VerifyHelmInstallation")); var helmToolPath = tl.which("helm", true); - var helmTool = tl.tool(helmToolPath); - helmTool.arg("init"); - helmTool.arg("--client-only"); - return helmTool.exec() + + // Check if using Helm 2 or Helm 3 + if (version.startsWith("v2")) { + var helmTool = tl.tool(helmToolPath); + helmTool.arg("init"); + helmTool.arg("--client-only"); + return helmTool.exec() + } } configureHelm() diff --git a/Tasks/HelmInstallerV1/task.json b/Tasks/HelmInstallerV1/task.json index 2440808e214b..305546ebb903 100644 --- a/Tasks/HelmInstallerV1/task.json +++ b/Tasks/HelmInstallerV1/task.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": true, diff --git a/Tasks/HelmInstallerV1/task.loc.json b/Tasks/HelmInstallerV1/task.loc.json index 0c4d011155c5..833653cba615 100644 --- a/Tasks/HelmInstallerV1/task.loc.json +++ b/Tasks/HelmInstallerV1/task.loc.json @@ -13,7 +13,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": true, @@ -41,4 +41,4 @@ "NotAValidSemverVersion": "ms-resource:loc.messages.NotAValidSemverVersion", "VerifyHelmInstallation": "ms-resource:loc.messages.VerifyHelmInstallation" } -} +} \ No newline at end of file diff --git a/Tasks/IISWebAppDeployment/Strings/resources.resjson/en-US/resources.resjson b/Tasks/IISWebAppDeployment/Strings/resources.resjson/en-US/resources.resjson index 03d03e13d57c..f0fd93847a56 100644 --- a/Tasks/IISWebAppDeployment/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/IISWebAppDeployment/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "[Deprecated] IIS Web App deployment", - "loc.helpMarkDown": "[More Information](https://aka.ms/iiswebappdeploydeprecatedreadme)", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/iiswebappdeploydeprecatedreadme)", "loc.description": "Deploy using MSDeploy, then create/update websites and app pools", "loc.instanceNameFormat": "[Deprecated] Deploy IIS App: $(WebDeployPackage)", "loc.group.displayName.deployment": "Deployment", diff --git a/Tasks/IISWebAppDeployment/Tests/L0.ts b/Tasks/IISWebAppDeployment/Tests/L0.ts new file mode 100644 index 000000000000..a771adc9ac99 --- /dev/null +++ b/Tasks/IISWebAppDeployment/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('IISWebAppDeployment Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/IISWebAppDeployment/tsconfig.json b/Tasks/IISWebAppDeployment/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/IISWebAppDeployment/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/KubectlInstallerV0/Tests/L0.ts b/Tasks/KubectlInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..37062b40ff9a --- /dev/null +++ b/Tasks/KubectlInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('KubectlInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/KubectlInstallerV0/Tests/package-lock.json b/Tasks/KubectlInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..8103780376fc --- /dev/null +++ b/Tasks/KubectlInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "kubectl-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/KubectlInstallerV0/Tests/package.json b/Tasks/KubectlInstallerV0/Tests/package.json new file mode 100644 index 000000000000..dc1af5606d54 --- /dev/null +++ b/Tasks/KubectlInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "kubectl-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Kubectl Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/KubectlInstallerV0/package-lock.json b/Tasks/KubectlInstallerV0/package-lock.json index 97b3c645b150..6f863e79f85b 100644 --- a/Tasks/KubectlInstallerV0/package-lock.json +++ b/Tasks/KubectlInstallerV0/package-lock.json @@ -169,6 +169,19 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, + "vsts-task-lib": { + "version": "2.0.4-preview", + "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.4-preview.tgz", + "integrity": "sha1-nU63UAoL2a1Z429w8iqtxuK6+NI=", + "requires": { + "minimatch": "^3.0.0", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + } + }, "vsts-task-tool-lib": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/vsts-task-tool-lib/-/vsts-task-tool-lib-0.4.0.tgz", @@ -179,21 +192,6 @@ "typed-rest-client": "^0.9.0", "uuid": "^3.0.1", "vsts-task-lib": "2.0.4-preview" - }, - "dependencies": { - "vsts-task-lib": { - "version": "2.0.4-preview", - "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.4-preview.tgz", - "integrity": "sha1-nU63UAoL2a1Z429w8iqtxuK6+NI=", - "requires": { - "minimatch": "^3.0.0", - "mockery": "^1.7.0", - "q": "^1.1.2", - "semver": "^5.1.0", - "shelljs": "^0.3.0", - "uuid": "^3.0.1" - } - } } } } diff --git a/Tasks/KubectlInstallerV0/task.loc.json b/Tasks/KubectlInstallerV0/task.loc.json index d84a17e7aa89..53743d0eeb17 100644 --- a/Tasks/KubectlInstallerV0/task.loc.json +++ b/Tasks/KubectlInstallerV0/task.loc.json @@ -40,4 +40,4 @@ "NotAValidSemverVersion": "ms-resource:loc.messages.NotAValidSemverVersion", "VerifyKubectlInstallation": "ms-resource:loc.messages.VerifyKubectlInstallation" } -} +} \ No newline at end of file diff --git a/Tasks/KubernetesManifestV0/task.json b/Tasks/KubernetesManifestV0/task.json index 2f7716306e6e..6f8a38394c0c 100644 --- a/Tasks/KubernetesManifestV0/task.json +++ b/Tasks/KubernetesManifestV0/task.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 5 + "Patch": 7 }, "demands": [], "groups": [], diff --git a/Tasks/KubernetesManifestV0/task.loc.json b/Tasks/KubernetesManifestV0/task.loc.json index 34e92a5080bb..6418e6ee6887 100644 --- a/Tasks/KubernetesManifestV0/task.loc.json +++ b/Tasks/KubernetesManifestV0/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 0, "Minor": 160, - "Patch": 5 + "Patch": 7 }, "demands": [], "groups": [], diff --git a/Tasks/KubernetesV1/Tests/TestSetup.ts b/Tasks/KubernetesV1/Tests/TestSetup.ts index a80cf505ecad..08946c2c7875 100644 --- a/Tasks/KubernetesV1/Tests/TestSetup.ts +++ b/Tasks/KubernetesV1/Tests/TestSetup.ts @@ -54,6 +54,7 @@ console.log("Inputs have been set"); process.env['AGENT_VERSION'] = '2.115.0'; process.env["SYSTEM_DEFAULTWORKINGDIRECTORY"] = DefaultWorkingDirectory; process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"] = "https://abc.visualstudio.com/"; +process.env["SYSTEM_HOSTTYPE"] = "release"; process.env["SYSTEM_SERVERTYPE"] = "hosted"; process.env["ENDPOINT_AUTH_dockerhubendpoint"] = "{\"parameters\":{\"username\":\"test\", \"password\":\"regpassword\", \"email\":\"test@microsoft.com\",\"registry\":\"https://index.docker.io/v1/\"},\"scheme\":\"UsernamePassword\"}"; process.env["ENDPOINT_AUTH_kubernetesEndpoint"] = "{\"parameters\":{\"kubeconfig\":\"kubeconfig\", \"username\":\"test\", \"password\":\"regpassword\",},\"scheme\":\"UsernamePassword\"}"; @@ -77,11 +78,7 @@ process.env['ENDPOINT_URL_AzureRMSpn'] = 'https://management.azure.com/'; process.env['ENDPOINT_DATA_AzureRMSpn_ACTIVEDIRECTORYSERVICEENDPOINTRESOURCEID'] = 'https://management.azure.com/'; process.env['AZURE_HTTP_USER_AGENT'] = 'TEST_AGENT'; process.env['PATH'] = KubectlPath; - -if (process.env["AGENT_TEMPDIRECTORY"] == null || process.env["AGENT_TEMPDIRECTORY"] == undefined || process.env["AGENT_TEMPDIRECTORY"] == "") -{ - process.env["AGENT_TEMPDIRECTORY"] = "/agent/_temp"; -} +process.env["AGENT_TEMPDIRECTORY"] = process.cwd() //mock responses for Azure Resource Manager connection type nock("https://login.windows.net", { diff --git a/Tasks/KubernetesV1/task.json b/Tasks/KubernetesV1/task.json index b0f8427f7624..6a6ab763704b 100644 --- a/Tasks/KubernetesV1/task.json +++ b/Tasks/KubernetesV1/task.json @@ -13,8 +13,8 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, - "Patch": 5 + "Minor": 161, + "Patch": 0 }, "demands": [], "releaseNotes": "What's new in Version 1.0:
 Added new service connection type input for easy selection of Azure AKS cluster.
 Replaced output variable input with output variables section that we had added in all tasks.", diff --git a/Tasks/KubernetesV1/task.loc.json b/Tasks/KubernetesV1/task.loc.json index 406d6357d85d..1768e5968fd7 100644 --- a/Tasks/KubernetesV1/task.loc.json +++ b/Tasks/KubernetesV1/task.loc.json @@ -13,8 +13,8 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, - "Patch": 5 + "Minor": 161, + "Patch": 0 }, "demands": [], "releaseNotes": "ms-resource:loc.releaseNotes", diff --git a/Tasks/MSBuildV1/task.json b/Tasks/MSBuildV1/task.json index 934766a7fc9e..942891da66e6 100644 --- a/Tasks/MSBuildV1/task.json +++ b/Tasks/MSBuildV1/task.json @@ -12,7 +12,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [ @@ -90,14 +90,22 @@ "type": "string", "label": "Platform", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Platform: < > * | : \\ / & % \" . # ?" + } }, { "name": "configuration", "type": "string", "label": "Configuration", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Configuration: < > * | : \\ / & % \" . # ?" + } }, { "name": "msbuildArguments", diff --git a/Tasks/MSBuildV1/task.loc.json b/Tasks/MSBuildV1/task.loc.json index 76db7bc49ccb..3d3c5b986f3c 100644 --- a/Tasks/MSBuildV1/task.loc.json +++ b/Tasks/MSBuildV1/task.loc.json @@ -12,7 +12,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [ @@ -90,14 +90,22 @@ "type": "string", "label": "ms-resource:loc.input.label.platform", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Platform: < > * | : \\ / & % \" . # ?" + } }, { "name": "configuration", "type": "string", "label": "ms-resource:loc.input.label.configuration", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Configuration: < > * | : \\ / & % \" . # ?" + } }, { "name": "msbuildArguments", diff --git a/Tasks/MavenV2/Tests/L0.ts b/Tasks/MavenV2/Tests/L0.ts new file mode 100644 index 000000000000..39ccd66899cf --- /dev/null +++ b/Tasks/MavenV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('MavenV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/MavenV2/Tests/package-lock.json b/Tasks/MavenV2/Tests/package-lock.json new file mode 100644 index 000000000000..aec65da512fd --- /dev/null +++ b/Tasks/MavenV2/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "maven-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/MavenV2/Tests/package.json b/Tasks/MavenV2/Tests/package.json new file mode 100644 index 000000000000..bea7ecb17b16 --- /dev/null +++ b/Tasks/MavenV2/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "maven-tests", + "version": "1.0.0", + "description": "Azure Pipelines Maven V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/MavenV2/package-lock.json b/Tasks/MavenV2/package-lock.json index a884cfbb6c3f..6359c551f9ef 100644 --- a/Tasks/MavenV2/package-lock.json +++ b/Tasks/MavenV2/package-lock.json @@ -14,7 +14,7 @@ "resolved": "https://registry.npmjs.org/@types/ltx/-/ltx-2.8.0.tgz", "integrity": "sha512-qHnPVD0FFquypl7Yy8qqvDjhnX3c7toUYjjALK+bug7MfR2WCRTIjw+GUMfehRi/Mbhj5rLAQerPTnTCUzSCWg==", "requires": { - "@types/node": "6.14.0" + "@types/node": "*" } }, "@types/mocha": { @@ -43,11 +43,11 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { - "@types/node": "6.14.0" + "@types/node": "*" } }, "adm-zip": { @@ -60,10 +60,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "asn1": { @@ -71,7 +71,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -110,11 +110,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.6.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "azure-pipelines-tool-lib": { @@ -122,13 +122,13 @@ "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-0.12.0.tgz", "integrity": "sha512-JAlFvMTtEXISrnJY/kgq0LecLi089RqXRf/gMsXYbflmzszklkc+LUJpR0A7NDmJ+9/MWpKY/ZX+Q/zirYa7gw==", "requires": { - "@types/semver": "5.5.0", - "@types/uuid": "3.4.4", - "azure-pipelines-task-lib": "2.8.0", - "semver": "5.6.0", - "semver-compare": "1.0.0", + "@types/semver": "^5.3.0", + "@types/uuid": "^3.0.1", + "azure-pipelines-task-lib": "^2.8.0", + "semver": "^5.3.0", + "semver-compare": "^1.0.0", "typed-rest-client": "1.0.9", - "uuid": "3.3.2" + "uuid": "^3.0.1" }, "dependencies": { "typed-rest-client": { @@ -157,7 +157,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "boolbase": { @@ -170,7 +170,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -184,22 +184,22 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.1", - "entities": "1.1.2", - "htmlparser2": "3.10.1", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "co": { @@ -210,25 +210,25 @@ "codeanalysis-common": { "version": "file:../../_build/Tasks/Common/codeanalysis-common-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "cheerio": "0.22.0", - "fs-extra": "0.30.0", + "azure-pipelines-task-lib": "^2.8.0", + "cheerio": "^0.22.0", + "fs-extra": "^0.30.0", "glob": "7.1.0", - "os": "0.1.1", - "request": "2.88.0", - "strip-bom": "3.0.0", - "xml2js": "0.4.19" + "os": "^0.1.1", + "request": "^2.74.0", + "strip-bom": "^3.0.0", + "xml2js": "^0.4.17" } }, "codecoverage-tools": { "version": "file:../../_build/Tasks/Common/codecoverage-tools-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "cheerio": "0.22.0", - "fs-extra": "0.30.0", - "os": "0.1.1", - "strip-bom": "3.0.0", - "xml2js": "0.4.19" + "azure-pipelines-task-lib": "^2.8.0", + "cheerio": "^0.22.0", + "fs-extra": "^0.30.0", + "os": "^0.1.1", + "strip-bom": "^3.0.0", + "xml2js": "^0.4.17" } }, "combined-stream": { @@ -236,7 +236,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -254,10 +254,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.3", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.2" + "nth-check": "~1.0.1" } }, "css-what": { @@ -270,7 +270,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "delayed-stream": { @@ -283,8 +283,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "requires": { - "domelementtype": "1.3.1", - "entities": "1.1.2" + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, "domelementtype": { @@ -297,7 +297,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.1" + "domelementtype": "1" } }, "domutils": { @@ -305,8 +305,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.1", - "domelementtype": "1.3.1" + "dom-serializer": "0", + "domelementtype": "1" } }, "ecc-jsbn": { @@ -314,8 +314,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "entities": { @@ -353,9 +353,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.20" + "mime-types": "^2.1.12" }, "dependencies": { "combined-stream": { @@ -363,7 +363,7 @@ "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } } } @@ -373,11 +373,11 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, "fs.realpath": { @@ -390,7 +390,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -398,12 +398,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.0.tgz", "integrity": "sha1-Nq3YVtdG0NmeTMJ5e7oa4sZycv0=", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -421,8 +421,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.3.0", + "har-schema": "^2.0.0" } }, "htmlparser2": { @@ -430,12 +430,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "domelementtype": "1.3.1", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.2", - "inherits": "2.0.3", - "readable-stream": "3.4.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" } }, "http-signature": { @@ -443,9 +443,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.15.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -453,8 +453,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -468,12 +468,12 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.2.tgz", - "integrity": "sha512-7aeFm/7oqo0mMhubTSjZ2Juw/F+WJ3hyfCScNVRQdz5RSRhw1Rj4ZlBFsmEajeKgQDI8asqVs31h8DpxEv7IfQ==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash": "4.17.11", + "lodash": "^4.17.15", "sprintf-js": "1.1.2" }, "dependencies": { @@ -497,8 +497,8 @@ "java-common": { "version": "file:../../_build/Tasks/Common/java-common-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "semver": "5.6.0" + "azure-pipelines-task-lib": "^2.8.0", + "semver": "^5.1.0" } }, "jsbn": { @@ -526,7 +526,7 @@ "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsprim": { @@ -545,13 +545,13 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.assignin": { "version": "4.2.0", @@ -589,9 +589,9 @@ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.pick": { "version": "4.4.0", @@ -614,11 +614,18 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } } }, "mime-db": { @@ -631,7 +638,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "1.36.0" + "mime-db": "~1.36.0" } }, "minimatch": { @@ -639,7 +646,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -652,7 +659,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "oauth-sign": { @@ -665,7 +672,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os": { @@ -682,14 +689,14 @@ "@types/mockery": "1.4.29", "@types/node": "10.12.9", "@types/q": "1.5.2", - "adm-zip": "0.4.13", + "adm-zip": "^0.4.11", "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", - "ini": "1.3.5", - "ip-address": "5.9.2", - "ltx": "2.8.1", - "q": "1.5.1", + "ini": "^1.3.4", + "ip-address": "^5.8.9", + "ltx": "^2.6.2", + "q": "^1.5.0", "typed-rest-client": "1.2.0" }, "dependencies": { @@ -740,9 +747,9 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "requires": { - "inherits": "2.0.3", - "string_decoder": "1.2.0", - "util-deprecate": "1.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "request": { @@ -750,26 +757,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.20", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "rimraf": { @@ -777,7 +784,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.0" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -820,23 +827,30 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } } }, "strip-bom": { @@ -849,13 +863,13 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" } }, "tunnel": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" }, "tunnel-agent": { @@ -863,7 +877,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -905,9 +919,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "wrappy": { @@ -920,8 +934,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { diff --git a/Tasks/MavenV2/task.json b/Tasks/MavenV2/task.json index f5ec555451b8..546a41341270 100644 --- a/Tasks/MavenV2/task.json +++ b/Tasks/MavenV2/task.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "releaseNotes": "Configuration of the SonarQube analysis was moved to the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) or [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) extensions, in task `Prepare Analysis Configuration`", diff --git a/Tasks/MavenV2/task.loc.json b/Tasks/MavenV2/task.loc.json index 3136637dabdf..bdfc6e91bbfb 100644 --- a/Tasks/MavenV2/task.loc.json +++ b/Tasks/MavenV2/task.loc.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "releaseNotes": "ms-resource:loc.releaseNotes", diff --git a/Tasks/MavenV3/task.json b/Tasks/MavenV3/task.json index a5de5a414323..79deb5ee16f1 100644 --- a/Tasks/MavenV3/task.json +++ b/Tasks/MavenV3/task.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 3, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "releaseNotes": "Configuration of the SonarQube analysis was moved to the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) or [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) extensions, in task `Prepare Analysis Configuration`", diff --git a/Tasks/MavenV3/task.loc.json b/Tasks/MavenV3/task.loc.json index 10ceb9c4864a..5b5d533eb9be 100644 --- a/Tasks/MavenV3/task.loc.json +++ b/Tasks/MavenV3/task.loc.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 3, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "releaseNotes": "ms-resource:loc.releaseNotes", diff --git a/Tasks/NpmAuthenticateV0/Tests/L0.ts b/Tasks/NpmAuthenticateV0/Tests/L0.ts new file mode 100644 index 000000000000..36180ad90f6d --- /dev/null +++ b/Tasks/NpmAuthenticateV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('NpmAuthenticateV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/NpmAuthenticateV0/Tests/package-lock.json b/Tasks/NpmAuthenticateV0/Tests/package-lock.json new file mode 100644 index 000000000000..875147dc27eb --- /dev/null +++ b/Tasks/NpmAuthenticateV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "npm-authenticate-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/NpmAuthenticateV0/Tests/package.json b/Tasks/NpmAuthenticateV0/Tests/package.json new file mode 100644 index 000000000000..62d5478e2049 --- /dev/null +++ b/Tasks/NpmAuthenticateV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "npm-authenticate-tests", + "version": "1.0.0", + "description": "Azure Pipelines Npm Authenticate V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/NpmAuthenticateV0/package-lock.json b/Tasks/NpmAuthenticateV0/package-lock.json index fb35d2fbf60d..64125da076f9 100644 --- a/Tasks/NpmAuthenticateV0/package-lock.json +++ b/Tasks/NpmAuthenticateV0/package-lock.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -56,25 +56,13 @@ "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" - }, - "dependencies": { - "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", - "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" - } - } } }, "azure-pipelines-task-lib": { @@ -135,9 +123,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -145,17 +133,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "jsbn": { @@ -163,37 +147,17 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" } }, "minimatch": { @@ -209,11 +173,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", "requires": { @@ -224,14 +183,14 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" } }, "q": { @@ -255,9 +214,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "tunnel": { "version": "0.0.4", @@ -265,9 +224,9 @@ "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" }, "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" diff --git a/Tasks/NpmAuthenticateV0/task.json b/Tasks/NpmAuthenticateV0/task.json index 2368ff663f75..b1eed57bae36 100644 --- a/Tasks/NpmAuthenticateV0/task.json +++ b/Tasks/NpmAuthenticateV0/task.json @@ -9,7 +9,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NpmAuthenticateV0/task.loc.json b/Tasks/NpmAuthenticateV0/task.loc.json index 027c377f2028..f0ce082b0eef 100644 --- a/Tasks/NpmAuthenticateV0/task.loc.json +++ b/Tasks/NpmAuthenticateV0/task.loc.json @@ -9,7 +9,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NpmV1/task.json b/Tasks/NpmV1/task.json index 14625e7f35b0..3022e38a5022 100644 --- a/Tasks/NpmV1/task.json +++ b/Tasks/NpmV1/task.json @@ -9,7 +9,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NpmV1/task.loc.json b/Tasks/NpmV1/task.loc.json index 6b66c2f6d725..181d2f1de659 100644 --- a/Tasks/NpmV1/task.loc.json +++ b/Tasks/NpmV1/task.loc.json @@ -9,7 +9,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NuGetCommandV2/task.json b/Tasks/NuGetCommandV2/task.json index 07f59a9d60f3..840ab72c7708 100644 --- a/Tasks/NuGetCommandV2/task.json +++ b/Tasks/NuGetCommandV2/task.json @@ -10,7 +10,7 @@ "version": { "Major": 2, "Minor": 161, - "Patch": 0 + "Patch": 1 }, "runsOn": [ "Agent", diff --git a/Tasks/NuGetCommandV2/task.loc.json b/Tasks/NuGetCommandV2/task.loc.json index 1aa47086bcfa..f275d10ef5e6 100644 --- a/Tasks/NuGetCommandV2/task.loc.json +++ b/Tasks/NuGetCommandV2/task.loc.json @@ -10,7 +10,7 @@ "version": { "Major": 2, "Minor": 161, - "Patch": 0 + "Patch": 1 }, "runsOn": [ "Agent", @@ -535,4 +535,4 @@ "Warning_UpdatingNuGetVersion": "ms-resource:loc.messages.Warning_UpdatingNuGetVersion", "Error_NugetFailedWithCodeAndErr": "ms-resource:loc.messages.Error_NugetFailedWithCodeAndErr" } -} \ No newline at end of file +} diff --git a/Tasks/NuGetPublisherV0/task.json b/Tasks/NuGetPublisherV0/task.json index a70e59990622..cc4329b33f75 100644 --- a/Tasks/NuGetPublisherV0/task.json +++ b/Tasks/NuGetPublisherV0/task.json @@ -9,7 +9,7 @@ "author": "Lawrence Gripper", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NuGetPublisherV0/task.loc.json b/Tasks/NuGetPublisherV0/task.loc.json index 8081833a786e..2298b748805e 100644 --- a/Tasks/NuGetPublisherV0/task.loc.json +++ b/Tasks/NuGetPublisherV0/task.loc.json @@ -9,7 +9,7 @@ "author": "Lawrence Gripper", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NuGetToolInstallerV0/Tests/L0.ts b/Tasks/NuGetToolInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..c2bd1557d883 --- /dev/null +++ b/Tasks/NuGetToolInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('NuGetToolInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/NuGetToolInstallerV0/Tests/package-lock.json b/Tasks/NuGetToolInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..8f8cfebc611f --- /dev/null +++ b/Tasks/NuGetToolInstallerV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "nuget-tool-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/NuGetToolInstallerV0/Tests/package.json b/Tasks/NuGetToolInstallerV0/Tests/package.json new file mode 100644 index 000000000000..312ada10e612 --- /dev/null +++ b/Tasks/NuGetToolInstallerV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "nuget-tool-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Nuget Tool Installer V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/NuGetToolInstallerV0/package-lock.json b/Tasks/NuGetToolInstallerV0/package-lock.json index 036c93981e66..a2da5b09b43f 100644 --- a/Tasks/NuGetToolInstallerV0/package-lock.json +++ b/Tasks/NuGetToolInstallerV0/package-lock.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -56,25 +56,13 @@ "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" - }, - "dependencies": { - "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", - "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" - } - } } }, "azure-pipelines-task-lib": { @@ -135,9 +123,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -145,17 +133,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "jsbn": { @@ -163,37 +147,17 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" } }, "minimatch": { @@ -209,11 +173,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", "requires": { @@ -224,14 +183,14 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" } }, "q": { @@ -240,9 +199,9 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-compare": { "version": "1.0.0", @@ -255,9 +214,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "tunnel": { "version": "0.0.4", @@ -265,9 +224,9 @@ "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" }, "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -279,9 +238,9 @@ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" } } } \ No newline at end of file diff --git a/Tasks/NuGetToolInstallerV0/task.json b/Tasks/NuGetToolInstallerV0/task.json index 608256fbb548..ac61347478d2 100644 --- a/Tasks/NuGetToolInstallerV0/task.json +++ b/Tasks/NuGetToolInstallerV0/task.json @@ -14,7 +14,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": false, diff --git a/Tasks/NuGetToolInstallerV0/task.loc.json b/Tasks/NuGetToolInstallerV0/task.loc.json index fa72eba13c42..063daa42844c 100644 --- a/Tasks/NuGetToolInstallerV0/task.loc.json +++ b/Tasks/NuGetToolInstallerV0/task.loc.json @@ -14,7 +14,7 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": false, diff --git a/Tasks/NuGetToolInstallerV1/Tests/L0.ts b/Tasks/NuGetToolInstallerV1/Tests/L0.ts new file mode 100644 index 000000000000..275b6cc7f9fc --- /dev/null +++ b/Tasks/NuGetToolInstallerV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('NuGetToolInstallerV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/NuGetToolInstallerV1/Tests/package-lock.json b/Tasks/NuGetToolInstallerV1/Tests/package-lock.json new file mode 100644 index 000000000000..8f8cfebc611f --- /dev/null +++ b/Tasks/NuGetToolInstallerV1/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "nuget-tool-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/NuGetToolInstallerV1/Tests/package.json b/Tasks/NuGetToolInstallerV1/Tests/package.json new file mode 100644 index 000000000000..e78261313abd --- /dev/null +++ b/Tasks/NuGetToolInstallerV1/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "nuget-tool-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Nuget Tool Installer V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/NuGetToolInstallerV1/package-lock.json b/Tasks/NuGetToolInstallerV1/package-lock.json index 036c93981e66..a2da5b09b43f 100644 --- a/Tasks/NuGetToolInstallerV1/package-lock.json +++ b/Tasks/NuGetToolInstallerV1/package-lock.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -56,25 +56,13 @@ "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" - }, - "dependencies": { - "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", - "requires": { - "tunnel": "0.0.4", - "underscore": "1.8.3" - } - } } }, "azure-pipelines-task-lib": { @@ -135,9 +123,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -145,17 +133,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "jsbn": { @@ -163,37 +147,17 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" } }, "minimatch": { @@ -209,11 +173,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", "requires": { @@ -224,14 +183,14 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" } }, "q": { @@ -240,9 +199,9 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-compare": { "version": "1.0.0", @@ -255,9 +214,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "tunnel": { "version": "0.0.4", @@ -265,9 +224,9 @@ "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" }, "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -279,9 +238,9 @@ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" } } } \ No newline at end of file diff --git a/Tasks/NuGetToolInstallerV1/task.json b/Tasks/NuGetToolInstallerV1/task.json index 99d8470cee7e..ba89a0c95b10 100644 --- a/Tasks/NuGetToolInstallerV1/task.json +++ b/Tasks/NuGetToolInstallerV1/task.json @@ -14,7 +14,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": false, diff --git a/Tasks/NuGetToolInstallerV1/task.loc.json b/Tasks/NuGetToolInstallerV1/task.loc.json index 4bdcf1516ebb..4305c3a30282 100644 --- a/Tasks/NuGetToolInstallerV1/task.loc.json +++ b/Tasks/NuGetToolInstallerV1/task.loc.json @@ -14,7 +14,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "preview": false, diff --git a/Tasks/NuGetV0/task.json b/Tasks/NuGetV0/task.json index a34762cc5e36..60e0d9c66a31 100644 --- a/Tasks/NuGetV0/task.json +++ b/Tasks/NuGetV0/task.json @@ -10,7 +10,7 @@ "helpMarkDown": "", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/NuGetV0/task.loc.json b/Tasks/NuGetV0/task.loc.json index 7ec9329a59fb..c22403bbb952 100644 --- a/Tasks/NuGetV0/task.loc.json +++ b/Tasks/NuGetV0/task.loc.json @@ -10,7 +10,7 @@ "helpMarkDown": "ms-resource:loc.helpMarkDown", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/OpenPolicyAgentInstallerV0/Tests/L0.ts b/Tasks/OpenPolicyAgentInstallerV0/Tests/L0.ts new file mode 100644 index 000000000000..1f106e9fc052 --- /dev/null +++ b/Tasks/OpenPolicyAgentInstallerV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('OpenPolicyAgentInstallerV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/OpenPolicyAgentInstallerV0/Tests/package-lock.json b/Tasks/OpenPolicyAgentInstallerV0/Tests/package-lock.json new file mode 100644 index 000000000000..5657784458c2 --- /dev/null +++ b/Tasks/OpenPolicyAgentInstallerV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "open-policy-agent-installer-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/OpenPolicyAgentInstallerV0/Tests/package.json b/Tasks/OpenPolicyAgentInstallerV0/Tests/package.json new file mode 100644 index 000000000000..218020fb2f30 --- /dev/null +++ b/Tasks/OpenPolicyAgentInstallerV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "open-policy-agent-installer-tests", + "version": "1.0.0", + "description": "Azure Pipelines Open Policy Agent Installer Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/OpenPolicyAgentInstallerV0/package-lock.json b/Tasks/OpenPolicyAgentInstallerV0/package-lock.json index d18e1af2b106..52d186ea17b0 100644 --- a/Tasks/OpenPolicyAgentInstallerV0/package-lock.json +++ b/Tasks/OpenPolicyAgentInstallerV0/package-lock.json @@ -22,7 +22,7 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", "requires": { - "@types/node": "6.0.117" + "@types/node": "*" } }, "azure-pipelines-task-lib": { @@ -31,11 +31,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.4.1", - "semver": "5.4.1", - "shelljs": "0.3.0", - "uuid": "3.2.1" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "azure-pipelines-tool-lib": { @@ -43,13 +43,13 @@ "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-0.12.0.tgz", "integrity": "sha512-JAlFvMTtEXISrnJY/kgq0LecLi089RqXRf/gMsXYbflmzszklkc+LUJpR0A7NDmJ+9/MWpKY/ZX+Q/zirYa7gw==", "requires": { - "@types/semver": "5.5.0", - "@types/uuid": "3.4.5", - "azure-pipelines-task-lib": "2.8.0", - "semver": "5.4.1", - "semver-compare": "1.0.0", + "@types/semver": "^5.3.0", + "@types/uuid": "^3.0.1", + "azure-pipelines-task-lib": "^2.8.0", + "semver": "^5.3.0", + "semver-compare": "^1.0.0", "typed-rest-client": "1.0.9", - "uuid": "3.2.1" + "uuid": "^3.0.1" }, "dependencies": { "typed-rest-client": { @@ -73,7 +73,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -87,7 +87,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { diff --git a/Tasks/PipAuthenticateV0/Tests/L0.ts b/Tasks/PipAuthenticateV0/Tests/L0.ts new file mode 100644 index 000000000000..03a15b391491 --- /dev/null +++ b/Tasks/PipAuthenticateV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('PipAuthenticateV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PipAuthenticateV0/Tests/package-lock.json b/Tasks/PipAuthenticateV0/Tests/package-lock.json new file mode 100644 index 000000000000..1d83ac425281 --- /dev/null +++ b/Tasks/PipAuthenticateV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "pip-authenticate-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/PipAuthenticateV0/Tests/package.json b/Tasks/PipAuthenticateV0/Tests/package.json new file mode 100644 index 000000000000..e066ed144a19 --- /dev/null +++ b/Tasks/PipAuthenticateV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "pip-authenticate-tests", + "version": "1.0.0", + "description": "Azure Pipelines Pip Authenticate V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/PipAuthenticateV0/package-lock.json b/Tasks/PipAuthenticateV0/package-lock.json index 267b74ce79da..20d9a9e2ea30 100644 --- a/Tasks/PipAuthenticateV0/package-lock.json +++ b/Tasks/PipAuthenticateV0/package-lock.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -71,20 +71,19 @@ } }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" }, "dependencies": { "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -155,9 +154,9 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -165,17 +164,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "js-yaml": { @@ -192,37 +187,17 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" } }, "minimatch": { @@ -238,11 +213,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", "requires": { @@ -253,20 +223,20 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" }, "dependencies": { "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -295,9 +265,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "tunnel": { "version": "0.0.4", @@ -335,7 +305,7 @@ }, "vso-node-api": { "version": "6.5.0", - "resolved": "http://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", + "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", "integrity": "sha512-hFjPLMJkq02zF8U+LhZ4airH0ivaiKzGdlNAQlYFB3lWuGH/UANUrl63DVPUQOyGw+7ZNQ+ufM44T6mWN92xyg==", "requires": { "tunnel": "0.0.4", diff --git a/Tasks/PipAuthenticateV0/task.json b/Tasks/PipAuthenticateV0/task.json index e848f010078e..5d94d2e49e38 100644 --- a/Tasks/PipAuthenticateV0/task.json +++ b/Tasks/PipAuthenticateV0/task.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/PipAuthenticateV0/task.loc.json b/Tasks/PipAuthenticateV0/task.loc.json index b1903a49d001..37958d95933c 100644 --- a/Tasks/PipAuthenticateV0/task.loc.json +++ b/Tasks/PipAuthenticateV0/task.loc.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/PowerShellOnTargetMachinesV3/Tests/L0.ts b/Tasks/PowerShellOnTargetMachinesV3/Tests/L0.ts new file mode 100644 index 000000000000..3a8349fa36c2 --- /dev/null +++ b/Tasks/PowerShellOnTargetMachinesV3/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('PowerShellOnTargetMachineV3 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PowerShellOnTargetMachinesV3/tsconfig.json b/Tasks/PowerShellOnTargetMachinesV3/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/PowerShellOnTargetMachinesV3/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/PublishBuildArtifactsV1/Tests/L0.ts b/Tasks/PublishBuildArtifactsV1/Tests/L0.ts new file mode 100644 index 000000000000..9fbad7fd7c82 --- /dev/null +++ b/Tasks/PublishBuildArtifactsV1/Tests/L0.ts @@ -0,0 +1,29 @@ +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('PublishBuildArtifactsV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PublishBuildArtifactsV1/package-lock.json b/Tasks/PublishBuildArtifactsV1/package-lock.json index 86b8455cddf5..489a212888fe 100644 --- a/Tasks/PublishBuildArtifactsV1/package-lock.json +++ b/Tasks/PublishBuildArtifactsV1/package-lock.json @@ -20,11 +20,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.5.0", - "shelljs": "0.3.0", - "uuid": "3.3.3" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" } }, "balanced-match": { @@ -37,7 +37,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -51,7 +51,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "mockery": { diff --git a/Tasks/PublishCodeCoverageResultsV1/Tests/L0.ts b/Tasks/PublishCodeCoverageResultsV1/Tests/L0.ts new file mode 100644 index 000000000000..a4ca2cf2a55f --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV1/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('PublishCodeCoverageResultsV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PublishCodeCoverageResultsV1/Tests/package-lock.json b/Tasks/PublishCodeCoverageResultsV1/Tests/package-lock.json new file mode 100644 index 000000000000..42280d82eda8 --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV1/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "publish-code-coverage-results-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/PublishCodeCoverageResultsV1/Tests/package.json b/Tasks/PublishCodeCoverageResultsV1/Tests/package.json new file mode 100644 index 000000000000..e6b9c4394737 --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV1/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "publish-code-coverage-results-tests", + "version": "1.0.0", + "description": "Azure Pipelines Publish Code Coverage Results V1 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/PublishCodeCoverageResultsV1/package-lock.json b/Tasks/PublishCodeCoverageResultsV1/package-lock.json index 0f9f403802bd..b147371c9cd7 100644 --- a/Tasks/PublishCodeCoverageResultsV1/package-lock.json +++ b/Tasks/PublishCodeCoverageResultsV1/package-lock.json @@ -8,11 +8,11 @@ "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", "requires": { "minimatch": "3.0.4", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.6.0", - "shelljs": "0.3.0", - "uuid": "3.3.2" + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" }, "dependencies": { "uuid": { @@ -37,7 +37,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -46,33 +46,33 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.1", - "entities": "1.1.2", - "htmlparser2": "3.10.1", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "codecoverage-tools": { "version": "file:../../_build/Tasks/Common/codecoverage-tools-1.0.0.tgz", "requires": { - "azure-pipelines-task-lib": "2.8.0", - "cheerio": "0.22.0", - "fs-extra": "0.30.0", - "os": "0.1.1", - "strip-bom": "3.0.0", - "xml2js": "0.4.19" + "azure-pipelines-task-lib": "^2.8.0", + "cheerio": "^0.22.0", + "fs-extra": "^0.30.0", + "os": "^0.1.1", + "strip-bom": "^3.0.0", + "xml2js": "^0.4.17" } }, "concat-map": { @@ -85,10 +85,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.3", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.2" + "nth-check": "~1.0.1" } }, "css-what": { @@ -96,13 +96,21 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "requires": { - "domelementtype": "1.3.1", - "entities": "1.1.2" + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, "domelementtype": { @@ -115,7 +123,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.1" + "domelementtype": "1" } }, "domutils": { @@ -123,8 +131,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.1", - "domelementtype": "1.3.1" + "dom-serializer": "0", + "domelementtype": "1" } }, "entities": { @@ -132,16 +140,43 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, + "es-abstract": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "fs-extra": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { - "graceful-fs": "4.1.15", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.3" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, "fs.realpath": { @@ -149,35 +184,53 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "domelementtype": "1.3.1", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.2", - "inherits": "2.0.3", - "readable-stream": "3.3.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" } }, "inflight": { @@ -185,21 +238,47 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "4.1.15" + "graceful-fs": "^4.1.6" } }, "klaw": { @@ -207,7 +286,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "4.1.15" + "graceful-fs": "^4.1.9" } }, "lodash.assignin": { @@ -246,9 +325,9 @@ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.pick": { "version": "4.4.0", @@ -275,7 +354,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "mockery": { @@ -288,7 +367,26 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, "once": { @@ -296,7 +394,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os": { @@ -315,27 +413,27 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "requires": { - "inherits": "2.0.3", - "string_decoder": "1.2.0", - "util-deprecate": "1.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "7.1.3" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, "sax": { "version": "1.2.4", @@ -352,12 +450,30 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.2.0" } }, "strip-bom": { @@ -370,24 +486,34 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", + "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "util.promisify": "~1.0.0", + "xmlbuilder": "~11.0.0" } }, "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" } } } \ No newline at end of file diff --git a/Tasks/PublishCodeCoverageResultsV2/Tests/L0.ts b/Tasks/PublishCodeCoverageResultsV2/Tests/L0.ts new file mode 100644 index 000000000000..ff52cecdc03b --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV2/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('PublishCodeCoverageResultsV2 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PublishCodeCoverageResultsV2/Tests/package-lock.json b/Tasks/PublishCodeCoverageResultsV2/Tests/package-lock.json new file mode 100644 index 000000000000..a951d7817d4a --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV2/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "publish-code-coverage-results-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/PublishCodeCoverageResultsV2/Tests/package.json b/Tasks/PublishCodeCoverageResultsV2/Tests/package.json new file mode 100644 index 000000000000..344b96ed25af --- /dev/null +++ b/Tasks/PublishCodeCoverageResultsV2/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "publish-code-coverage-results-tests", + "version": "1.0.0", + "description": "Azure Pipelines Publish Code Coverage Results V2 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/PublishPipelineArtifactV0/task.json b/Tasks/PublishPipelineArtifactV0/task.json index be084255b67d..de23858b84be 100644 --- a/Tasks/PublishPipelineArtifactV0/task.json +++ b/Tasks/PublishPipelineArtifactV0/task.json @@ -9,13 +9,14 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 139, + "Minor": 140, "Patch": 0 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "artifactName", diff --git a/Tasks/PublishPipelineArtifactV0/task.loc.json b/Tasks/PublishPipelineArtifactV0/task.loc.json index 9e4d4523d78a..f6ed326a3fdf 100644 --- a/Tasks/PublishPipelineArtifactV0/task.loc.json +++ b/Tasks/PublishPipelineArtifactV0/task.loc.json @@ -9,13 +9,14 @@ "author": "Microsoft Corporation", "version": { "Major": 0, - "Minor": 139, + "Minor": 140, "Patch": 0 }, "groups": [], "demands": [], - "preview": true, "minimumAgentVersion": "2.155.1", + "preview": false, + "deprecated": true, "inputs": [ { "name": "artifactName", diff --git a/Tasks/PublishPipelineMetadataV0/Tests/L0.ts b/Tasks/PublishPipelineMetadataV0/Tests/L0.ts new file mode 100644 index 000000000000..23805be90d7a --- /dev/null +++ b/Tasks/PublishPipelineMetadataV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('PublishPipelineMetadataV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PublishPipelineMetadataV0/Tests/package-lock.json b/Tasks/PublishPipelineMetadataV0/Tests/package-lock.json new file mode 100644 index 000000000000..cda3b207dd58 --- /dev/null +++ b/Tasks/PublishPipelineMetadataV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "publish-pipeline-metadata-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/PublishPipelineMetadataV0/Tests/package.json b/Tasks/PublishPipelineMetadataV0/Tests/package.json new file mode 100644 index 000000000000..1540d883b21b --- /dev/null +++ b/Tasks/PublishPipelineMetadataV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "publish-pipeline-metadata-tests", + "version": "1.0.0", + "description": "Azure Pipelines Publish Pipeline Metadata V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/PublishPipelineMetadataV0/package-lock.json b/Tasks/PublishPipelineMetadataV0/package-lock.json index 5f094efea462..98468b805791 100644 --- a/Tasks/PublishPipelineMetadataV0/package-lock.json +++ b/Tasks/PublishPipelineMetadataV0/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@types/node": { - "version": "12.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.7.tgz", - "integrity": "sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA==" + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==" }, "@types/semver": { "version": "5.5.0", @@ -15,9 +15,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz", - "integrity": "sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } diff --git a/Tasks/PublishTestResultsV2/make.json b/Tasks/PublishTestResultsV2/make.json index 7d4f6602e15b..29afa0f4b3b6 100644 --- a/Tasks/PublishTestResultsV2/make.json +++ b/Tasks/PublishTestResultsV2/make.json @@ -2,7 +2,7 @@ "externals": { "archivePackages": [ { - "url": "https://publishtestresults.blob.core.windows.net/publishtestresults/10738269/PublishTestResults.zip", + "url": "https://publishtestresults.blob.core.windows.net/publishtestresults/10864897/PublishTestResults.zip", "dest": "./" } ] diff --git a/Tasks/PublishTestResultsV2/task.json b/Tasks/PublishTestResultsV2/task.json index a6067f08422c..def1453482d1 100644 --- a/Tasks/PublishTestResultsV2/task.json +++ b/Tasks/PublishTestResultsV2/task.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 160, - "Patch": 0 + "Patch": 2 }, "demands": [], "releaseNotes": "
  • NUnit3 support
  • Support for Minimatch files pattern
", diff --git a/Tasks/PublishTestResultsV2/task.loc.json b/Tasks/PublishTestResultsV2/task.loc.json index 431ab189f8a4..acdc16d56a58 100644 --- a/Tasks/PublishTestResultsV2/task.loc.json +++ b/Tasks/PublishTestResultsV2/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 160, - "Patch": 0 + "Patch": 2 }, "demands": [], "releaseNotes": "ms-resource:loc.releaseNotes", diff --git a/Tasks/PythonScriptV0/Tests/L0.ts b/Tasks/PythonScriptV0/Tests/L0.ts new file mode 100644 index 000000000000..9fec00ee3f88 --- /dev/null +++ b/Tasks/PythonScriptV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('PythonScriptV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/PythonScriptV0/Tests/package-lock.json b/Tasks/PythonScriptV0/Tests/package-lock.json new file mode 100644 index 000000000000..033daf36934b --- /dev/null +++ b/Tasks/PythonScriptV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "python-script-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/PythonScriptV0/Tests/package.json b/Tasks/PythonScriptV0/Tests/package.json new file mode 100644 index 000000000000..240e7e7a9558 --- /dev/null +++ b/Tasks/PythonScriptV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "python-script-tests", + "version": "1.0.0", + "description": "Azure Pipelines Python Script V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/QuickPerfTestV1/Tests/L0.ts b/Tasks/QuickPerfTestV1/Tests/L0.ts new file mode 100644 index 000000000000..eea750bfeb34 --- /dev/null +++ b/Tasks/QuickPerfTestV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('QuickPerfTestV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/QuickPerfTestV1/tsconfig.json b/Tasks/QuickPerfTestV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/QuickPerfTestV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/ReviewAppV0/Tests/L0.ts b/Tasks/ReviewAppV0/Tests/L0.ts new file mode 100644 index 000000000000..4b466211c3d3 --- /dev/null +++ b/Tasks/ReviewAppV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('ReviewAppV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/ReviewAppV0/Tests/package-lock.json b/Tasks/ReviewAppV0/Tests/package-lock.json new file mode 100644 index 000000000000..2004504570c6 --- /dev/null +++ b/Tasks/ReviewAppV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "review-app-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/ReviewAppV0/Tests/package.json b/Tasks/ReviewAppV0/Tests/package.json new file mode 100644 index 000000000000..c9c352328c34 --- /dev/null +++ b/Tasks/ReviewAppV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "review-app-tests", + "version": "1.0.0", + "description": "Azure Pipelines Review App V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/RunDistributedTestsV1/CheckTestAgentCompat.ps1 b/Tasks/RunDistributedTestsV1/CheckTestAgentCompat.ps1 deleted file mode 100644 index 2723e6cbb4af..000000000000 --- a/Tasks/RunDistributedTestsV1/CheckTestAgentCompat.ps1 +++ /dev/null @@ -1,76 +0,0 @@ -function Check-AgentCompat($ProductVersion) -{ - try - { - $InstalledVersionRegValueName = "Version" - $InstalledVersionRegKey = ("SOFTWARE\Microsoft\DevDiv\vstf\Servicing\{0}\testExecCore" -f $ProductVersion) - - if ($InstalledVersionRegKey -and $InstalledVersionRegValueName) - { - $versionString = $null - - #if 64bit OS, check 64bit registry view first - if ((Get-WmiObject -Class Win32_OperatingSystem -ComputerName "localhost" -ea 0).OSArchitecture -eq '64-bit') - { - $versionString = Get-RegistryValue -RegistryHive LocalMachine -Key $InstalledVersionRegKey -Value $InstalledVersionRegValueName -RegistryView Registry64 - } - - if($versionString -eq $null) - { - $versionString = Get-RegistryValue -RegistryHive LocalMachine -Key $InstalledVersionRegKey -Value $InstalledVersionRegValueName -RegistryView Registry32 - } - - if($versionString) - { - $versionArray = $versionString.split('.') - - $minorVersion=$null - $majorVersion=$null - if([Int]::TryParse($versionArray[0], [ref]$majorVersion) -and [Int]::TryParse($versionArray[2], [ref]$minorVersion)) - { - if($majorVersion -eq 14 -and $minorVersion -le 24712) - { - # Comparing with version of Agent last shipped that does not contain the changes. - Write-Error "The test agent being used does not support the feature to execute tests by selecting Test Suite(s). Please use a newer version." -Verbose - } - } - } - } - } - catch - { - #Ignore - } -} - -function Get-RegistryValue { - param - ( - [parameter(Mandatory = $true)] - [Microsoft.Win32.RegistryHive] - $RegistryHive, - - [parameter(Mandatory = $true)] - [System.String] - $Key, - - [parameter(Mandatory = $true)] - [System.String] - $Value, - - [parameter(Mandatory = $true)] - [Microsoft.Win32.RegistryView] - $RegistryView - ) - - $baseKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey($RegistryHive, $RegistryView) - $subKey = $baseKey.OpenSubKey($Key) - - if($subKey -ne $null) - { - return $subKey.GetValue($Value) - } - return $null -} - -Check-AgentCompat -ProductVersion "14.0" diff --git a/Tasks/RunDistributedTestsV1/README.md b/Tasks/RunDistributedTestsV1/README.md deleted file mode 100644 index f225c214768c..000000000000 --- a/Tasks/RunDistributedTestsV1/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# Run Functional Tests Task - -### Overview -The Run Functional Tests task should be used when you want to run tests on one or more remote machines and you cannot run tests on build machine. Typical scenarios – tests that require additional installations on the test machines like different browsers for Selenium tests, running Coded UI Tests or a specific OS configuration or execute lots of unit tests faster on multiple machines etc. You can run unit tests, integration tests, functional tests – any test that you can run using vstest.console.exe can be run using this task. To use this task, *it needs to be preceded with “Visual Studio Test Agent Deployment” task*. -To learn more about the general usage of the task, please see https://msdn.microsoft.com/en-us/library/mt270062.aspx and https://blogs.msdn.com/b/visualstudioalm/archive/2015/06/28/10618066.aspx - -### The different parameters of the task are explained below: - -#### Setup Options -- **Machines:** Required Field. Provide a comma separated list of machine names or "Azure Resource Group" name or Variable name containing the list of machines which should be used to run tests. - -- **Test drop location:** Required Field. Location on the test machine(s) where the test binaries have been copied to. ‘Windows Machine File Copy’ task or ‘Azure File Copy’ task (for Azure machines) can be used to copy the test binaries. System Environment Variables from the agent machines can also be used in specifying the drop location. For example, c:\tests or %systemdrive%\Tests - -#### Execution Options -- **Test selection:** You can run tests by specifying test files and assemblies or using Test Plan/Test Suite. - -- **Test assembly:** Required Field. This field specifies the test assemblies from which the tests should be picked. - * Wildcards can be used - * Multiple paths can be specified separated by a semicolon - * Paths are relative to the root directory of the test drop location - -For example, `**\commontests\*test*.dll; **\frontendtests\*test*.dll;` - - -- **Test filter criteria:** Filters tests from within the test assembly files. For example, “Owner=james&Priority=1”. This option works the same way as the console option /TestCaseFilter for vstest.console.exe -For more information, see https://msdn.microsoft.com/en-us/library/jj155796.aspx - -- **Test plan:** Select the test plan. - -- **Test suite:** Select one or more test suites within the test plan that contains automated tests. - -- **Test configuration:** Select a test configuration to report against. - -- **Run settings file:** File Path to a runsettings or testsettings file can be specified here. The path can be to a file in the repository or a path to a file on the Build Agent machine. Use $(Build.SourcesDirectory) to access the root project folder. For more information on these files, please see https://msdn.microsoft.com/library/jj635153.aspx - -- **Override testrun parameters:** Override parameters defined in the TestRunParameters section of the runsettings file. For example: Platform=$(platform);Port=8080 -For more information, please see https://blogs.msdn.com/b/visualstudioalm/archive/2015/09/04/supplying-run-time-parameters-to-tests.aspx - -- **Code coverage enabled:** If set, this will collect code coverage information during the run and upload the results to the server. This is supported for .net and C++ projects only. To customize Code Coverage analysis and manage inclusions and exclusions, please see https://msdn.microsoft.com/library/jj159530.aspx - -- **Distribute tests based on:** Specify how the tests should be distributed. - -#### Reporting Options --**Test run title:** Provide a name for the test run. - -- **Build platform:** Build Platform against which the Test Run should be reported. Field is used for reporting purposes only. For example, x64 or x86. If you are using the Deployment – Build, Deploy and Distributed Test template, this is already defined for you. Alternatively, if you have defined a variable for platform in your Build task, use that here. - -- **Build configuration:** Build Configuration against which the Test Run should be reported. Field is used for reporting purposes only. For example, Debug or Release. If you are using the Deployment – Build, Deploy and Distributed Test template, this is already defined for you. Alternatively, if you have defined a variable for Configuration in your Build task, use that here. - -- **Test configurations:** Report the configuration on which the Test case was run. Field is used for reporting purposes only. Syntax: : . -For example, FullyQualifiedName~Chrome:12 will report all test methods which have Chrome in their Fully Qualified name and map them to Configuration ID 12 defined in MTM. Use DefaultTestConfiguration: as a catch all - -- **Application under test machines:** Machine(s) on which the Application Under Test is deployed. This is used to collect Code Coverage data from those machines. Use this in conjunction with Code Coverage Enabled checkbox. - -Note: There is no explicit field to specify path to test adapters in the task. The task automatically searches for "packages" directory that exists in the same folder as the .sln file (nuget restored directory structure). If your adapters are in a different directory or you did not copy over the source files, use a runsettings file with TestAdaptersPaths as described at https://msdn.microsoft.com/en-us/library/jj635153.aspx - - -### Scenarios Supported -Here is a high level list of the topology support using this task: - -1. Running automated tests against on-premise standard environments -2. Running automated tests against existing azure environments -3. Running automated tests against newly provisioned azure environments - -### This is the supported matrix for the scenarios above: -- **TFS** - - a. On Premise and VS Online - -- **BuildAgents** - - a. Both Hosted as well as Onpremise BuildAgents are supported. - - b. Using crossplat agent for any BDT tasks is not supported. - - c. BuildAgent must be able to communicate with all test machines, and thus if test machines are on-premise, hosted build agent pool (in case of VS Online) can't be used. - - d. BuildAgent should have internet access to download test agents. -If this is not the case, testagent should be manually downloaded from official msdn page, uploaded to a network location accessible by build agent, and then used in DeployTestAgent task via "custom test agent location" parameter. However if there is a new version of TestAgent available, the onus is on the user to repeat the same process again to update the test machines. Details provided in the help section for the Test Agent Deployment task. - -- **CI/CD workflow** - - a. The BDT tasks are supported in both Build and RM workflow - -- **Machine group configuration** - - a. To use BDT, only Windows OS based machines are supported inside a machine group. Adding Linux/IOS or other platforms inside machines groups and using BDT tasks is not supported. - - b. Installing any VisualStudio SKU on any of the test machines is not supported. - - c. Similarly installing any older version of TestAgent on any of the test machines is not supported. - -- **Test machine topologies** - - a. Azure based test machines are fully supported - both existing test machines, and newly provisioned ones. - - b. TestAgent machines must have network access to the TFS instance in use. Because of this network isolated test machines are not supported. - - c. Domain joined machines are supported. - - d. For workgroup joined testmachines, https authentication must be enabled and configured during machine group creation. - -- **Usage Error Conditions** - - a. Using same test machines across different machine groups, and running builds (with any BDT tasks) parallelly against those machine groups is not supported. - - b. Cancelling an inprogress build/release with BDT tasks is not supported. If you do cancel, your subsequent builds may misbehave. - - c. Cancelling an ongoing test run queued via BDT tasks is not supported. - - d. Configuring Testagent and running tests as a non-admin/service account is not supported. - - e. Running tests for Universal Windows Platform apps is not supported. Please use Visual Studio Test task for running these tests. - -### Here is a list of other tasks that can be used with this task in the Build-Deploy-Test (BDT) workflow: - -1. *Deploy Azure Resource Group*: https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureResourceGroupDeploymentV2 -2. *Azure File Copy*: https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/AzureFileCopyV2 -3. *Windows Machine File Copy*: https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/WindowsMachineFileCopyV2 -4. *PowerShell on Target Machines*: https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/PowerShellOnTargetMachinesV3 -5. *Deploy Visual Studio Test Agent*: https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/DeployVisualStudioTestAgentV2 - -
diff --git a/Tasks/RunDistributedTestsV1/RunDistributedTests.ps1 b/Tasks/RunDistributedTestsV1/RunDistributedTests.ps1 deleted file mode 100644 index 5f98fc06d1bd..000000000000 --- a/Tasks/RunDistributedTestsV1/RunDistributedTests.ps1 +++ /dev/null @@ -1,338 +0,0 @@ -param( - [string]$testMachineGroup, - [string]$dropLocation, - [string]$sourcefilters, - [string]$testFilterCriteria, - [string]$testRunTitle, - [string]$platform, - [string]$configuration, - [string]$runSettingsFile, - [string]$codeCoverageEnabled, - [string]$overrideRunParams, - [string]$testConfigurations, - [string]$autMachineGroup, - [string]$testSelection, - [string]$testPlan, - [string]$testSuite, - [string]$testConfiguration, - [string]$customSlicingEnabled - -) - -Function CmdletHasMember($memberName) { - $cmdletParameter = (gcm Invoke-RunDistributedTests).Parameters.Keys.Contains($memberName) - return $cmdletParameter -} - -Function Split-Parameters -{ - param - ( - [String] - $OverridingParameters, - - [String] - $Separator, - - [Char] - $EscapeCharacter - ) - - $inputStr = $OverridingParameters - $parameterStrings = New-Object System.Collections.Generic.List[String] - $startOfSegment = 0 - $index = 0 - - while ($index -ilt $inputStr.Length) - { - $index = $inputStr.indexOf($Separator, $index) - if ($index -gt 0 -and $inputStr[$index - 1] -eq $EscapeCharacter) - { - $index += $Separator.Length - continue - } - if ($index -eq -1) - { - break - } - $parameterStrings.Add($inputStr.Substring($startOfSegment, $index - $startOfSegment).Replace($EscapeCharacter + $Separator, $Separator)) - $index += $Separator.Length - $startOfSegment = $index - } - $parameterStrings.Add($inputStr.Substring($startOfSegment).Replace($EscapeCharacter + $Separator, $Separator)) - - return $parameterStrings -} - -Function Get-PropertiesMapping -{ - param - ( - [String] - $OverridingParameters - ) - - $parameterStrings = Split-Parameters -OverridingParameters $OverridingParameters -Separator ";" -EscapeCharacter '\' - $properties = New-Object 'system.collections.generic.dictionary[string,string]' - - foreach ($s in $parameterStrings) - { - $pair = $s.Split('=', 2) - if ($pair.Length -eq 2) - { - if (!$properties.ContainsKey($pair[0])) - { - $properties.Add($pair[0], $pair[1]) - } - } - } - - return $properties -} - -Function Override-TestSettingProperties -{ - param - ( - [String] - $OverridingParameters, - - [System.Xml.XmlDocument] - $TestSettingsXmlDoc - ) - - $properties = Get-PropertiesMapping -OverridingParameters $OverridingParameters - $propertyNodes = $TestSettingsXmlDoc.TestSettings.Properties.ChildNodes - $hasOverridenProperties = $false - - foreach($property in $propertyNodes) - { - if ([string]::CompareOrdinal($property.LocalName, "Property") -ne 0 ) - { - continue - } - - $nameAttribute = $property.name - $valueAttribute = $property.value - - if(-not $nameAttribute) - { - $nameAttribute = $property.Name - } - - if(-not $valueAttribute) - { - $valueAttribute = $property.Value - } - - if (-not ($nameAttribute -and $valueAttribute)) - { - continue - } - - if ($properties.ContainsKey($nameAttribute)) - { - $hasOverridenProperties = $true - Write-Verbose "Overriding value for parameter : $nameAttribute" - if($property.value) - { - $property.value = $properties[$nameAttribute] - } - elseif($property.Value) - { - $property.Value = $properties[$nameAttribute] - } - } - } - - return $hasOverridenProperties -} - -Write-Warning "This task and it’s companion task (Visual Studio Test Agent Deployment) are now deprecated and will stop working on 10-March-2019. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent phase setting. Use the ‘Visual Studio Test Platform’ task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests. Visit https://aka.ms/testingwithphases for more information." -Write-Verbose "Entering script RunDistributedTests.ps1" -Write-Verbose "TestMachineGroup = $testMachineGroup" -Write-Verbose "Test Drop Location = $dropLocation" -Write-Verbose "Source Filter = $sourcefilters" -Write-Verbose "Test Filter Criteria = $testFilterCriteria" -Write-Verbose "RunSettings File = $runSettingsFile" -Write-Verbose "Build Platform = $platform" -Write-Verbose "Build Configuration = $configuration" -Write-Verbose "CodeCoverage Enabled = $codeCoverageEnabled" -Write-Verbose "TestRun Parameters to override = $overrideRunParams" -Write-Verbose "TestConfiguration = $testConfigurations" -Write-Verbose "Application Under Test Machine Group = $autTestMachineGroup" - - -# Import the Task.Internal dll that has all the cmdlets we need for Build -import-module "Microsoft.TeamFoundation.DistributedTask.Task.Common" -import-module "Microsoft.TeamFoundation.DistributedTask.Task.Internal" -import-module "Microsoft.TeamFoundation.DistributedTask.Task.DTA" - -Write-Verbose "Getting the connection object" -$connection = Get-VssConnection -TaskContext $distributedTaskContext - -# Get current directory. -$currentDirectory = Convert-Path . -$unregisterTestAgentScriptLocation = Join-Path -Path $currentDirectory -ChildPath "TestAgentUnRegistration.ps1" -$checkTaCompatScriptLocation = Join-Path -Path $currentDirectory -ChildPath "CheckTestAgentCompat.ps1" -Write-Verbose "UnregisterTestAgent script Path = $unRegisterTestAgentLocation" - -Write-Verbose "Calling Invoke-RunDistributedTests" - -$checkTestAgentCompatScriptLocationMemberExists = CmdletHasMember "CheckTestAgentCompatScriptLocation" -$checkCustomSlicingEnabledMemberExists = CmdletHasMember "CustomSlicingEnabled" -$taskContextMemberExists = CmdletHasMember "TaskContext" - -throw "This task and its companion task (Visual Studio Test Agent Deployment) are now not supported. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent phase setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests. Visit https://aka.ms/testingwithphases for more information." - -if($overrideRunParams -and $runSettingsFile -and (Test-Path $runSettingsFile)) -{ - if (([string]::Compare([io.path]::GetExtension($runSettingsFile), ".testsettings", $True) -eq 0)) - { - $settingsXML = $null - try - { - $settingsXML = [xml](Get-Content $runSettingsFile) - } - catch - { - Write-Verbose "Exception occurred reading provided testsettings $_.Exception.message " - } - if($settingsXML -eq $null -or (-not $settingsXML.TestSettings) ) - { - Write-Warning "The specified testsettings file $runSettingsFile is invalid or does not exist. Provide a valid settings file or clear the field." - } - else - { - $hasOverridenProperties = Override-TestSettingProperties -OverridingParameters $overrideRunParams -TestSettingsXmlDoc $settingsXML - if($hasOverridenProperties) - { - $newTestSettingsFile = [io.path]::Combine($env:TEMP, ([GUID]::NewGuid()).toString() + ".testsettings" ) - $settingsXML.Save($newTestSettingsFile) - Write-Verbose "Task will be using new TestSettings file created after overriding properties : $newTestSettingsFile" - $runSettingsFile = $newTestSettingsFile - } - } - # Resetting overrideRunParams as we have already overriden them. Also needed to avoid not supported error of cmdlet. - $overrideRunParams = $null - } -} - -$suites = $testSuite.Split(",") -$testSuites = @() -foreach ($suite in $suites) -{ - $suiteId = 0 - if([int]::TryParse($suite, [ref]$suiteId)) - { - $testSuites += $suiteId - } -} - -$testPlanId = 0 -if([int]::TryParse($testPlan, [ref]$testPlanId)){} - -$testConfigurationId = 0 -if([int]::TryParse($testConfiguration, [ref]$testConfigurationId)){} - -$customSlicingEnabledFlag = $false -if([bool]::TryParse($customSlicingEnabled, [ref]$customSlicingEnabledFlag)){} - -if([string]::Equals($testSelection, "testPlan")) -{ - if($checkCustomSlicingEnabledMemberExists) - { - try - { - Write-Verbose "Invoking Run Distributed Tests with Register Environment support" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter "*.dll" -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFile -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabled -TestRunParams $overrideRunParams -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle -TestSelection $testSelection -TestPlan $testPlanId -TestSuites $testSuites -TestConfig $testConfigurationId -TaskContext $distributedTaskContext -CheckTestAgentCompatScriptLocation $checkTaCompatScriptLocation -CustomSlicingEnabled $customSlicingEnabledFlag - } - catch - { - Write-Host "##vso[task.logissue type=error;code=" $_.Exception.Message ";TaskName=DTA]" - throw - } - } - elseif($checkTestAgentCompatScriptLocationMemberExists) - { - if($customSlicingEnabledFlag) - { - Write-Warning "Update the build agent to run tests with uniform distribution. If you are using hosted agent there are chances that it is still not updated, so retry using your own agent." - } - try - { - if($taskContextMemberExists) - { - Write-Verbose "Invoking Run Distributed Tests with Register Environment support" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter "*.dll" -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFile -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabled -TestRunParams $overrideRunParams -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle -TestSelection $testSelection -TestPlan $testPlanId -TestSuites $testSuites -TestConfig $testConfigurationId -TaskContext $distributedTaskContext -CheckTestAgentCompatScriptLocation $checkTaCompatScriptLocation - } - else - { - Write-Verbose "Invoking Run Distributed Tests with Machine Group Confg" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter "*.dll" -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFilePreview -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabledPreview -TestRunParams $overrideRunParamsPreview -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle -TestSelection $testSelection -TestPlan $testPlanId -TestSuites $testSuites -TestConfig $testConfigurationId -CheckTestAgentCompatScriptLocation $checkTaCompatScriptLocation - } - } - catch - { - Write-Host "##vso[task.logissue type=error;code=" $_.Exception.Message ";TaskName=DTA]" - throw - } - } - else - { - throw (Get-LocalizedString -Key "Update the build agent to run tests from test plan. If you are using hosted agent there are chances that it is still not updated, so retry using your own agent.") - } -} -else -{ - if($checkCustomSlicingEnabledMemberExists) - { - try - { - Write-Verbose "Invoking Run Distributed Tests with Register Environment support" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter $sourcefilters -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFile -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabled -TestRunParams $overrideRunParams -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle -TaskContext $distributedTaskContext -CustomSlicingEnabled $customSlicingEnabledFlag - } - catch - { - Write-Host "##vso[task.logissue type=error;code=" $_.Exception.Message ";TaskName=DTA]" - throw - } - } - else - { - if($customSlicingEnabledFlag) - { - Write-Warning "Update the build agent to run tests with uniform distribution. If you are using hosted agent there are chances that it is still not updated, so retry using your own agent." - } - try - { - if($taskContextMemberExists) - { - Write-Verbose "Invoking Run Distributed Tests with Register Environment support" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter $sourcefilters -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFile -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabled -TestRunParams $overrideRunParams -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle -TaskContext $distributedTaskContext - } - else - { - Write-Verbose "Invoking Run Distributed Tests with Machng Group Confg" - - Invoke-RunDistributedTests -TestMachineGroup $testMachineGroup -SourceFilter $sourcefilters -TestCaseFilter $testFilterCriteria -RunSettingsPath $runSettingsFile -Platform $platform -Configuration $configuration -CodeCoverageEnabled $codeCoverageEnabled -TestRunParams $overrideRunParams -TestDropLocation $dropLocation -Connection $connection -TestConfiguration $testConfigurations -AutMachineGroup $autMachineGroup -UnregisterTestAgentScriptLocation $unregisterTestAgentScriptLocation -TestRunTitle $testRunTitle - } - } - catch - { - Write-Host "##vso[task.logissue type=error;code=" $_.Exception.Message ";TaskName=DTA]" - throw - } - } -} - -if (([string]::Compare([io.path]::GetExtension($runSettingsFile), ".tmp", $True) -eq 0) -or $hasOverridenProperties) -{ - Write-Host "Removing temp settings file : $runSettingsFile" - Remove-Item $runSettingsFile -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/de-de/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/de-de/resources.resjson deleted file mode 100644 index 69b68c1988bb..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/de-de/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Funktionstests ausführen", - "loc.helpMarkDown": "[Weitere Informationen](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "Veraltet: Diese Aufgabe und die begleitende Aufgabe (\"Visual Studio Test-Agent-Bereitstellung\") sind veraltet. Verwenden Sie stattdessen die Aufgabe \"Visual Studio Test\". Die VSTest-Aufgabe kann sowohl Komponenten- als auch Funktionstests ausführen. Führen Sie Tests mithilfe der Multi-Agent-Auftragseinstellung auf einem oder mehreren Agents aus. Verwenden Sie die Aufgabe \"Visual Studio Test-Plattform\", um Tests auszuführen, ohne Visual Studio auf dem Agent zu benötigen. Die VSTest-Aufgabe bietet außerdem neue Funktionen wie z. B. die automatische erneute Ausführung von fehlerhaften Tests.", - "loc.instanceNameFormat": "Tests $(sourcefilters) für $(testMachineGroup) ausführen", - "loc.group.displayName.setupOptions": "Setupoptionen", - "loc.group.displayName.executionOptions": "Ausführungsoptionen", - "loc.group.displayName.reportingOptions": "Berichtoptionen", - "loc.input.label.testMachineGroup": "Computer", - "loc.input.help.testMachineGroup": "Stellen Sie eine durch Kommas getrennte Liste der IP-Computeradressen oder FQDNs bereit. Beispiel: \"dbserver.fabrikam.com\" oder \"192.168.12.34\". Sie können auch die Ausgabevariable anderer Tasks angeben. Beispiel: \"$(variableName)\". Alternativ können Sie einen Computergruppennamen angeben.", - "loc.input.label.dropLocation": "Testablagespeicherort", - "loc.input.help.dropLocation": "Der Speicherort, an dem die Testbinärdateien im Rahmen des Tasks \"Dateikopiervorgang auf Windows Computer\" oder \"Azure-Dateikopiervorgang\" auf den Agent-Computern abgelegt wurden. In der Speicherort-Zeichenfolge können auch Systemumgebungsvariablen wie \"%systemdrive%\\Tests\", \"%temp%\\DropLocation\" usw. verwendet werden.", - "loc.input.label.testSelection": "Testauswahl", - "loc.input.help.testSelection": "Wählen Sie aus, wie Tests auszuführen sind: mithilfe von Testassemblys oder eines Testplans.", - "loc.input.label.testPlan": "Testplan", - "loc.input.help.testPlan": "Wählen Sie einen Testplan aus.", - "loc.input.label.testSuite": "Testsammlung", - "loc.input.help.testSuite": "Wählen Sie Testsammlungen aus dem Testplan aus.", - "loc.input.label.testConfiguration": "Testkonfiguration", - "loc.input.help.testConfiguration": "Wählen Sie die Testkonfiguration aus.", - "loc.input.label.sourcefilters": "Testassembly", - "loc.input.help.sourcefilters": "Die Testbinärdateien, für die Tests ausgeführt werden sollen. Platzhalter können verwendet werden, z. B. \"**\\*test*.dll;\" für alle DLLs, deren Name \"test\" enthält.", - "loc.input.label.testFilterCriteria": "Testfilterkriterien", - "loc.input.help.testFilterCriteria": "Geben Sie optional die Testfall-Filterkriterien an, z. B. \"Owner=james&Priority=1\".", - "loc.input.label.runSettingsFile": "Testlaufeinstellungsdatei", - "loc.input.help.runSettingsFile": "Pfad zur Ausführungs- oder Testeinstellungsdatei, die bei den Tests verwendet werden soll.", - "loc.input.label.overrideRunParams": "Testlaufparameter überschreiben", - "loc.input.help.overrideRunParams": "Überschreiben Sie Parameter, die im Abschnitt \"TestRunParameters\" der Datei mit Laufzeiteinstellungen oder im Abschnitt \"Properties\" der Datei mit Testeinstellungen definiert sind. Beispiel: AppURL=$(DeployURL);Port=8080. Hinweis: Auf Eigenschaften in der Datei mit den Testeinstellungen kann über TestContext unter Verwendung von Test Agent 2017 Update 4 oder höher zugegriffen werden.", - "loc.input.label.codeCoverageEnabled": "Code Coverage aktiviert", - "loc.input.help.codeCoverageEnabled": "Angabe, ob Code Coverage aktiviert werden muss.", - "loc.input.label.customSlicingEnabled": "Tests nach Anzahl der Computer verteilen", - "loc.input.help.customSlicingEnabled": "Tests werden basierend auf der Anzahl der bereitgestellten Computer anstatt basierend auf der Anzahl der Testcontainer verteilt. Beachten Sie, dass Tests innerhalb einer DLL auch auf mehrere Computer verteilt werden können.", - "loc.input.label.testRunTitle": "Testlauftitel", - "loc.input.help.testRunTitle": "Geben Sie einen Namen für den Testlauf an.", - "loc.input.label.platform": "Plattform", - "loc.input.help.platform": "Plattform, für die Testberichte erstellt werden sollen. Wenn Sie eine Variable für die Plattform in Ihrer Buildaufgabe erstellt haben, verwenden Sie diese hier.", - "loc.input.label.configuration": "Konfiguration", - "loc.input.help.configuration": "Konfiguration, für die Testberichte erstellt werden sollen. Wenn Sie eine Variable für die Konfiguration in Ihrer Buildaufgabe erstellt haben, verwenden Sie diese hier.", - "loc.input.label.testConfigurations": "Testkonfigurationen", - "loc.input.help.testConfigurations": "Ordnen Sie optional einen Testfallfilter für eine Testkonfigurations-ID zu. Syntax: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>. Beispiel: \"FullyQualifiedName~Chrome:12\"", - "loc.input.label.autMachineGroup": "Computer (zu testende Anwendung)", - "loc.input.help.autMachineGroup": "Eine durch Kommas getrennte Liste mit Computern, auf denen Serverprozesse wie W3WP.exe ausgeführt werden, oder eine Ausgabevariable bzw. ein Computergruppenname." -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/en-US/resources.resjson deleted file mode 100644 index 8027a913a297..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/en-US/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Run functional tests", - "loc.helpMarkDown": "[More information](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", - "loc.instanceNameFormat": "Run Tests $(sourcefilters) on $(testMachineGroup)", - "loc.group.displayName.setupOptions": "Setup Options", - "loc.group.displayName.executionOptions": "Execution Options", - "loc.group.displayName.reportingOptions": "Reporting Options", - "loc.input.label.testMachineGroup": "Machines", - "loc.input.help.testMachineGroup": "Provide a comma separated list of machine IP addresses or FQDNs. Eg: `dbserver.fabrikam.com or 192.168.12.34` Or provide output variable of other tasks. Eg: `$(variableName)` Or provide a Machine Group Name", - "loc.input.label.dropLocation": "Test Drop Location", - "loc.input.help.dropLocation": "Location where the test binaries have been dropped in the agent machine(s) as part of the 'Windows Machine File Copy' or 'Azure File Copy' task. System Environment Variables can also be used in location string. e.g., `%systemdrive%\\Tests`, `%temp%\\DropLocation` etc.", - "loc.input.label.testSelection": "Test Selection", - "loc.input.help.testSelection": "Select the way you want to run tests : using Test Assemblies or using Test Plan.", - "loc.input.label.testPlan": "Test Plan", - "loc.input.help.testPlan": "Select a Test Plan.", - "loc.input.label.testSuite": "Test Suite", - "loc.input.help.testSuite": "Select Test Suites from the Test Plan.", - "loc.input.label.testConfiguration": "Test Configuration", - "loc.input.help.testConfiguration": "Select Test Configuration.", - "loc.input.label.sourcefilters": "Test Assembly", - "loc.input.help.sourcefilters": "Test binaries to run tests on. Wildcards can be used. For example, `**\\*test*.dll;` for all dlls containing 'test' in their name.", - "loc.input.label.testFilterCriteria": "Test Filter criteria", - "loc.input.help.testFilterCriteria": "Optionally specify the test case filter criteria. For example, `Owner=james&Priority=1`", - "loc.input.label.runSettingsFile": "Run Settings File", - "loc.input.help.runSettingsFile": "Path to runsettings or testsettings file to use with the tests.", - "loc.input.label.overrideRunParams": "Override Test Run Parameters", - "loc.input.help.overrideRunParams": "Override parameters defined in the `TestRunParameters` section of runsettings file or `Properties` section of testsettings file. For example: `AppURL=$(DeployURL);Port=8080`. Note: Properties specified in testsettings file can be accessed via the TestContext using Test Agent 2017 Update 4 or higher.", - "loc.input.label.codeCoverageEnabled": "Code Coverage Enabled", - "loc.input.help.codeCoverageEnabled": "Whether code coverage needs to be enabled.", - "loc.input.label.customSlicingEnabled": "Distribute tests by number of machines", - "loc.input.help.customSlicingEnabled": "Tests will be distributed based on the number of machines provided instead of number of test containers. Note that tests within a dll might also be distributed to multiple machines.", - "loc.input.label.testRunTitle": "Test Run Title", - "loc.input.help.testRunTitle": "Provide a name for the Test Run.", - "loc.input.label.platform": "Platform", - "loc.input.help.platform": "Platform against which the tests should be reported. If you have defined a variable for platform in your build task, use that here.", - "loc.input.label.configuration": "Configuration", - "loc.input.help.configuration": "Configuration against which the tests should be reported. If you have defined a variable for configuration in your build task, use that here.", - "loc.input.label.testConfigurations": "Test Configurations", - "loc.input.help.testConfigurations": "Optionally associate a test case filter against a test configuration ID. Syntax: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>. For example: `FullyQualifiedName~Chrome:12`", - "loc.input.label.autMachineGroup": "Application Under Test Machines", - "loc.input.help.autMachineGroup": "Comma separated list of machines or output variable or Machine Group Name on which server processes such as W3WP.exe is running" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/es-es/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/es-es/resources.resjson deleted file mode 100644 index 0d49ab68a40c..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/es-es/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Ejecutar pruebas funcionales", - "loc.helpMarkDown": "[Más información](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "En desuso: Esta tarea y la que la acompaña (Implementación de Visual Studio Test Agent) están en desuso. Use la tarea \"Visual Studio Test\" en su lugar. La tarea VSTest puede ejecutar tanto pruebas unitarias como funcionales. Ejecute pruebas en uno o más agentes con la configuración de trabajo multiagente. Use la tarea \"Visual Studio Test Platform\" para ejecutar pruebas sin necesidad de tener Visual Studio en el agente. La tarea VSTest también aporta funcionalidad nueva, como volver a ejecutar automáticamente las pruebas con errores.", - "loc.instanceNameFormat": "Ejecutar pruebas $(sourcefilters) en $(testMachineGroup)", - "loc.group.displayName.setupOptions": "Opciones de instalación", - "loc.group.displayName.executionOptions": "Opciones de ejecución", - "loc.group.displayName.reportingOptions": "Opciones de informe", - "loc.input.label.testMachineGroup": "Máquinas", - "loc.input.help.testMachineGroup": "Proporcione una lista separada por comas de las direcciones IP de máquinas o FQDN. Por ejemplo: \"dbserver.fabrikam.com o 192.168.12.34\". O bien, proporcione la variable de salida de las otras tareas. Por ejemplo: \"$(variableName)\" o el nombre de un grupo de máquinas.", - "loc.input.label.dropLocation": "Ubicación de almacenamiento de la prueba", - "loc.input.help.dropLocation": "Ubicación de las máquinas de agente donde se colocaron los archivos binarios de prueba como parte de la tarea \"Copia de archivos de la máquina con Windows\" o \"Copia de archivos de Azure\". También se pueden usar variables de entorno del sistema en la cadena de ubicación, p. ej., `%systemdrive%\\Tests`, `%temp%\\DropLocation`, etc.", - "loc.input.label.testSelection": "Selección de pruebas", - "loc.input.help.testSelection": "Seleccione la forma en que desea ejecutar pruebas: utilizando los ensamblados de prueba o el Plan de pruebas.", - "loc.input.label.testPlan": "Plan de pruebas", - "loc.input.help.testPlan": "Seleccione un plan de pruebas.", - "loc.input.label.testSuite": "Conjunto de pruebas", - "loc.input.help.testSuite": "Selecciones conjuntos de pruebas a partir del plan de pruebas.", - "loc.input.label.testConfiguration": "Configuración de prueba", - "loc.input.help.testConfiguration": "Seleccione la configuración de prueba.", - "loc.input.label.sourcefilters": "Ensamblado de la prueba", - "loc.input.help.sourcefilters": "Archivos binarios de prueba en los que realizar las pruebas. Puede usar caracteres comodín. Por ejemplo, `**\\*test*.dll;` para todos los archivos dll con la palabra \"test\" en el nombre.", - "loc.input.label.testFilterCriteria": "Criterios de filtro de la prueba", - "loc.input.help.testFilterCriteria": "Especifique opcionalmente los criterios de filtro de caso de prueba. Por ejemplo, `Owner=james&Priority=1`.", - "loc.input.label.runSettingsFile": "Archivo de configuración de ejecución", - "loc.input.help.runSettingsFile": "Ruta de acceso al archivo runsettings o testsettings que se va a usar en las pruebas.", - "loc.input.label.overrideRunParams": "Reemplazar parámetros de ejecución de prueba", - "loc.input.help.overrideRunParams": "Reemplace los parámetros definidos en la sección \"TestRunParameters\" del archivo runsettings o la sección \"Propiedades\" del archivo testsettings. Por ejemplo: \"AppURL=$(DeployURL);Port=8080\". Nota: Se puede acceder a las propiedades especificadas en el archivo testsettings a través de TestContext mediante Test Agent 2017 Update 4 o superior.", - "loc.input.label.codeCoverageEnabled": "Cobertura de código habilitada", - "loc.input.help.codeCoverageEnabled": "Si es necesario habilitar la cobertura de código.", - "loc.input.label.customSlicingEnabled": "Distribuir pruebas por número de máquinas", - "loc.input.help.customSlicingEnabled": "Las pruebas se distribuirán en función del número de máquinas proporcionadas en lugar del número de contenedores de pruebas. Tenga en cuenta que las pruebas con un archivo dll también se pueden distribuir a varias máquinas.", - "loc.input.label.testRunTitle": "Título de la serie de pruebas", - "loc.input.help.testRunTitle": "Proporcione un nombre para la serie de pruebas.", - "loc.input.label.platform": "Plataforma", - "loc.input.help.platform": "Plataforma en la que se deben evaluar las pruebas. Si tiene una variable de plataforma definida en la tarea de compilación, úsela aquí.", - "loc.input.label.configuration": "Configuración", - "loc.input.help.configuration": "Configuración con la que se debe informar de las pruebas. Si tiene una variable de configuración definida en la tarea de compilación, úsela aquí.", - "loc.input.label.testConfigurations": "Configuraciones de prueba", - "loc.input.help.testConfigurations": "Si lo desea, puede asociar un filtro de casos de prueba a un id. de configuración de prueba. Sintaxis: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>. Por ejemplo: \"FullyQualifiedName~Chrome:12\"", - "loc.input.label.autMachineGroup": "Aplicación en las máquinas de prueba", - "loc.input.help.autMachineGroup": "Lista de máquinas o variable de salida o nombre de grupo de equipo en los procesos del servidor de separados por comas, como W3WP.exe, en ejecución" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/fr-fr/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/fr-fr/resources.resjson deleted file mode 100644 index c8f393b65d13..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/fr-fr/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Exécuter les tests fonctionnels", - "loc.helpMarkDown": "[Plus d'informations](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "Déprécié : cette tâche et la tâche qui l'accompagne (Déploiement de Visual Studio Test Agent) sont dépréciées. Utilisez la tâche 'Visual Studio Test' à la place. La tâche VSTest peut exécuter des tests unitaires et des tests fonctionnels. Exécutez les tests sur un ou plusieurs agents à l'aide du paramètre de travail multiagent. Utilisez la tâche 'Visual Studio Test Platform' pour exécuter les tests sans avoir besoin de Visual Studio sur l'agent. La tâche VSTest apporte également de nouvelles fonctionnalités telles que la réexécution automatique des tests non réussis.", - "loc.instanceNameFormat": "Exécuter les tests $(sourcefilters) sur $(testMachineGroup)", - "loc.group.displayName.setupOptions": "Options de configuration", - "loc.group.displayName.executionOptions": "Options d'exécution", - "loc.group.displayName.reportingOptions": "Options de signalement", - "loc.input.label.testMachineGroup": "Machines", - "loc.input.help.testMachineGroup": "Indiquez une liste de valeurs séparées par des virgules pour répertorier les adresses IP ou les noms de domaine complets des machines, par exemple : 'dbserver.fabrikam.com ou 192.168.12.34'. Vous pouvez également indiquer la variable de sortie d'autres tâches, par exemple '$(variableName)', ou indiquer un nom de groupe de machines", - "loc.input.label.dropLocation": "Emplacement cible des tests", - "loc.input.help.dropLocation": "Emplacement où les binaires de test ont été déposés sur la ou les machines agent dans le cadre de la tâche 'Copie des fichiers de l'ordinateur Windows' ou 'Copie des fichiers Azure'. Vous pouvez également utiliser des variables d'environnement système dans une chaîne d'emplacement. Exemple : '%systemdrive%\\Tests', '%temp%\\DropLocation' etc.", - "loc.input.label.testSelection": "Sélection de test", - "loc.input.help.testSelection": "Sélectionnez la façon dont vous souhaitez exécuter les tests : à l'aide d'assemblys de tests ou à l'aide du plan de test.", - "loc.input.label.testPlan": "Plan de test", - "loc.input.help.testPlan": "Sélectionnez un plan de test.", - "loc.input.label.testSuite": "Suite de tests", - "loc.input.help.testSuite": "Sélectionnez les suites de tests dans le plan de test.", - "loc.input.label.testConfiguration": "Configuration de test", - "loc.input.help.testConfiguration": "Sélectionnez la configuration de test.", - "loc.input.label.sourcefilters": "Assembly de test", - "loc.input.help.sourcefilters": "Binaires de test sur lesquels exécuter les tests. Les caractères génériques sont autorisés. Exemple : '**\\*test*.dll;' pour toutes les DLL dont le nom contient 'test'.", - "loc.input.label.testFilterCriteria": "Tester les critères de filtre", - "loc.input.help.testFilterCriteria": "Spécifiez éventuellement les critères du filtre de cas de test. Exemple : 'Owner=james&Priority=1'", - "loc.input.label.runSettingsFile": "Fichier de paramètres d'exécution", - "loc.input.help.runSettingsFile": "Chemin du fichier runsettings ou testsettings à utiliser avec les tests.", - "loc.input.label.overrideRunParams": "Remplacer les paramètres d'exécution des tests", - "loc.input.help.overrideRunParams": "Remplacez les paramètres définis dans la section 'TestRunParameters' du fichier runsettings ou la section 'Properties' du fichier testsettings. Exemple : 'AppURL=$(DeployURL);Port=8080'. Remarque : Les propriétés spécifiées dans le fichier testsettings sont accessibles via TestContext à l'aide de Test Agent 2017 Update 4 ou une version ultérieure.", - "loc.input.label.codeCoverageEnabled": "Couverture du code activée", - "loc.input.help.codeCoverageEnabled": "Indique si la couverture du code doit être activée.", - "loc.input.label.customSlicingEnabled": "Distribuer les tests par nombre de machines", - "loc.input.help.customSlicingEnabled": "Les tests sont distribués en fonction du nombre de machines fourni, et non en fonction du nombre de conteneurs de tests. Notez que les tests figurant dans une dll peuvent également être distribués à plusieurs machines.", - "loc.input.label.testRunTitle": "Titre de l'exécution du test", - "loc.input.help.testRunTitle": "Indiquez le nom de la série de tests.", - "loc.input.label.platform": "Plateforme", - "loc.input.help.platform": "Plateforme sur laquelle les tests doivent être signalés. Si vous avez défini une variable pour la plateforme dans votre tâche de build, utilisez-la ici.", - "loc.input.label.configuration": "Configuration", - "loc.input.help.configuration": "Configuration sur laquelle les tests doivent être signalés. Si vous avez défini une variable pour la configuration dans votre tâche de build, utilisez-la ici.", - "loc.input.label.testConfigurations": "Configurations de test", - "loc.input.help.testConfigurations": "Associez éventuellement un filtre de cas de test à un ID de configuration de test. Syntaxe : <Filtre1>:<Id1>;ConfigurationDeTestParDéfaut:<Id3>. Exemple : 'FullyQualifiedName~Chrome:12'", - "loc.input.label.autMachineGroup": "Machines de l'application testée", - "loc.input.help.autMachineGroup": "Liste de machines séparées par des virgules, variable de sortie ou nom du groupe de machines sur lesquelles s'exécutent des processus serveur tels que W3WP.exe" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/it-IT/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/it-IT/resources.resjson deleted file mode 100644 index 5b78bcd078be..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/it-IT/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Esegui test funzionali", - "loc.helpMarkDown": "[Altre informazioni](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "Deprecata: questa attività e la relativa attività complementare (Distribuzione agente di test di Visual Studio) sono deprecate. In alternativa, usare l'attività 'Test con Visual Studio'. L'attività VSTest è può eseguire unit test nonché test funzionali. Eseguire i test su uno o più agenti usando l'impostazione del processo con più agenti. Usare l'attività 'Piattaforma di test di Visual Studio' per eseguire test senza che Visual Studio sia presente nell'agente. L'attività VSTest prevede anche nuove funzionalità, come la ripetizione automatica dei test non superati.", - "loc.instanceNameFormat": "Esegui test $(sourcefilters) in $(testMachineGroup)", - "loc.group.displayName.setupOptions": "Opzioni di installazione", - "loc.group.displayName.executionOptions": "Opzioni di esecuzione", - "loc.group.displayName.reportingOptions": "Opzioni di creazione report", - "loc.input.label.testMachineGroup": "Computer", - "loc.input.help.testMachineGroup": "Consente di specificare un elenco di indirizzi IP o FQDN separati da virgola. Esempio: `dbserver.fabrikam.com o 192.168.12.34` In alternativa, consente di specificare la variabile di output di altre attività. Esempio: `$(variableName)` In alternativa, consente di specificare un nome di gruppo di computer", - "loc.input.label.dropLocation": "Destinazione finale test", - "loc.input.help.dropLocation": "Percorso di destinazione dei file binari di test nei computer agente durante l'attività 'Copia dei file del computer Windows' o 'Copia dei file di Azure'. Nella stringa del percorso è anche possibile usare variabili di ambiente di sistema, ad esempio `%systemdrive%\\Tests`, `%temp%\\DropLocation` e così via.", - "loc.input.label.testSelection": "Selezione test", - "loc.input.help.testSelection": "Consente di selezionare la modalità di esecuzione dei test, ovvero con assembly di test o con il piano di test.", - "loc.input.label.testPlan": "Piano di test", - "loc.input.help.testPlan": "Consente di selezionare un piano di test.", - "loc.input.label.testSuite": "Gruppo di test", - "loc.input.help.testSuite": "Consente di selezionare gruppi di test dal piano di test.", - "loc.input.label.testConfiguration": "Configurazione di test", - "loc.input.help.testConfiguration": "Consente di selezionare la configurazione di test.", - "loc.input.label.sourcefilters": "Assembly di test", - "loc.input.help.sourcefilters": "File binari di test su cui eseguire i test. È possibile usare i caratteri jolly, ad esempio `**\\*test*.dll;` per individuare tutte le DLL il cui nome contiene la parola 'test'.", - "loc.input.label.testFilterCriteria": "Criteri di filtro test", - "loc.input.help.testFilterCriteria": "Consente, facoltativamente, di specificare i criteri di filtro per i test case, ad esempio `Owner=james&Priority=1`", - "loc.input.label.runSettingsFile": "File di impostazioni esecuzione test", - "loc.input.help.runSettingsFile": "Percorso del file runsettings o testsettings da usare con i test.", - "loc.input.label.overrideRunParams": "Esegui override parametri di esecuzione dei test", - "loc.input.help.overrideRunParams": "Esegue l'override dei parametri definiti nella sezione `TestRunParameters` del file runsettings o nella sezione `Properties` del file testsettings, ad esempio: `AppURL=$(DeployURL);Port=8080`. Nota: è possibile accedere alle proprietà specificate nel file testsettings tramite l'elemento TestContext usando Test Agent 2017 Update 4 o versione successiva.", - "loc.input.label.codeCoverageEnabled": "Code coverage abilitato", - "loc.input.help.codeCoverageEnabled": "Consente di specificare se è necessario abilitare il code coverage.", - "loc.input.label.customSlicingEnabled": "Distribuisci test per numero di computer", - "loc.input.help.customSlicingEnabled": "I test verranno distribuiti in base al numero di computer specificati invece del numero di contenitori di test. Si noti che i test all'interno di una DLL potrebbero essere distribuiti anche in più computer.", - "loc.input.label.testRunTitle": "Titolo esecuzione dei test", - "loc.input.help.testRunTitle": "Consente di specificare un nome per l'esecuzione dei test.", - "loc.input.label.platform": "Piattaforma", - "loc.input.help.platform": "Piattaforma da usare per i test. Usare qui l'eventuale variabile definita per la piattaforma nell'attività di compilazione.", - "loc.input.label.configuration": "Configurazione", - "loc.input.help.configuration": "Configurazione da usare per i test. Usare qui l'eventuale variabile definita per la configurazione nell'attività di compilazione.", - "loc.input.label.testConfigurations": "Configurazioni di test", - "loc.input.help.testConfigurations": "Consente, facoltativamente, di associare un filtro del test case a un ID di configurazione di test. Sintassi: <Filtro1>:<Id1>;ConfigurazioneTestPredefinita:<Id3>. Ad esempio: `FullyQualifiedName~Chrome:12`", - "loc.input.label.autMachineGroup": "Computer applicazione sottoposta a test", - "loc.input.help.autMachineGroup": "Elenco delimitato da virgole di computer, variabili di output o nomi di gruppo di computer in cui sono in esecuzione processi server, come W3WP.exe" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ja-jp/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ja-jp/resources.resjson deleted file mode 100644 index 6fe9b6424673..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ja-jp/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "機能テストの実行", - "loc.helpMarkDown": "[詳細](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "非推奨: このタスクとコンパニオン タスク (Visual Studio Test Agent の配置) は使用されていないものです。代わりに、'Visual Studio Test' タスクをご使用ください。VSTest タスクでは単体テストと機能テストを実行できます。複数エージェント ジョブ設定を使用して 1 つ以上のエージェントでテストを実行します。'Visual Studio テスト プラットフォーム ' タスクを使用して、エージェント上で Visual Studio なしでテストを実行できます。VSTest タスクには、失敗したテストの自動再実行などの新機能も導入されています。", - "loc.instanceNameFormat": "$(testMachineGroup) でのテスト $(sourcefilters) の実行", - "loc.group.displayName.setupOptions": "セットアップ オプション", - "loc.group.displayName.executionOptions": "実行オプション", - "loc.group.displayName.reportingOptions": "レポートのオプション", - "loc.input.label.testMachineGroup": "コンピューター", - "loc.input.help.testMachineGroup": "マシンの IP アドレスまたは FQDN のコンマ区切りの一覧を指定します。例: `dbserver.fabrikam.com や 192.168.12.34`。または他のタスクの出力変数を指定します。例: `$(variableName)`。またはマシン グループ名を指定します", - "loc.input.label.dropLocation": "テスト格納場所", - "loc.input.help.dropLocation": "'Windows コンピューターのファイル コピー' または 'Azure ファイル コピー' タスクの一部として、エージェント コンピューター内でテスト バイナリが格納された場所。`%systemdrive%\\Tests`、`%temp%\\DropLocation` などのように、システム環境変数を使用して場所の文字列を指定することもできます。", - "loc.input.label.testSelection": "テストの選択", - "loc.input.help.testSelection": "テストの実行方法について、テスト アセンブリを使うかテスト計画を使うかのいずれかを選びます。", - "loc.input.label.testPlan": "テスト計画", - "loc.input.help.testPlan": "テスト計画を選択します。", - "loc.input.label.testSuite": "テスト スイート", - "loc.input.help.testSuite": "テスト計画からテスト スイートを選択します。", - "loc.input.label.testConfiguration": "テスト構成", - "loc.input.help.testConfiguration": "テスト構成を選択します。", - "loc.input.label.sourcefilters": "テスト アセンブリ", - "loc.input.help.sourcefilters": "テスト対象となるテスト バイナリ。ワイルドカードを使用できます。たとえば、名前に 'test' を含むすべての dll の場合、`**\\*test*.dll;` となります。", - "loc.input.label.testFilterCriteria": "テストのフィルター条件", - "loc.input.help.testFilterCriteria": "オプションで、テスト ケース フィルターの条件を指定します。例: `Owner=james&Priority=1`", - "loc.input.label.runSettingsFile": "実行設定ファイル", - "loc.input.help.runSettingsFile": "テストで使用する runsettings または testsettings ファイルへのパス。", - "loc.input.label.overrideRunParams": "テスト実行パラメーターのオーバーライド", - "loc.input.help.overrideRunParams": "runsettings ファイルの `TestRunParameters` セクションまたは testsettings ファイルの `Properties` セクションで定義されたパラメーターをオーバーライドします。例: `AppURL=$(DeployURL);Port=8080`。注: testsettings ファイルで指定されたプロパティには、Test Agent 2017 Update 4 以降で TestContext を使用してアクセスできます。", - "loc.input.label.codeCoverageEnabled": "コード カバレッジ有効", - "loc.input.help.codeCoverageEnabled": "コード カバレッジを有効にする必要があるかどうか。", - "loc.input.label.customSlicingEnabled": "マシンの数に基づいてテストを配布する", - "loc.input.help.customSlicingEnabled": "テストは、テスト コンテナー数ではなく、指定したコンピューター数に基づいて配布されます。DLL 内のテストも複数のコンピューターに配布される場合があるのでご注意ください。", - "loc.input.label.testRunTitle": "テスト実行のタイトル", - "loc.input.help.testRunTitle": "テスト実行の名前を指定します。", - "loc.input.label.platform": "プラットフォーム", - "loc.input.help.platform": "テストを報告する対象となるプラットフォーム。ビルド タスク内にプラットフォームの変数を定義した場合には、ここで使用します。", - "loc.input.label.configuration": "構成", - "loc.input.help.configuration": "テストを報告する対象となる構成。ビルド タスク内に構成の変数を定義した場合、ここでそれを使用します。", - "loc.input.label.testConfigurations": "テスト構成", - "loc.input.help.testConfigurations": "オプションで、テスト ケース フィルターをテスト構成 ID に関連付けます。構文: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>。例: `FullyQualifiedName~Chrome:12`", - "loc.input.label.autMachineGroup": "テスト対象のアプリケーションがあるコンピューター", - "loc.input.help.autMachineGroup": "W3WP.exe などのサーバー プロセスが実行されている、マシンまたは出力変数のコンマ区切りの一覧、またはマシン グループ名" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ko-KR/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ko-KR/resources.resjson deleted file mode 100644 index 5faaa4d8ca48..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ko-KR/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "기능 테스트 실행", - "loc.helpMarkDown": "[자세한 정보](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "사용되지 않음: 이 작업과 동반 작업(Visual Studio 테스트 에이전트 배포)은 더 이상 사용되지 않습니다. 'Visual Studio 테스트' 작업을 대신 사용하세요. VSTest 작업은 단위 및 기능 테스트를 실행할 수 있습니다. 다중 에이전트 단계 설정을 사용하여 하나 이상의 에이전트에서 테스트를 실행하세요. 에이전트에 Visual Studio를 요구하지 않고 테스트를 실행하려면 'Visual Studio 테스트 플랫폼' 작업을 사용하세요. VSTest 작업은 실패한 테스트 자동 다시 실행 등의 새로운 기능도 제공합니다.", - "loc.instanceNameFormat": "$(testMachineGroup)에서 테스트 $(sourcefilters) 실행", - "loc.group.displayName.setupOptions": "설치 옵션", - "loc.group.displayName.executionOptions": "실행 옵션", - "loc.group.displayName.reportingOptions": "보고 옵션", - "loc.input.label.testMachineGroup": "컴퓨터", - "loc.input.help.testMachineGroup": "컴퓨터 IP 주소 또는 FQDN(예: `dbserver.fabrikam.com 또는 192.168.12.34`)의 쉼표로 구분된 목록을 제공하거나 다른 작업의 출력 변수(예: `$(variableName)`)를 제공하거나 컴퓨터 그룹 이름을 제공하세요.", - "loc.input.label.dropLocation": "테스트 저장 위치", - "loc.input.help.dropLocation": "에이전트 컴퓨터에서 테스트 이진 파일을 'Windows 컴퓨터 파일 복사' 또는 'Azure 파일 복사' 작업의 일부로 삭제한 위치입니다. 시스템 환경 변수를 위치 문자열에서 사용할 수도 있습니다. 예: `%systemdrive%\\Tests`, `%temp%\\DropLocation` 등", - "loc.input.label.testSelection": "테스트 선택", - "loc.input.help.testSelection": "테스트를 실행할 방법(테스트 어셈블리 사용 또는 테스트 계획 사용)을 선택하세요.", - "loc.input.label.testPlan": "테스트 계획", - "loc.input.help.testPlan": "테스트 계획을 선택합니다.", - "loc.input.label.testSuite": "테스트 도구 모음", - "loc.input.help.testSuite": "테스트 계획에서 테스트 도구 모음을 선택합니다.", - "loc.input.label.testConfiguration": "테스트 구성", - "loc.input.help.testConfiguration": "테스트 구성을 선택합니다.", - "loc.input.label.sourcefilters": "테스트 어셈블리", - "loc.input.help.sourcefilters": "테스트를 실행할 테스트 이진 파일입니다. 와일드카드를 사용할 수 있습니다. 예를 들어, 이름에 'test'가 들어 있는 모든 dll을 표시하기 위해 `**\\*test*.dll;`을 사용할 수 있습니다.", - "loc.input.label.testFilterCriteria": "테스트 필터 조건", - "loc.input.help.testFilterCriteria": "원하는 경우 테스트 사례 필터 조건을 지정하세요. 예: `Owner=james&Priority=1`", - "loc.input.label.runSettingsFile": "실행 설정 파일", - "loc.input.help.runSettingsFile": "테스트에서 사용할 runsettings 또는 testsettings 파일의 경로입니다.", - "loc.input.label.overrideRunParams": "테스트 실행 매개 변수 재정의", - "loc.input.help.overrideRunParams": "runsettings 파일의 'TestRunParameters' 섹션 또는 testsettings 파일의 'Properties' 섹션에 정의된 매개 변수를 재정의합니다. 예: 'AppURL=$(DeployURL);Port=8080'. 참고: testsettings 파일에 지정된 속성은 테스트 에이전트 2017 업데이트 4 이상을 사용하여 TestContext를 통해 액세스할 수 있습니다.", - "loc.input.label.codeCoverageEnabled": "코드 검사 사용", - "loc.input.help.codeCoverageEnabled": "코드 검사를 사용해야 하는지 여부를 나타냅니다.", - "loc.input.label.customSlicingEnabled": "컴퓨터 수를 기준으로 테스트 분산", - "loc.input.help.customSlicingEnabled": "테스트는 테스트 컨테이너 수가 아니라 제공된 컴퓨터 수를 기반으로 분산됩니다. dll 내의 테스트도 여러 컴퓨터에 분산될 수 있습니다.", - "loc.input.label.testRunTitle": "테스트 실행 제목", - "loc.input.help.testRunTitle": "테스트 실행의 이름을 제공하세요.", - "loc.input.label.platform": "플랫폼", - "loc.input.help.platform": "테스트를 보고해야 하는 플랫폼입니다. 빌드 작업에서 플랫폼에 사용할 변수를 정의한 경우, 여기에서 해당 변수를 사용하세요.", - "loc.input.label.configuration": "구성", - "loc.input.help.configuration": "테스트를 보고해야 하는 구성입니다. 빌드 작업에서 구성에 사용할 변수를 정의한 경우, 여기에서 해당 변수를 사용하세요.", - "loc.input.label.testConfigurations": "테스트 구성", - "loc.input.help.testConfigurations": "필요한 경우 테스트 구성 ID를 기준으로 테스트 사례 필터를 연결합니다. 구문: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>. 예: `FullyQualifiedName~Chrome:12`", - "loc.input.label.autMachineGroup": "테스트 중인 애플리케이션 컴퓨터", - "loc.input.help.autMachineGroup": "W3WP.exe와 같은 서버 프로세스가 실행 중인 컴퓨터, 출력 변수 또는 컴퓨터 그룹 이름의 쉼표로 구분된 목록입니다." -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ru-RU/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ru-RU/resources.resjson deleted file mode 100644 index 2e4fdee178b3..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/ru-RU/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "Запуск функциональных тестов", - "loc.helpMarkDown": "[Дополнительные сведения](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "Устаревшая функция: эта задача и ее сопутствующая задача (\"Развертывание агента тестирования Visual Studio\") устарели. Вместо этого используйте задачу \"Тест Visual Studio\". Задача VSTest может запускать модульные и функциональные тесты. Запускайте тесты на одном или нескольких агентах с помощью настройки задания с несколькими агентами. Используйте задачу \"Платформа тестирования Visual Studio\" для запуска тестов без использования Visual Studio на агенте. Задача VSTest также обладает новыми возможностями, такими как автоматический перезапуск неудачных тестов.", - "loc.instanceNameFormat": "Выполнить тесты $(sourcefilters) для $(testMachineGroup)", - "loc.group.displayName.setupOptions": "Параметры настройки", - "loc.group.displayName.executionOptions": "Параметры выполнения", - "loc.group.displayName.reportingOptions": "Параметры отчетов", - "loc.input.label.testMachineGroup": "Компьютеры", - "loc.input.help.testMachineGroup": "Укажите разделенный запятыми список IP-адресов или полных доменных имен компьютеров. Пример: \"dbserver.fabrikam.com или 192.168.12.34\". Можно также указать выходную переменную из других задач. Пример: \"$(variableName)\". Или же укажите имя группы компьютеров.", - "loc.input.label.dropLocation": "Заданное место теста", - "loc.input.help.dropLocation": "Расположение, в которое были помещены тестовые двоичные файлы на компьютерах агентов в рамках задачи \"Копирование файлов на компьютер Windows\" или \"Копирование файлов Azure\". В строке расположения также можно использовать системные переменные среды, например %systemdrive%\\Tests, %temp%\\DropLocation и т. д.", - "loc.input.label.testSelection": "Выбор теста", - "loc.input.help.testSelection": "Выберите способ проведения тестов: с помощью тестовых сборок или плана тестирования.", - "loc.input.label.testPlan": "План тестирования", - "loc.input.help.testPlan": "Выберите план тестирования.", - "loc.input.label.testSuite": "Набор тестов", - "loc.input.help.testSuite": "Выберите наборы тестов из плана тестирования.", - "loc.input.label.testConfiguration": "Конфигурация теста", - "loc.input.help.testConfiguration": "Выберите конфигурацию теста.", - "loc.input.label.sourcefilters": "Тестовая сборка", - "loc.input.help.sourcefilters": "Тестовые двоичные файлы, для которых выполняются тесты. Можно использовать подстановочные знаки. Пример: **\\*test*.dll; для всех файлов DLL, в именах которых есть слово test.", - "loc.input.label.testFilterCriteria": "Критерии фильтрации тестов", - "loc.input.help.testFilterCriteria": "При необходимости укажите критерии фильтра тестовых случаев. Пример: Owner=james&Priority=1", - "loc.input.label.runSettingsFile": "Файл параметров запуска", - "loc.input.help.runSettingsFile": "Путь к файлу runsettings или testsettings для использования в тестах.", - "loc.input.label.overrideRunParams": "Переопределить параметры тестового запуска", - "loc.input.help.overrideRunParams": "Переопределите параметры, определенные в разделе \"TestRunParameters\" файла runsettings или в разделе \"Properties\" файла testsettings. Например, \"AppURL=$(DeployURL);Port=8080\". Примечание. К свойствам, указанным в файле testsettings, можно обратиться через TestContext, используя агент тестирования 2017 с обновлением 4 или более поздней версии.", - "loc.input.label.codeCoverageEnabled": "Оценка объемов протестированного кода включена", - "loc.input.help.codeCoverageEnabled": "Нужно ли включить оценку объемов протестированного кода.", - "loc.input.label.customSlicingEnabled": "Распределить тесты по числу компьютеров", - "loc.input.help.customSlicingEnabled": "Тесты будут распределяться в соответствии с числом предоставленных компьютеров, а не числом контейнеров для тестирования. Обратите внимание на то, что тесты из одной библиотеки DLL также могут распределяться по разным компьютерам.", - "loc.input.label.testRunTitle": "Заголовок тестового запуска", - "loc.input.help.testRunTitle": "Укажите имя для тестового запуска.", - "loc.input.label.platform": "Платформа", - "loc.input.help.platform": "Платформа, на основе которой создаются отчеты о тестировании. Если вы определили переменную для платформы в задаче сборки, используйте ее здесь.", - "loc.input.label.configuration": "Конфигурация", - "loc.input.help.configuration": "Конфигурация, на основе которой создаются отчеты о тестировании. Если вы определили переменную для конфигурации в задаче сборки, используйте ее здесь.", - "loc.input.label.testConfigurations": "Конфигурации тестирования", - "loc.input.help.testConfigurations": "При необходимости свяжите фильтр тестовых случаев с идентификатором конфигурации теста. Синтаксис: <фильтр1>:<ИД1>;конфигурация_теста_по_умолчанию:<ИД3>. Пример: FullyQualifiedName~Chrome:12", - "loc.input.label.autMachineGroup": "Приложение на тестовых компьютерах", - "loc.input.help.autMachineGroup": "Разделенный запятыми список компьютеров либо выходная переменная или имя группы компьютеров, где выполняются серверные процессы, такие как W3WP.exe" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-CN/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-CN/resources.resjson deleted file mode 100644 index 86357961d275..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-CN/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "运行功能测试", - "loc.helpMarkDown": "[详细信息](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "已弃用: 此任务及其附属任务(Visual Studio Test Agent 部署)已弃用。请改用“Visual Studio 测试”任务。VSTest 任务可运行单元测试以及功能测试。使用多代理作业设置在一个或多个代理上运行测试。使用“Visual Studio 测试平台”任务运行测试,而无需代理上具有 Visual Studio。VSTest 任务还引入了新功能,例如自动重新运行失败的测试。", - "loc.instanceNameFormat": "在 $(testMachineGroup) 上运行测试 $(sourcefilters)", - "loc.group.displayName.setupOptions": "设置选项", - "loc.group.displayName.executionOptions": "执行选项", - "loc.group.displayName.reportingOptions": "报告选项", - "loc.input.label.testMachineGroup": "计算机", - "loc.input.help.testMachineGroup": "提供以逗号分隔的计算机 IP 地址或 FQDN 列表。例如: \"dbserver.fabrikam.com\" 或 \"192.168.12.34\" 或者提供其他任务的输出变量。例如: \"$(variableName)\" 或提供计算机组名", - "loc.input.label.dropLocation": "测试失败位置", - "loc.input.help.dropLocation": "“Windows 计算机文件复制”任务或“Azure 文件复制”任务过程中在代理计算机上放置测试二进制文件的位置。系统环境变量也可以用于位置字符串,例如 \"%systemdrive%\\Tests\"、\"%temp%\\DropLocation\" 等。", - "loc.input.label.testSelection": "测试选择", - "loc.input.help.testSelection": "选择运行测试的方式: 使用测试程序集或使用测试计划。", - "loc.input.label.testPlan": "测试计划", - "loc.input.help.testPlan": "选择测试计划。", - "loc.input.label.testSuite": "测试套件", - "loc.input.help.testSuite": "从测试计划中选择测试套件。", - "loc.input.label.testConfiguration": "测试配置", - "loc.input.help.testConfiguration": "选择测试配置。", - "loc.input.label.sourcefilters": "测试程序集", - "loc.input.help.sourcefilters": "要对其运行测试的测试二进制文件。可以使用通配符。例如,\"**\\*test*.dll;\" 表示名称中包含 \"test\" 的所有 dll。", - "loc.input.label.testFilterCriteria": "测试筛选器标准", - "loc.input.help.testFilterCriteria": "可以选择指定测试用例筛选器条件。例如,\"Owner=james&Priority=1\"。", - "loc.input.label.runSettingsFile": "运行设置文件", - "loc.input.help.runSettingsFile": "要用于测试的 runsettings 或 testsettings 文件的路径。", - "loc.input.label.overrideRunParams": "替代测试运行参数", - "loc.input.help.overrideRunParams": "重写 runsettings 文件 `TestRunParameters` 部分或 testsettings 文件 `Properties` 部分中定义的参数。例如: `AppURL=$(DeployURL);Port=8080`。注意: testsettings 文件中指定的属性可以通过使用测试代理 2017 Update 4 或更高版本经由 TestContext 进行访问。", - "loc.input.label.codeCoverageEnabled": "代码覆盖率已启用", - "loc.input.help.codeCoverageEnabled": "是否需要启用代码覆盖率。", - "loc.input.label.customSlicingEnabled": "按计算机的数目分发测试", - "loc.input.help.customSlicingEnabled": "将根据提供的计算机的数目而不是测试容器的数目来分发测试。请注意,也可能会将 dll 中的测试分发到多台计算机。", - "loc.input.label.testRunTitle": "测试运行标题", - "loc.input.help.testRunTitle": "提供测试运行的名称。", - "loc.input.label.platform": "平台", - "loc.input.help.platform": "应对其报告测试的平台。如果在生成任务中为平台定义了变量,请在此处使用该变量。", - "loc.input.label.configuration": "配置", - "loc.input.help.configuration": "应对其报告测试的配置。如果在生成任务中为配置定义了变量,请在此处使用该变量。", - "loc.input.label.testConfigurations": "测试配置", - "loc.input.help.testConfigurations": "可以选择针对测试配置 ID 关联测试用例筛选器。语法: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>。例如: \"FullyQualifiedName~Chrome:12\"", - "loc.input.label.autMachineGroup": "测试计算机下的应用程序", - "loc.input.help.autMachineGroup": "正在对其运行服务器进程(如 W3WP.exe)的计算机或输出变量或计算机组的逗号分隔列表" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-TW/resources.resjson b/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-TW/resources.resjson deleted file mode 100644 index 131fb721d10c..000000000000 --- a/Tasks/RunDistributedTestsV1/Strings/resources.resjson/zh-TW/resources.resjson +++ /dev/null @@ -1,43 +0,0 @@ -{ - "loc.friendlyName": "執行功能測試", - "loc.helpMarkDown": "[詳細資訊](https://go.microsoft.com/fwlink/?LinkId=624389)", - "loc.description": "已淘汰: 此工作及其隨附工作 (Visual Studio Test Agent 部署) 已淘汰。請改用 ' Visual Studio Test' 工作。VSTest 工作可以執行單元及功能測試。使用多代理程式作業設定可在一或多個代理程式上執行測試。使用 [Visual Studio 測試平台] 工作,不需 Visual Studio 就可在代理程式上執行測試。VSTest 工作也推出了新功能,例如自動重新執行失敗的測試。", - "loc.instanceNameFormat": "在 $(testMachineGroup) 執行測試 $(sourcefilters) ", - "loc.group.displayName.setupOptions": "設定選項", - "loc.group.displayName.executionOptions": "執行選項", - "loc.group.displayName.reportingOptions": "報告選項", - "loc.input.label.testMachineGroup": "電腦", - "loc.input.help.testMachineGroup": "請提供以逗號分隔的清單,內含電腦 IP 位址或 FQDN。例如: `dbserver.fabrikam.com or 192.168.12.34`,或提供其他工作的輸出變數。例如: `$(variableName)`,或提供電腦群組名稱", - "loc.input.label.dropLocation": "測試置放位置", - "loc.input.help.dropLocation": "已將測試二進位檔置放於代理程式電腦作為「Windows 電腦檔案複製」或「Azure 檔案複製」工作一部分的位置。系統環境變數也可用於位置字串。例如 `%systemdrive%\\Tests`、`%temp%\\DropLocation` 等。", - "loc.input.label.testSelection": "測試選取項目", - "loc.input.help.testSelection": "選取執行測試的方式: 使用測試組件或測試計劃。", - "loc.input.label.testPlan": "測試計劃", - "loc.input.help.testPlan": "選取測試計劃。", - "loc.input.label.testSuite": "測試套件", - "loc.input.help.testSuite": "選取測試計劃的測試套件。", - "loc.input.label.testConfiguration": "測試組態", - "loc.input.help.testConfiguration": "選取測試組態。", - "loc.input.label.sourcefilters": "測試組件", - "loc.input.help.sourcefilters": "要執行測試的測試二進位檔。可使用萬用字元。例如 `**\\*test*.dll;` 表示其名稱中包含 'test' 的所有 dll。", - "loc.input.label.testFilterCriteria": "測試篩選準則", - "loc.input.help.testFilterCriteria": "選擇性地指定測試案例篩選準則。例如 'Owner=james&Priority=1'", - "loc.input.label.runSettingsFile": "回合設定檔案", - "loc.input.help.runSettingsFile": "要在測試中使用之 runsettings 或 testsettings 檔案的路徑。", - "loc.input.label.overrideRunParams": "覆寫測試回合參數", - "loc.input.help.overrideRunParams": "覆寫在 runsettings 檔案 `TestRunParameters` 區段或 testsettings 檔案的 `Properties` 區段中定義的參數。例如: `AppURL=$(DeployURL);Port=8080`。注意: 在 testsettings 檔案中指定的屬性可以透過使用 Test Agent 2017 Update 4 更高版本的 TestContext 存取。", - "loc.input.label.codeCoverageEnabled": "已啟用程式碼涵蓋範圍", - "loc.input.help.codeCoverageEnabled": "是否需要啟用程式碼涵蓋範圍。", - "loc.input.label.customSlicingEnabled": "依電腦數目散發測試", - "loc.input.help.customSlicingEnabled": "將會根據提供的電腦數目來散發測試,而不是測試容器數目。請注意,dll 內的測試也可能散發至多部電腦。", - "loc.input.label.testRunTitle": "測試回合標題", - "loc.input.help.testRunTitle": "提供測試回合的名稱。", - "loc.input.label.platform": "平台", - "loc.input.help.platform": "測試所要回報的目標平台。若您已在建置工作為平台定義了變數,此處也請使用該變數。", - "loc.input.label.configuration": "組態", - "loc.input.help.configuration": "測試應該針對此組態而進行回報。若您已為建置工作定義組態變數,請將其使用於此。", - "loc.input.label.testConfigurations": "測試組態", - "loc.input.help.testConfigurations": "選擇性地建立測試案例篩選與測試組態識別碼間的關聯。語法: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>。例如: `FullyQualifiedName~Chrome:12`", - "loc.input.label.autMachineGroup": "位於測試電腦下的應用程式", - "loc.input.help.autMachineGroup": "以逗號分隔的清單,包含伺服器處理序 (如 W3WP.exe) 執行所在的電腦、輸出變數或電腦群組名稱" -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/TestAgentUnRegistration.ps1 b/Tasks/RunDistributedTestsV1/TestAgentUnRegistration.ps1 deleted file mode 100644 index 6c066b799476..000000000000 --- a/Tasks/RunDistributedTestsV1/TestAgentUnRegistration.ps1 +++ /dev/null @@ -1,160 +0,0 @@ -function Locate-TestVersionAndVsRoot([string] $Version) -{ - if ([string]::IsNullOrWhiteSpace($Version)) - { - #Find the latest version - $regPath = "HKLM:\SOFTWARE\Microsoft\DevDiv\vstf\Servicing" - if (-not (Test-Path $regPath)) - { - $regPath = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vstf\Servicing" - } - - $Version = Get-Item $regPath | %{$_.GetSubKeyNames()} | Sort-Object -Descending | Select-Object -First 1 - if ([string]::IsNullOrWhiteSpace($Version)) - { - return $null - } - } - - # Lookup the install location - $installRegPath = ("SOFTWARE\Microsoft\VisualStudio\{0}\EnterpriseTools\QualityTools" -f $Version) - - $installRoot = Get-RegistryValueIgnoreError CurrentUser "$installRegPath" "InstallDir" Registry32 - if (-not $installRoot) - { - $installRoot = Get-RegistryValueIgnoreError CurrentUser "$installRegPath" "InstallDir" Registry64 - } - - if (-not $installRoot) - { - $installRoot = Get-RegistryValueIgnoreError LocalMachine "$installRegPath" "InstallDir" Registry32 - if (-not $installRoot) - { - $installRoot = Get-RegistryValueIgnoreError LocalMachine "$installRegPath" "InstallDir" Registry64 - } - } - - if (-not $installRoot) - { - # We still got nothing - throw "Unable to find TestAgent installation path" - } - return $installRoot -} - -function Get-RegistryValueIgnoreError -{ - param - ( - [parameter(Mandatory = $true)] - [Microsoft.Win32.RegistryHive] - $RegistryHive, - - [parameter(Mandatory = $true)] - [System.String] - $Key, - - [parameter(Mandatory = $true)] - [System.String] - $Value, - - [parameter(Mandatory = $true)] - [Microsoft.Win32.RegistryView] - $RegistryView - ) - - try - { - $baseKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey($RegistryHive, $RegistryView) - $subKey = $baseKey.OpenSubKey($Key) - if($subKey -ne $null) - { - return $subKey.GetValue($Value) - } - } - catch - { - #ignore - } - return $null -} - -function InvokeTestAgentConfigExe([string[]] $Arguments, [string] $Version) -{ - $ExeName = "TestAgentConfig.exe" - if (-not (Test-IsAdmin)) - { - throw "You need to be an Administrator to run this tool." - } - - $vsRoot = Locate-TestVersionAndVsRoot($Version) - if ([string]::IsNullOrWhiteSpace($vsRoot)) - { - throw "Could not locate TestAgent installation directory for `$Version=$Version. Ensure that TestAgent is installed." - } - - $exePath = Join-Path -Path $vsRoot -ChildPath $ExeName - if (Test-Path $exePath) - { - $pinfo = New-Object System.Diagnostics.ProcessStartInfo - $pinfo.FileName = $exePath - $pinfo.RedirectStandardError = $true - $pinfo.RedirectStandardOutput = $true - $pinfo.UseShellExecute = $false - $pinfo.Arguments = $Arguments - - $p = New-Object System.Diagnostics.Process - $p.StartInfo = $pinfo - - $p.Start() | Out-Null - $p.WaitForExit() - - $stdout = $p.StandardOutput.ReadToEnd() - $stderr = $p.StandardError.ReadToEnd() - - Write-Verbose -Message ("Stdout : {0}" -f $stdout) -Verbose - Write-Warning -Message ("Stderr : {0}" -f $stderr) - Write-Verbose -Message ("Exit code : {0}" -f $p.ExitCode) -Verbose - - $out = @{ - ExitCode = $p.ExitCode - CommandOutput = $stdout - } - - return $out - } - - throw "Did not find TestAgentConfig.exe at : $exePath. Ensure that TestAgent is installed." -} - - -function TestAgent-UnRegister -{ - param - ( - [String] $TestAgentVersion - ) - - $dtaLogFile = Join-Path $env:SystemDrive "DtaLogs" | Join-Path -ChildPath "DTAExecutionHost.exe.log" #filename also present in testagentconfiguration.ps1 - if(Test-path -Path $dtaLogFile) - { - Write-Verbose -Message "=== Starting to print the dtaexecutionhost log file for [$env:COMPUTERNAME] ===" -Verbose - Get-Content $dtaLogFile | Select -Last 100 | foreach { Write-Verbose -Message "[$env:COMPUTERNAME] $_" -Verbose } - Write-Verbose -Message "=== Done printing the dtaexecutionhost log file for [$env:COMPUTERNAME] ===" -Verbose - } - - Write-Verbose -Message "Trying to delete TestAgent configurations." -verbose - - $configOut = InvokeTestAgentConfigExe -Arguments @( "Delete" ) -Version $TestAgentVersion - return $configOut.ExitCode -} - -function Test-IsAdmin -{ - $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent() - $prp = New-Object System.Security.Principal.WindowsPrincipal($wid) - $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator - return $prp.IsInRole($adm) -} - -$output = TestAgent-UnRegister -TestAgentVersion $TestAgentVersion \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/icon.png b/Tasks/RunDistributedTestsV1/icon.png deleted file mode 100644 index c7efbd29e69d..000000000000 Binary files a/Tasks/RunDistributedTestsV1/icon.png and /dev/null differ diff --git a/Tasks/RunDistributedTestsV1/icon.svg b/Tasks/RunDistributedTestsV1/icon.svg deleted file mode 100644 index 13deac651233..000000000000 --- a/Tasks/RunDistributedTestsV1/icon.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - Miscellaneous - - - visual-studio-online - - - - image/svg+xml - - - Amido Limited - - - Richard Slater - - - - - - - - - - - diff --git a/Tasks/RunDistributedTestsV1/task.json b/Tasks/RunDistributedTestsV1/task.json deleted file mode 100644 index f1d91d1ca2a1..000000000000 --- a/Tasks/RunDistributedTestsV1/task.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "id": "D353D6A2-E361-4A8F-8D8C-123BEBB71028", - "name": "RunVisualStudioTestsusingTestAgent", - "friendlyName": "Run functional tests", - "description": "Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", - "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/test/run-functional-tests", - "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkId=624389)", - "category": "Test", - "visibility": [ - "Build", - "Release" - ], - "author": "Microsoft Corporation", - "version": { - "Major": 1, - "Minor": 155, - "Patch": 1 - }, - "deprecated": true, - "runsOn": [ - "Agent" - ], - "demands": [], - "minimumAgentVersion": "1.104.0", - "groups": [ - { - "name": "setupOptions", - "displayName": "Setup Options", - "isExpanded": true - }, - { - "name": "executionOptions", - "displayName": "Execution Options", - "isExpanded": true - }, - { - "name": "reportingOptions", - "displayName": "Reporting Options", - "isExpanded": false - } - ], - "inputs": [ - { - "name": "testMachineGroup", - "type": "multiLine", - "label": "Machines", - "defaultValue": "", - "required": true, - "helpMarkDown": "Provide a comma separated list of machine IP addresses or FQDNs. Eg: `dbserver.fabrikam.com or 192.168.12.34` Or provide output variable of other tasks. Eg: `$(variableName)` Or provide a Machine Group Name", - "groupName": "setupOptions" - }, - { - "name": "dropLocation", - "type": "string", - "label": "Test Drop Location", - "defaultValue": "", - "required": true, - "helpMarkDown": "Location where the test binaries have been dropped in the agent machine(s) as part of the 'Windows Machine File Copy' or 'Azure File Copy' task. System Environment Variables can also be used in location string. e.g., `%systemdrive%\\Tests`, `%temp%\\DropLocation` etc.", - "groupName": "setupOptions" - }, - { - "name": "testSelection", - "type": "pickList", - "label": "Test Selection", - "defaultValue": "testAssembly", - "required": true, - "helpMarkDown": "Select the way you want to run tests : using Test Assemblies or using Test Plan.", - "options": { - "testAssembly": "Test Assembly", - "testPlan": "Test Plan" - }, - "groupName": "executionOptions" - }, - { - "name": "testPlan", - "type": "pickList", - "label": "Test Plan", - "defaultValue": "", - "required": true, - "properties": { - "DisableManageLink": "True" - }, - "helpMarkDown": "Select a Test Plan.", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "testSuite", - "type": "pickList", - "label": "Test Suite", - "defaultValue": "", - "required": true, - "properties": { - "MultiSelect": "True", - "DisableManageLink": "True" - }, - "helpMarkDown": "Select Test Suites from the Test Plan.", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "testConfiguration", - "type": "pickList", - "label": "Test Configuration", - "defaultValue": "", - "required": true, - "properties": { - "DisableManageLink": "True" - }, - "helpMarkDown": "Select Test Configuration.", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "sourcefilters", - "type": "string", - "label": "Test Assembly", - "defaultValue": "**\\*test*.dll", - "required": true, - "helpMarkDown": "Test binaries to run tests on. Wildcards can be used. For example, `**\\*test*.dll;` for all dlls containing 'test' in their name.", - "visibleRule": "testSelection = testAssembly", - "groupName": "executionOptions" - }, - { - "name": "testFilterCriteria", - "type": "string", - "label": "Test Filter criteria", - "defaultValue": "", - "required": false, - "helpMarkDown": "Optionally specify the test case filter criteria. For example, `Owner=james&Priority=1`", - "visibleRule": "testSelection = testAssembly", - "groupName": "executionOptions" - }, - { - "name": "runSettingsFile", - "type": "filePath", - "label": "Run Settings File", - "defaultValue": "", - "required": false, - "helpMarkDown": "Path to runsettings or testsettings file to use with the tests.", - "groupName": "executionOptions" - }, - { - "name": "overrideRunParams", - "type": "string", - "label": "Override Test Run Parameters", - "defaultValue": "", - "required": false, - "helpMarkDown": "Override parameters defined in the `TestRunParameters` section of runsettings file or `Properties` section of testsettings file. For example: `AppURL=$(DeployURL);Port=8080`. Note: Properties specified in testsettings file can be accessed via the TestContext using Test Agent 2017 Update 4 or higher.", - "groupName": "executionOptions" - }, - { - "name": "codeCoverageEnabled", - "type": "boolean", - "label": "Code Coverage Enabled", - "defaultValue": "false", - "required": false, - "helpMarkDown": "Whether code coverage needs to be enabled.", - "groupName": "executionOptions" - }, - { - "name": "customSlicingEnabled", - "type": "boolean", - "label": "Distribute tests by number of machines", - "defaultValue": "false", - "required": false, - "helpMarkDown": "Tests will be distributed based on the number of machines provided instead of number of test containers. Note that tests within a dll might also be distributed to multiple machines.", - "groupName": "executionOptions" - }, - { - "name": "testRunTitle", - "type": "string", - "label": "Test Run Title", - "defaultValue": "", - "required": false, - "helpMarkDown": "Provide a name for the Test Run.", - "groupName": "reportingOptions" - }, - { - "name": "platform", - "type": "string", - "label": "Platform", - "defaultValue": "", - "required": false, - "helpMarkDown": "Platform against which the tests should be reported. If you have defined a variable for platform in your build task, use that here.", - "groupName": "reportingOptions" - }, - { - "name": "configuration", - "type": "string", - "label": "Configuration", - "defaultValue": "", - "required": false, - "helpMarkDown": "Configuration against which the tests should be reported. If you have defined a variable for configuration in your build task, use that here.", - "groupName": "reportingOptions" - }, - { - "name": "testConfigurations", - "type": "string", - "label": "Test Configurations", - "defaultValue": "", - "required": false, - "helpMarkDown": "Optionally associate a test case filter against a test configuration ID. Syntax: <Filter1>:<Id1>;DefaultTestConfiguration:<Id3>. For example: `FullyQualifiedName~Chrome:12`", - "groupName": "reportingOptions" - }, - { - "name": "autMachineGroup", - "type": "multiLine", - "label": "Application Under Test Machines", - "defaultValue": "", - "required": false, - "helpMarkDown": "Comma separated list of machines or output variable or Machine Group Name on which server processes such as W3WP.exe is running", - "groupName": "reportingOptions" - } - ], - "sourceDefinitions": [ - { - "target": "testPlan", - "endpoint": "/$(system.teamProject)/_apis/test/plans?api-version=3.0-preview.2", - "selector": "jsonpath:$.value[*].name", - "keySelector": "jsonpath:$.value[*].id", - "authKey": "tfs:teamfoundation" - }, - { - "target": "testConfiguration", - "endpoint": "/$(system.teamProject)/_apis/test/configurations?api-version=3.0-preview.1", - "selector": "jsonpath:$.value[*].name", - "keySelector": "jsonpath:$.value[*].id", - "authKey": "tfs:teamfoundation" - }, - { - "target": "testSuite", - "endpoint": "/$(system.teamProject)/_apis/test/plans/$(testPlan)/suites?$asTreeView=true&api-version=3.0-preview.2", - "selector": "jsonpath:$.value[*]", - "authKey": "tfs:teamfoundation" - } - ], - "instanceNameFormat": "Run Tests $(sourcefilters) on $(testMachineGroup)", - "execution": { - "PowerShell": { - "target": "$(currentDirectory)\\RunDistributedTests.ps1", - "argumentFormat": "", - "workingDirectory": "$(currentDirectory)" - } - } -} \ No newline at end of file diff --git a/Tasks/RunDistributedTestsV1/task.loc.json b/Tasks/RunDistributedTestsV1/task.loc.json deleted file mode 100644 index 0b81a7647bec..000000000000 --- a/Tasks/RunDistributedTestsV1/task.loc.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "id": "D353D6A2-E361-4A8F-8D8C-123BEBB71028", - "name": "RunVisualStudioTestsusingTestAgent", - "friendlyName": "ms-resource:loc.friendlyName", - "description": "ms-resource:loc.description", - "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/test/run-functional-tests", - "helpMarkDown": "ms-resource:loc.helpMarkDown", - "category": "Test", - "visibility": [ - "Build", - "Release" - ], - "author": "Microsoft Corporation", - "version": { - "Major": 1, - "Minor": 155, - "Patch": 1 - }, - "deprecated": true, - "runsOn": [ - "Agent" - ], - "demands": [], - "minimumAgentVersion": "1.104.0", - "groups": [ - { - "name": "setupOptions", - "displayName": "ms-resource:loc.group.displayName.setupOptions", - "isExpanded": true - }, - { - "name": "executionOptions", - "displayName": "ms-resource:loc.group.displayName.executionOptions", - "isExpanded": true - }, - { - "name": "reportingOptions", - "displayName": "ms-resource:loc.group.displayName.reportingOptions", - "isExpanded": false - } - ], - "inputs": [ - { - "name": "testMachineGroup", - "type": "multiLine", - "label": "ms-resource:loc.input.label.testMachineGroup", - "defaultValue": "", - "required": true, - "helpMarkDown": "ms-resource:loc.input.help.testMachineGroup", - "groupName": "setupOptions" - }, - { - "name": "dropLocation", - "type": "string", - "label": "ms-resource:loc.input.label.dropLocation", - "defaultValue": "", - "required": true, - "helpMarkDown": "ms-resource:loc.input.help.dropLocation", - "groupName": "setupOptions" - }, - { - "name": "testSelection", - "type": "pickList", - "label": "ms-resource:loc.input.label.testSelection", - "defaultValue": "testAssembly", - "required": true, - "helpMarkDown": "ms-resource:loc.input.help.testSelection", - "options": { - "testAssembly": "Test Assembly", - "testPlan": "Test Plan" - }, - "groupName": "executionOptions" - }, - { - "name": "testPlan", - "type": "pickList", - "label": "ms-resource:loc.input.label.testPlan", - "defaultValue": "", - "required": true, - "properties": { - "DisableManageLink": "True" - }, - "helpMarkDown": "ms-resource:loc.input.help.testPlan", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "testSuite", - "type": "pickList", - "label": "ms-resource:loc.input.label.testSuite", - "defaultValue": "", - "required": true, - "properties": { - "MultiSelect": "True", - "DisableManageLink": "True" - }, - "helpMarkDown": "ms-resource:loc.input.help.testSuite", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "testConfiguration", - "type": "pickList", - "label": "ms-resource:loc.input.label.testConfiguration", - "defaultValue": "", - "required": true, - "properties": { - "DisableManageLink": "True" - }, - "helpMarkDown": "ms-resource:loc.input.help.testConfiguration", - "visibleRule": "testSelection = testPlan", - "groupName": "executionOptions" - }, - { - "name": "sourcefilters", - "type": "string", - "label": "ms-resource:loc.input.label.sourcefilters", - "defaultValue": "**\\*test*.dll", - "required": true, - "helpMarkDown": "ms-resource:loc.input.help.sourcefilters", - "visibleRule": "testSelection = testAssembly", - "groupName": "executionOptions" - }, - { - "name": "testFilterCriteria", - "type": "string", - "label": "ms-resource:loc.input.label.testFilterCriteria", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.testFilterCriteria", - "visibleRule": "testSelection = testAssembly", - "groupName": "executionOptions" - }, - { - "name": "runSettingsFile", - "type": "filePath", - "label": "ms-resource:loc.input.label.runSettingsFile", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.runSettingsFile", - "groupName": "executionOptions" - }, - { - "name": "overrideRunParams", - "type": "string", - "label": "ms-resource:loc.input.label.overrideRunParams", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.overrideRunParams", - "groupName": "executionOptions" - }, - { - "name": "codeCoverageEnabled", - "type": "boolean", - "label": "ms-resource:loc.input.label.codeCoverageEnabled", - "defaultValue": "false", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.codeCoverageEnabled", - "groupName": "executionOptions" - }, - { - "name": "customSlicingEnabled", - "type": "boolean", - "label": "ms-resource:loc.input.label.customSlicingEnabled", - "defaultValue": "false", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.customSlicingEnabled", - "groupName": "executionOptions" - }, - { - "name": "testRunTitle", - "type": "string", - "label": "ms-resource:loc.input.label.testRunTitle", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.testRunTitle", - "groupName": "reportingOptions" - }, - { - "name": "platform", - "type": "string", - "label": "ms-resource:loc.input.label.platform", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.platform", - "groupName": "reportingOptions" - }, - { - "name": "configuration", - "type": "string", - "label": "ms-resource:loc.input.label.configuration", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.configuration", - "groupName": "reportingOptions" - }, - { - "name": "testConfigurations", - "type": "string", - "label": "ms-resource:loc.input.label.testConfigurations", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.testConfigurations", - "groupName": "reportingOptions" - }, - { - "name": "autMachineGroup", - "type": "multiLine", - "label": "ms-resource:loc.input.label.autMachineGroup", - "defaultValue": "", - "required": false, - "helpMarkDown": "ms-resource:loc.input.help.autMachineGroup", - "groupName": "reportingOptions" - } - ], - "sourceDefinitions": [ - { - "target": "testPlan", - "endpoint": "/$(system.teamProject)/_apis/test/plans?api-version=3.0-preview.2", - "selector": "jsonpath:$.value[*].name", - "keySelector": "jsonpath:$.value[*].id", - "authKey": "tfs:teamfoundation" - }, - { - "target": "testConfiguration", - "endpoint": "/$(system.teamProject)/_apis/test/configurations?api-version=3.0-preview.1", - "selector": "jsonpath:$.value[*].name", - "keySelector": "jsonpath:$.value[*].id", - "authKey": "tfs:teamfoundation" - }, - { - "target": "testSuite", - "endpoint": "/$(system.teamProject)/_apis/test/plans/$(testPlan)/suites?$asTreeView=true&api-version=3.0-preview.2", - "selector": "jsonpath:$.value[*]", - "authKey": "tfs:teamfoundation" - } - ], - "instanceNameFormat": "ms-resource:loc.instanceNameFormat", - "execution": { - "PowerShell": { - "target": "$(currentDirectory)\\RunDistributedTests.ps1", - "argumentFormat": "", - "workingDirectory": "$(currentDirectory)" - } - } -} \ No newline at end of file diff --git a/Tasks/RunJMeterLoadTestV1/Tests/L0.ts b/Tasks/RunJMeterLoadTestV1/Tests/L0.ts new file mode 100644 index 000000000000..a3fc0cfb7e59 --- /dev/null +++ b/Tasks/RunJMeterLoadTestV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('RunJMeterLoadTestV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/RunJMeterLoadTestV1/tsconfig.json b/Tasks/RunJMeterLoadTestV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/RunJMeterLoadTestV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/RunLoadTestV1/Tests/L0.ts b/Tasks/RunLoadTestV1/Tests/L0.ts new file mode 100644 index 000000000000..df2e382f3727 --- /dev/null +++ b/Tasks/RunLoadTestV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('RunLoadTestV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/RunLoadTestV1/tsconfig.json b/Tasks/RunLoadTestV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/RunLoadTestV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Strings/resources.resjson/en-US/resources.resjson index f726a7de0e9c..49b3bb27496b 100644 --- a/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "SQL Server database deploy", - "loc.helpMarkDown": "[More Information](https://aka.ms/sqldacpacmachinegroupreadme)", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/sqldacpacmachinegroupreadme)", "loc.description": "Deploy a SQL Server database using DACPAC or SQL scripts", "loc.instanceNameFormat": "Deploy using : $(TaskType)", "loc.input.label.TaskType": "Deploy SQL Using", diff --git a/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Tests/L0.ts b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Tests/L0.ts new file mode 100644 index 000000000000..b5d222f21af8 --- /dev/null +++ b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('SqlServerDacpacDeploymentOnMachineGroupV0 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/SqlDacpacDeploymentOnMachineGroupV0/tsconfig.json b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/SqlDacpacDeploymentOnMachineGroupV0/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/SqlServerDacpacDeployment/Strings/resources.resjson/en-US/resources.resjson b/Tasks/SqlServerDacpacDeployment/Strings/resources.resjson/en-US/resources.resjson index f3b639844e1c..25b541136576 100644 --- a/Tasks/SqlServerDacpacDeployment/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/SqlServerDacpacDeployment/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "[Deprecated] SQL Server database deploy", - "loc.helpMarkDown": "[More Information](https://aka.ms/sqlserverdacpackdeprecatedreadme)", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/sqlserverdacpackdeprecatedreadme)", "loc.description": "Deploy a SQL Server database using DACPAC", "loc.instanceNameFormat": "[Deprecated] Deploy SQL DACPAC: $(DacpacFile)", "loc.group.displayName.deployment": "Deployment", diff --git a/Tasks/SqlServerDacpacDeployment/Tests/L0.ts b/Tasks/SqlServerDacpacDeployment/Tests/L0.ts new file mode 100644 index 000000000000..4b0352293f24 --- /dev/null +++ b/Tasks/SqlServerDacpacDeployment/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('SqlServerDacpacDeployment Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/SqlServerDacpacDeployment/tsconfig.json b/Tasks/SqlServerDacpacDeployment/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/SqlServerDacpacDeployment/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/SshV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/SshV0/Strings/resources.resjson/en-US/resources.resjson index a6923c4dc665..5e676e28a4d7 100644 --- a/Tasks/SshV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/SshV0/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "SSH", - "loc.helpMarkDown": "[More Information](http://go.microsoft.com/fwlink/?LinkId=821892)", + "loc.helpMarkDown": "[Learn more about this task](http://go.microsoft.com/fwlink/?LinkId=821892)", "loc.description": "Run shell commands or a script on a remote machine using SSH", "loc.instanceNameFormat": "Run shell $(runOptions) on remote machine", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/SshV0/Tests/L0.ts b/Tasks/SshV0/Tests/L0.ts new file mode 100644 index 000000000000..7b0b13d8db0a --- /dev/null +++ b/Tasks/SshV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('SshV0 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/SshV0/Tests/package-lock.json b/Tasks/SshV0/Tests/package-lock.json new file mode 100644 index 000000000000..3c3e0d26e773 --- /dev/null +++ b/Tasks/SshV0/Tests/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "ssh-tests", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + } + } +} diff --git a/Tasks/SshV0/Tests/package.json b/Tasks/SshV0/Tests/package.json new file mode 100644 index 000000000000..f66f9c14d926 --- /dev/null +++ b/Tasks/SshV0/Tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "ssh-tests", + "version": "1.0.0", + "description": "Azure Pipelines SSH V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "devDependencies": { + "@types/mocha": "^5.2.0" + } +} diff --git a/Tasks/TwineAuthenticateV0/Tests/L0.ts b/Tasks/TwineAuthenticateV0/Tests/L0.ts new file mode 100644 index 000000000000..3916f489c502 --- /dev/null +++ b/Tasks/TwineAuthenticateV0/Tests/L0.ts @@ -0,0 +1,16 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +describe('TwineAuthenticateV1 Suite', function () { + before(() => { + }); + + after(() => { + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/TwineAuthenticateV0/Tests/package-lock.json b/Tasks/TwineAuthenticateV0/Tests/package-lock.json new file mode 100644 index 000000000000..d622ddd60c12 --- /dev/null +++ b/Tasks/TwineAuthenticateV0/Tests/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "twine-authenticate-tests", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git a/Tasks/TwineAuthenticateV0/Tests/package.json b/Tasks/TwineAuthenticateV0/Tests/package.json new file mode 100644 index 000000000000..af48dde7bd8b --- /dev/null +++ b/Tasks/TwineAuthenticateV0/Tests/package.json @@ -0,0 +1,19 @@ +{ + "name": "twine-authenticate-tests", + "version": "1.0.0", + "description": "Azure Pipelines Twine Authenticate V0 Task Tests", + "main": "L0.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Microsoft/azure-pipelines-tasks.git" + }, + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme" +} diff --git a/Tasks/TwineAuthenticateV0/package-lock.json b/Tasks/TwineAuthenticateV0/package-lock.json index 1fdb05d935c2..a8a3803d656f 100644 --- a/Tasks/TwineAuthenticateV0/package-lock.json +++ b/Tasks/TwineAuthenticateV0/package-lock.json @@ -43,9 +43,9 @@ "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz", + "integrity": "sha512-cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==", "requires": { "@types/node": "*" } @@ -71,20 +71,19 @@ } }, "azure-devops-node-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-6.6.3.tgz", - "integrity": "sha512-94wSu4O6CSSXoqYWg7Rzt2/IqbW2xVNu2qOtx6e7lnXxnDOcAu4eRzi8tgVNHsXTIGOVEsTqgMvGvFThKr9Pig==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-8.0.0.tgz", + "integrity": "sha512-QkIzphuE3y/hZVMB6ONN0Dev5r9+CIAiopWulwoYx1Er0kYcsbXsKXKynuLSxsVPocMppbr4YPhTsX2eHY/Mjw==", "requires": { - "os": "0.1.1", "tunnel": "0.0.4", - "typed-rest-client": "1.0.9", + "typed-rest-client": "1.2.0", "underscore": "1.8.3" }, "dependencies": { "typed-rest-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.0.9.tgz", - "integrity": "sha512-iOdwgmnP/tF6Qs+oY4iEtCf/3fnCDl7Gy9LGPJ4E3M4Wj3uaSko15FVwbsaBmnBqTJORnXBWVY5306D4HH8oiA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -155,9 +154,9 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -165,17 +164,13 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" } }, "js-yaml": { @@ -192,37 +187,17 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "ltx": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.8.1.tgz", - "integrity": "sha512-l4H1FS9I6IVqwvIpUHsSgyxE6t2jP7qd/2MeVG1UhmVK6vlHsQpfm2KNUcbdImeE0ai04vl1qTCF4CPCJqhknQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/ltx/-/ltx-2.9.2.tgz", + "integrity": "sha512-llB7HflFhlfsYYT1SAe80elCBO5C20ryLdwPB/A/BZk38hhVeZztDlWQ9uTyvKNPX4aK6sA+JfS1f/mfzp5cxA==", "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.4" } }, "minimatch": { @@ -238,11 +213,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" }, - "os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" - }, "packaging-common": { "version": "file:../../_build/Tasks/Common/packaging-common-1.0.1.tgz", "requires": { @@ -253,20 +223,20 @@ "@types/node": "10.12.9", "@types/q": "1.5.2", "adm-zip": "^0.4.11", - "azure-devops-node-api": "^6.6.0", + "azure-devops-node-api": "8.0.0", "azure-pipelines-task-lib": "2.8.0", "azure-pipelines-tool-lib": "0.12.0", "ini": "^1.3.4", "ip-address": "^5.8.9", "ltx": "^2.6.2", "q": "^1.5.0", - "typed-rest-client": "0.12.0" + "typed-rest-client": "1.2.0" }, "dependencies": { "typed-rest-client": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz", - "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "requires": { "tunnel": "0.0.4", "underscore": "1.8.3" @@ -295,9 +265,9 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "tunnel": { "version": "0.0.4", @@ -335,7 +305,7 @@ }, "vso-node-api": { "version": "6.5.0", - "resolved": "http://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", + "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.5.0.tgz", "integrity": "sha512-hFjPLMJkq02zF8U+LhZ4airH0ivaiKzGdlNAQlYFB3lWuGH/UANUrl63DVPUQOyGw+7ZNQ+ufM44T6mWN92xyg==", "requires": { "tunnel": "0.0.4", diff --git a/Tasks/TwineAuthenticateV0/task.json b/Tasks/TwineAuthenticateV0/task.json index 4cb107bc7399..961836cc928c 100644 --- a/Tasks/TwineAuthenticateV0/task.json +++ b/Tasks/TwineAuthenticateV0/task.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/TwineAuthenticateV0/task.loc.json b/Tasks/TwineAuthenticateV0/task.loc.json index 791802591f01..b86de2c11e79 100644 --- a/Tasks/TwineAuthenticateV0/task.loc.json +++ b/Tasks/TwineAuthenticateV0/task.loc.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/UniversalPackagesV0/task.json b/Tasks/UniversalPackagesV0/task.json index 7d4d5d80ac7f..3c805aa11cb4 100644 --- a/Tasks/UniversalPackagesV0/task.json +++ b/Tasks/UniversalPackagesV0/task.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/UniversalPackagesV0/task.loc.json b/Tasks/UniversalPackagesV0/task.loc.json index ec71aac7b6a3..733158d71717 100644 --- a/Tasks/UniversalPackagesV0/task.loc.json +++ b/Tasks/UniversalPackagesV0/task.loc.json @@ -9,7 +9,7 @@ "category": "Package", "version": { "Major": 0, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "runsOn": [ diff --git a/Tasks/UseDotNetV2/task.json b/Tasks/UseDotNetV2/task.json index b61889d721ca..e9add2630ea9 100644 --- a/Tasks/UseDotNetV2/task.json +++ b/Tasks/UseDotNetV2/task.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 0, - "Patch": 24 + "Patch": 25 }, "satisfies": [ "DotNetCore" diff --git a/Tasks/UseDotNetV2/task.loc.json b/Tasks/UseDotNetV2/task.loc.json index 84f23401d7b5..ca38c707b4d5 100644 --- a/Tasks/UseDotNetV2/task.loc.json +++ b/Tasks/UseDotNetV2/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 2, "Minor": 0, - "Patch": 24 + "Patch": 25 }, "satisfies": [ "DotNetCore" @@ -181,4 +181,4 @@ "OnlyExplicitVersionAllowed": "ms-resource:loc.messages.OnlyExplicitVersionAllowed", "SupportPhaseNotPresentInChannel": "ms-resource:loc.messages.SupportPhaseNotPresentInChannel" } -} \ No newline at end of file +} diff --git a/Tasks/UseNodeV1/task.json b/Tasks/UseNodeV1/task.json index b1bf2d90aad9..f57f5c7f2b62 100644 --- a/Tasks/UseNodeV1/task.json +++ b/Tasks/UseNodeV1/task.json @@ -16,8 +16,8 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, - "Patch": 1 + "Minor": 161, + "Patch": 0 }, "satisfies": [ "Node", diff --git a/Tasks/UseNodeV1/task.loc.json b/Tasks/UseNodeV1/task.loc.json index 56cd3cc467e9..48a5afaddfe9 100644 --- a/Tasks/UseNodeV1/task.loc.json +++ b/Tasks/UseNodeV1/task.loc.json @@ -16,8 +16,8 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, - "Patch": 1 + "Minor": 161, + "Patch": 0 }, "satisfies": [ "Node", diff --git a/Tasks/VSBuildV1/task.json b/Tasks/VSBuildV1/task.json index a6be3bf11118..113ef32ef971 100644 --- a/Tasks/VSBuildV1/task.json +++ b/Tasks/VSBuildV1/task.json @@ -12,7 +12,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [ @@ -66,7 +66,11 @@ "label": "Platform", "helpMarkDown": "Specify the platform you want to build such as Win32, x86, x64 or any cpu.", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Platform: < > * | : \\ / & % \" . # ?" + } }, { "name": "configuration", @@ -74,7 +78,11 @@ "label": "Configuration", "helpMarkDown": "Specify the configuration you want to build such as debug or release.", "defaultValue": "", - "required": false + "required": false, + "validation": { + "expression": "isMatch(value, '[<>*|:\\/&%\".#?]'", + "message": "The following characters are forbidden in Configuration: < > * | : \\ / & % \" . # ?" + } }, { "name": "clean", diff --git a/Tasks/VsTestV1/Tests/L0.ts b/Tasks/VsTestV1/Tests/L0.ts new file mode 100644 index 000000000000..f759ab3240d0 --- /dev/null +++ b/Tasks/VsTestV1/Tests/L0.ts @@ -0,0 +1,30 @@ +/// +/// + +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('VsTestV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/VsTestV1/tsconfig.json b/Tasks/VsTestV1/tsconfig.json new file mode 100644 index 000000000000..79a868c8d1e3 --- /dev/null +++ b/Tasks/VsTestV1/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Tasks/VsTestV2/Strings/resources.resjson/en-US/resources.resjson b/Tasks/VsTestV2/Strings/resources.resjson/en-US/resources.resjson index 5d74ba171d72..e02d55f1abe0 100644 --- a/Tasks/VsTestV2/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/VsTestV2/Strings/resources.resjson/en-US/resources.resjson @@ -69,6 +69,10 @@ "loc.input.help.configuration": "Build configuration against which the tests should be reported. If you have defined a variable for configuration in your build task, use that here.", "loc.input.label.publishRunAttachments": "Upload test attachments", "loc.input.help.publishRunAttachments": "Opt in/out of publishing run level attachments.", + "loc.input.label.failOnMinTestsNotRun": "Fail the task if a minimum number of tests are not run.", + "loc.input.help.failOnMinTestsNotRun": "Selecting this option will fail the task if specified minimum number of tests is not run.", + "loc.input.label.minimumExpectedTests": "Minimum # of tests", + "loc.input.help.minimumExpectedTests": "Specify the minimum # of tests that should be run for the task to succeed. Total tests executed is calculated as the sum of passed, failed and aborted tests.", "loc.input.label.diagnosticsEnabled": "Collect advanced diagnostics in case of catastrophic failures", "loc.input.help.diagnosticsEnabled": "Collect advanced diagnostics in case of catastrophic failures.", "loc.input.label.collectDumpOn": "Collect process dump and attach to test run report", diff --git a/Tasks/VsTestV2/distributedtest.ts b/Tasks/VsTestV2/distributedtest.ts index f5401b93eb2a..4036e12601eb 100644 --- a/Tasks/VsTestV2/distributedtest.ts +++ b/Tasks/VsTestV2/distributedtest.ts @@ -75,7 +75,7 @@ export class DistributedTest { const dtaExecutionHostTool = tl.tool(path.join(__dirname, 'Modules/DTAExecutionHost.exe')); dtaExecutionHostTool.arg(['--inputFile', inputFilePath]); - const code = await dtaExecutionHostTool.exec({ ignoreReturnCode:this.inputDataContract.ExecutionSettings.IgnoreTestFailures, env: envVars }); + const code = await dtaExecutionHostTool.exec({ ignoreReturnCode:this.inputDataContract.TestReportingSettings.ExecutionStatusSettings.IgnoreTestFailures, env: envVars }); //hydra: add consolidated ci for inputs in C# layer for now const consolidatedCiData = { @@ -99,9 +99,15 @@ export class DistributedTest { if (this.inputDataContract.TestSelectionSettings.TestSelectionType.toLowerCase() !== 'testassemblies') { sourceFilter = ['**\\*', '!**\\obj\\*']; } - + const telemetryProps: { [key: string]: any; } = { MiniMatchLines: sourceFilter.length }; + telemetryProps.ExecutionFlow = 'Distributed'; + var start = new Date().getTime(); const sources = tl.findMatch(this.inputDataContract.TestSelectionSettings.SearchFolder, sourceFilter); - tl.debug('tl match count :' + sources.length); + tl.debug(`${sources.length} files matched the given minimatch filter`); + var timeTaken = new Date().getTime() - start; + tl.debug(`Time taken for applying the minimatch pattern to filter out the sources ${timeTaken} ms` ); + telemetryProps.TimeToSearchDLLsInMilliSeconds = timeTaken; + ci.publishTelemetry('TestExecution','MinimatchFilterPerformance', telemetryProps); const filesMatching = []; sources.forEach(function (match: string) { if (!fs.lstatSync(match).isDirectory()) { diff --git a/Tasks/VsTestV2/inputdatacontract.ts b/Tasks/VsTestV2/inputdatacontract.ts index f70270bdf10b..6f1af12fc0ea 100644 --- a/Tasks/VsTestV2/inputdatacontract.ts +++ b/Tasks/VsTestV2/inputdatacontract.ts @@ -25,6 +25,7 @@ export interface TestReportingSettings { TestResultsDirectory : string; TestRunSystem : string; TestSourceSettings : TestSourceSettings; + ExecutionStatusSettings : ExecutionStatusSettings; } export interface TestSelectionSettings { @@ -95,8 +96,7 @@ export interface ExecutionSettings { DefaultTestBatchSize : number; AssemblyLevelParallelism : boolean; CodeCoverageEnabled : boolean; - PathToCustomTestAdapters : string; - IgnoreTestFailures : boolean; + PathToCustomTestAdapters : string; ProceedAfterAbortedTestCase : boolean; PathToCustomVsTestConsoleWrapperAssembly : string; SettingsFile : string; @@ -114,6 +114,12 @@ export interface TestSourceSettings { PullRequestTargetBranchName : string; } +export interface ExecutionStatusSettings { + IgnoreTestFailures : boolean; + MinimumExecutedTestsExpected : number; + ActionOnThresholdNotMet : string; +} + export interface DiagnosticsSettings { Enabled : boolean; DumpCollectionType : string; diff --git a/Tasks/VsTestV2/inputparser.ts b/Tasks/VsTestV2/inputparser.ts index 98cde68ced45..5f25f6f421e0 100644 --- a/Tasks/VsTestV2/inputparser.ts +++ b/Tasks/VsTestV2/inputparser.ts @@ -168,7 +168,8 @@ function getTestReportingSettings(inputDataContract : idc.InputDataContract) : i inputDataContract.TestReportingSettings.TestSourceSettings = {}; inputDataContract.TestReportingSettings.TestSourceSettings.PullRequestTargetBranchName = tl.getVariable('System.PullRequest.TargetBranch'); - + inputDataContract.TestReportingSettings.ExecutionStatusSettings = {}; + inputDataContract.TestReportingSettings.ExecutionStatusSettings.IgnoreTestFailures = utils.Helper.stringToBool(tl.getVariable('vstest.ignoretestfailures')); if (utils.Helper.isNullEmptyOrUndefined(inputDataContract.TestReportingSettings.TestRunTitle)) { let definitionName = tl.getVariable('BUILD_DEFINITIONNAME'); @@ -181,6 +182,20 @@ function getTestReportingSettings(inputDataContract : idc.InputDataContract) : i inputDataContract.TestReportingSettings.TestRunTitle = `TestRun_${definitionName}_${buildOrReleaseName}`; } + + const actionOnThresholdNotMet = tl.getBoolInput('failOnMinTestsNotRun'); + if (actionOnThresholdNotMet) + { + inputDataContract.TestReportingSettings.ExecutionStatusSettings.ActionOnThresholdNotMet = "fail"; + const miniumExpectedTests = parseInt(tl.getInput('minimumExpectedTests')); + if (!isNaN(miniumExpectedTests)) { + inputDataContract.TestReportingSettings.ExecutionStatusSettings.MinimumExecutedTestsExpected = miniumExpectedTests; + console.log(tl.loc('minimumExpectedTests', inputDataContract.TestReportingSettings.ExecutionStatusSettings.MinimumExecutedTestsExpected)); + } else { + throw new Error(tl.loc('invalidMinimumExpectedTests :' + tl.getInput('minimumExpectedTests'))); + } + } + return inputDataContract; } @@ -346,8 +361,6 @@ function getExecutionSettings(inputDataContract : idc.InputDataContract) : idc.I } console.log(tl.loc('pathToCustomAdaptersInput', inputDataContract.ExecutionSettings.PathToCustomTestAdapters)); - inputDataContract.ExecutionSettings.IgnoreTestFailures = utils.Helper.stringToBool(tl.getVariable('vstest.ignoretestfailures')); - inputDataContract.ExecutionSettings.ProceedAfterAbortedTestCase = false; if (tl.getVariable('ProceedAfterAbortedTestCase') && tl.getVariable('ProceedAfterAbortedTestCase').toUpperCase() === 'TRUE') { inputDataContract.ExecutionSettings.ProceedAfterAbortedTestCase = true; diff --git a/Tasks/VsTestV2/make.json b/Tasks/VsTestV2/make.json index 2dad8141950c..28a6247c41dd 100644 --- a/Tasks/VsTestV2/make.json +++ b/Tasks/VsTestV2/make.json @@ -6,7 +6,7 @@ "dest": "./" }, { - "url": "https://testexecution.blob.core.windows.net/testexecution/10738269/TestAgent.zip", + "url": "https://testexecution.blob.core.windows.net/testexecution/10897678/TestAgent.zip", "dest": "./Modules" }, { diff --git a/Tasks/VsTestV2/nondistributedtest.ts b/Tasks/VsTestV2/nondistributedtest.ts index 58c170673d97..356e975232b2 100644 --- a/Tasks/VsTestV2/nondistributedtest.ts +++ b/Tasks/VsTestV2/nondistributedtest.ts @@ -2,6 +2,7 @@ import * as tl from 'azure-pipelines-task-lib/task'; import * as tr from 'azure-pipelines-task-lib/toolrunner'; import * as path from 'path'; import * as utils from './helpers'; +import * as ci from './cieventlogger'; import * as outStream from './outputstream'; import * as os from 'os'; import * as uuid from 'uuid'; @@ -23,18 +24,10 @@ export class NonDistributedTest { console.log(tl.loc('runTestsLocally', 'vstest.console.exe')); console.log('========================================================'); - - this.testAssemblyFiles = this.getTestAssemblies(); - if (!this.testAssemblyFiles || this.testAssemblyFiles.length === 0) { - console.log('##vso[task.logissue type=warning;code=002004;]'); - tl.warning(tl.loc('NoMatchingTestAssemblies', this.sourceFilter)); - return; - } - const exitCode = await this.startDtaExecutionHost(); tl.debug('DtaExecutionHost finished'); - if (exitCode !== 0 && !this.inputDataContract.ExecutionSettings.IgnoreTestFailures) { + if (exitCode !== 0 && !this.inputDataContract.TestReportingSettings.ExecutionStatusSettings.IgnoreTestFailures) { tl.debug('Modules/DTAExecutionHost.exe process exited with code ' + exitCode); tl.setResult(tl.TaskResult.Failed, tl.loc('VstestFailed'), true); return; @@ -86,7 +79,7 @@ export class NonDistributedTest { } const execOptions: tr.IExecOptions = { - IgnoreTestFailures: this.inputDataContract.ExecutionSettings.IgnoreTestFailures, + IgnoreTestFailures: this.inputDataContract.TestReportingSettings.ExecutionStatusSettings.IgnoreTestFailures, env: envVars, failOnStdErr: false, // In effect this will not be called as failOnStdErr is false @@ -105,18 +98,18 @@ export class NonDistributedTest { return 1; } } - - private getTestAssemblies(): string[] { - tl.debug('Searching for test assemblies in: ' + this.inputDataContract.TestSelectionSettings.SearchFolder); - return tl.findMatch(this.inputDataContract.TestSelectionSettings.SearchFolder, this.sourceFilter); - } - private createTestSourcesFile(): string { try { console.log(tl.loc('UserProvidedSourceFilter', this.sourceFilter.toString())); - + const telemetryProps: { [key: string]: any; } = { MiniMatchLines: this.sourceFilter.length }; + telemetryProps.ExecutionFlow = 'NonDistributed'; + var start = new Date().getTime(); const sources = tl.findMatch(this.inputDataContract.TestSelectionSettings.SearchFolder, this.sourceFilter); - tl.debug('tl match count :' + sources.length); + var timeTaken = new Date().getTime() - start; + tl.debug( `Time taken for applying the minimatch pattern to filter out the sources ${timeTaken} ms` ); + telemetryProps.TimeToSearchDLLsInMilliSeconds = timeTaken; + tl.debug(`${sources.length} files matched the given minimatch filter`); + ci.publishTelemetry('TestExecution','MinimatchFilterPerformance', telemetryProps); const filesMatching = []; sources.forEach(function (match: string) { if (!fs.lstatSync(match).isDirectory()) { diff --git a/Tasks/VsTestV2/task.json b/Tasks/VsTestV2/task.json index 88b91fe0c649..6fab3784e0cf 100644 --- a/Tasks/VsTestV2/task.json +++ b/Tasks/VsTestV2/task.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 1 }, "demands": [ @@ -407,6 +407,25 @@ "helpMarkDown": "Opt in/out of publishing run level attachments.", "groupName": "reportingOptions" }, + { + "name": "failOnMinTestsNotRun", + "type": "boolean", + "label": "Fail the task if a minimum number of tests are not run.", + "defaultValue": "False", + "required": false, + "helpMarkDown": "Selecting this option will fail the task if specified minimum number of tests is not run.", + "groupName": "reportingOptions" + }, + { + "name": "minimumExpectedTests", + "type": "string", + "label": "Minimum # of tests", + "defaultValue": "1", + "required": false, + "helpMarkDown": "Specify the minimum # of tests that should be run for the task to succeed. Total tests executed is calculated as the sum of passed, failed and aborted tests.", + "groupName": "reportingOptions", + "visibleRule": "failOnMinTestsNotRun = true" + }, { "name": "diagnosticsEnabled", "type": "boolean", diff --git a/Tasks/VsTestV2/task.loc.json b/Tasks/VsTestV2/task.loc.json index a8efdeeacf5f..79cb526a5b5a 100644 --- a/Tasks/VsTestV2/task.loc.json +++ b/Tasks/VsTestV2/task.loc.json @@ -17,7 +17,7 @@ "author": "Microsoft Corporation", "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 1 }, "demands": [ @@ -407,6 +407,25 @@ "helpMarkDown": "ms-resource:loc.input.help.publishRunAttachments", "groupName": "reportingOptions" }, + { + "name": "failOnMinTestsNotRun", + "type": "boolean", + "label": "ms-resource:loc.input.label.failOnMinTestsNotRun", + "defaultValue": "False", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.failOnMinTestsNotRun", + "groupName": "reportingOptions" + }, + { + "name": "minimumExpectedTests", + "type": "string", + "label": "ms-resource:loc.input.label.minimumExpectedTests", + "defaultValue": "1", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.minimumExpectedTests", + "groupName": "reportingOptions", + "visibleRule": "failOnMinTestsNotRun = true" + }, { "name": "diagnosticsEnabled", "type": "boolean", diff --git a/Tasks/XamarinAndroidV1/task.json b/Tasks/XamarinAndroidV1/task.json index a2e811fcf5a3..eef260cfa0ab 100644 --- a/Tasks/XamarinAndroidV1/task.json +++ b/Tasks/XamarinAndroidV1/task.json @@ -12,7 +12,7 @@ "author": "Microsoft Corporation", "version": { "Major": 1, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "demands": [ diff --git a/Tasks/XamarinTestCloudV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/XamarinTestCloudV1/Strings/resources.resjson/en-US/resources.resjson index ad842825e650..560a389003c3 100644 --- a/Tasks/XamarinTestCloudV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/XamarinTestCloudV1/Strings/resources.resjson/en-US/resources.resjson @@ -1,6 +1,6 @@ { "loc.friendlyName": "Xamarin Test Cloud", - "loc.helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?LinkID=613744)", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613744)", "loc.description": "[Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.", "loc.instanceNameFormat": "Test $(app) with Xamarin.UITest in Xamarin Test Cloud", "loc.group.displayName.advanced": "Advanced", diff --git a/Tasks/XamarinTestCloudV1/Tests/L0.ts b/Tasks/XamarinTestCloudV1/Tests/L0.ts new file mode 100644 index 000000000000..302aa6df22bd --- /dev/null +++ b/Tasks/XamarinTestCloudV1/Tests/L0.ts @@ -0,0 +1,27 @@ +import fs = require('fs'); +import assert = require('assert'); +import path = require('path'); + +const psm = require('../../../Tests/lib/psRunner'); +let psr = null; + +describe('XamarinTestCloudV1 Suite', function () { + before((done) => { + if (psm.testSupported()) { + psr = new psm.PSRunner(); + psr.start(); + } + done(); + }); + + after(function () { + if (psr) { + psr.kill(); + } + }); + + it('Does a basic hello world test', function(done: MochaDone) { + // TODO - add real tests + done(); + }); +}); diff --git a/Tasks/XamariniOSV2/task.json b/Tasks/XamariniOSV2/task.json index 21bc653ffc37..0bac20d74a23 100644 --- a/Tasks/XamariniOSV2/task.json +++ b/Tasks/XamariniOSV2/task.json @@ -12,7 +12,7 @@ "author": "Microsoft Corporation", "version": { "Major": 2, - "Minor": 160, + "Minor": 161, "Patch": 0 }, "releaseNotes": "iOS signing set up has been removed from the task. Use `Secure Files` with supporting tasks `Install Apple Certificate` and `Install Apple Provisioning Profile` to setup signing. Updated options to work better with `Visual Studio for Mac`.", diff --git a/ci/file-bugs.js b/ci/file-bugs.js new file mode 100644 index 000000000000..7d0f4af024d4 --- /dev/null +++ b/ci/file-bugs.js @@ -0,0 +1,293 @@ +const fs = require('fs'); +const Octokit = require('@octokit/rest'); +const path = require('path'); +const jsyaml = require('js-yaml'); +const azdev = require('azure-devops-node-api'); + +const githubPAT = process.env['GITHUB_PAT']; +const azpPAT = process.env['AZP_PAT']; + +// Number of bugs an area is allowed to have before a P0 AzDevOps bug is filed. +const bugTolerance = 100; +// Number of stale bugs an area is allowed to have before a P0 AzDevOps bug is filed. +const staleBugTolerance = 10; +// Number of untouched bugs an area is allowed to have before a P0 AzDevOps bug is filed. An untouched bug is one that is both stale and has never been responded to. +const untouchedBugTolerance = 0; +// Number of days a bug can avoid having activity before being marked stale. +const staleTimeout = 30; + +// Reads in a mapping of paths to labels owned by that path from issue-rules.yml +function getPathMappings() { + let mappingDict = {}; + var yaml = jsyaml.safeLoad(fs.readFileSync(path.join(__dirname, '..', 'issue-rules.yml'), 'utf8')); + var pathMappings = yaml['pathMappings']; + pathMappings.forEach(mapping => { + mappingDict[mapping['path']] = mapping['labels'] + }) + return mappingDict; +} + +function banner(text) { + console.log(); + console.log('----------------------------------------------------------'); + console.log(text); + console.log('----------------------------------------------------------'); + console.log(); +} + +function header(text) { + console.log('--------' + text + '--------'); +} + +// Given a list of GitHub issues, filters out Pull Requests (the GitHub API doesn't differentiate between issues and PRs) +function filterOutPullRequests(issues) { + return issues.filter((value) => { + return !value.pull_request; + }) +} + +// Prints a map sorted on the second function. Takes an optional printFunction parameter to dictate how we print the output +function printSortedMap(dict, printFunction){ + // Create items array + var items = Object.keys(dict).map(function(key) { + return [key, dict[key]]; + }); + + // Sort the array based on the second element + items.sort(function(first, second) { + return second[1] - first[1]; + }); + + // Create a new array with only the first 5 items + items.forEach(item => { + if (!printFunction) { + console.log(item[0] + ': ' + item[1]); + } else { + printFunction(item); + } + }) +} + +// Takes a list of github issues and returns an object mapping issue labels to the number of issues with that label +function getIssuesByLabel(issues, issueType) { + issueType = issueType.toLowerCase(); + let labelMap = {}; + issues.forEach(issue => { + if (issue.labels) { + let containsIssueType = false; + + issue.labels.forEach(label => { + const labelName = label.name; + if (labelName.toLowerCase(labelName) == issueType) { + containsIssueType = true; + } + }); + + if (containsIssueType) { + issue.labels.forEach(label => { + const labelName = label.name; + if (labelName.toLowerCase(labelName) != issueType) { + if (labelName in labelMap) { + labelMap[labelName]++; + } else { + labelMap[labelName] = 1; + } + } + }); + } + } + }); + + return labelMap; +} + +// Generates urls to view bugs by label for the bodies of the bugs +function getIssueUrls(labels) { + var urls = ''; + labels.forEach(label => { + urls += `
https://github.com/microsoft/azure-pipelines-tasks/issues?q=is%3Aissue+is%3Aopen+label%3Abug+label%3A%22Area%3A+Release%22+label%3A%22${label.replace(': ', '%3A+')}%22
` + }); + + return urls; +} + +// Gets the node api for getting workitems +async function getNodeApi() { + let authHandler = azdev.getPersonalAccessTokenHandler(azpPAT); + let connection = new azdev.WebApi('https://dev.azure.com/mseng', authHandler); + return await connection.getWorkItemTrackingApi(); +} + +// Creates a bug. If one already exists with the same path/title, does nothing +async function createBug(nodeApi, path, title, message) { + // First try to find an already created bug. If that doesn't exist, create a new one. + const wiql = `SELECT System.ID from workitems where [Title] = '${title}' and [System.AreaPath] = '${path}' AND [System.State] = 'Active'`; + const items = await nodeApi.queryByWiql({query: wiql}); + + if (!items['workItems'] || items['workItems'].length == 0) { + const workItem = await nodeApi.createWorkItem(null, [ + { + "op": "add", + "path": "/fields/System.Title", + "value": title + }, + { + "op": "add", + "path": "/fields/System.AreaPath", + "value": path + } + ], 'AzureDevOps', 'Bug'); + + await nodeApi.addComment({text: message}, 'AzureDevOps', workItem.id); + console.log(workItem.id); + } else { + console.log(`Work item already exists:\n${items['workItems']}`) + } + + console.log(await nodeApi.getComments('AzureDevOps', 1644436)); +} + +/* +* This is the important function for 90+% of users. Takes in some issue maps and assigns bugs based off of the results. +* +* @param bugsByLabel The number of bugs assigned to each area +* @param staleBugsByLabel The number of stale bugs assigned to each area +* @param untouchedBugsByLabel The number of untouched bugs assigned to each area +* +* @returns void +*/ +async function fileBugs(bugsByLabel, staleBugsByLabel, untouchedBugsByLabel) { + banner('Filing bugs for the following areas'); + + const nodeApi = await getNodeApi(); + const labelToPathMapping = getPathMappings(); + + const paths = Object.keys(labelToPathMapping); + for(i = 0; i < paths.length; i++) { + const path = paths[i]; + let bugs = 0; + let staleBugs = 0; + let untouchedBugs = 0; + const labels = labelToPathMapping[path]; + for (var j = 0; j < labels.length; j++) { + const label = labels[j]; + if (label in bugsByLabel) { + bugs += bugsByLabel[label]; + } + if (label in staleBugsByLabel) { + staleBugs += staleBugsByLabel[label]; + } + if (label in untouchedBugsByLabel) { + untouchedBugs += untouchedBugsByLabel[label]; + } + } + + if (bugs > bugTolerance || staleBugs > staleBugTolerance || untouchedBugs > untouchedBugTolerance) { + header(path); + console.log('Bugs:', bugs); + console.log('Stale bugs:', staleBugs); + console.log('Untouched bugs:', untouchedBugs); + console.log(); + + let bugTitle = `Too many bugs in https://github.com/microsoft/azure-pipelines-tasks`; + // Format message as html so it renders correctly. + let bugMessage = +`
The number of bugs assigned to the labels owned by this area path in https://github.com/microsoft/azure-pipelines-tasks has exceeded the number of allowable bugs.
+

+
Labels owned by this area: ${JSON.stringify(labels)}
+

+
Current bug counts:
+
Bugs: ${bugs}
+
Stale bugs (>30 days without action): ${staleBugs}
+
Untouched bugs (stale, never responded to): ${untouchedBugs}
+

+
The number of allowable bugs for a given area is:
+
Bugs: ${bugTolerance}
+
Stale bugs (>30 days without action): ${staleBugTolerance}
+
Untouched bugs (stale, never responded to): ${untouchedBugs}
+

+
To view this area's bugs, visit the following urls:
+
${getIssueUrls(labels)}
+

+
If you believe this issue was filed in error, please follow the following steps:
+
1) Check the path mappings at the bottom of https://github.com/microsoft/azure-pipelines-tasks/blob/master/issue-rules.yml. If your path is incorrectly mapped, add a PR and tag @damccorm for review
+
2) If the path mappings look correct, file a bug in AzureDevOps\\VSTS\\Pipelines\\Platform and assign Danny McCormick (alias damccorm)
`; + + await createBug(nodeApi, path, bugTitle, bugMessage); + } + } +} + +// Main - gets issues from GitHub and performs computation on them, culminating in us filing bugs. +async function run() { + const octokit = new Octokit({ + auth: githubPAT + }); + + banner('Getting issues...'); + const options = octokit.issues.listForRepo.endpoint.merge({ + owner: 'microsoft', + repo: 'azure-pipelines-tasks', + state: 'open' + }); + const issuesAndPulls = await octokit.paginate(options); + + const issues = filterOutPullRequests(issuesAndPulls); + console.log('Found ' + issues.length + ' issues of any type.'); + + banner('Analyzing issues...'); + const labelMap = getIssuesByLabel(issues, 'bug'); + + header('Open bugs by area'); + printSortedMap(labelMap, (item) => { + if (item[0].startsWith('Area: ')) { + console.log(item[0].slice('Area: '.length) + ': ' + item[1]); + } + }); + + banner(`Getting stale issues (open with no activity in the last ${staleTimeout} days)`); + const today = new Date(); + const staleDate = new Date().setDate(today.getDate()-staleTimeout); + const staleIssues = issues.filter(value => { + const updated = new Date(value.updated_at); + return updated < staleDate; + }); + console.log('Found ' + staleIssues.length + ' stale issues of any type.'); + + banner('Analyzing stale issues'); + const staleLabelMap = getIssuesByLabel(staleIssues, 'bug'); + + header('Stale bugs by area'); + printSortedMap(staleLabelMap, (item) => { + if (item[0].startsWith('Area: ')) { + console.log(item[0].slice('Area: '.length) + ': ' + item[1]); + } + }); + + banner('Getting stale issues that have never been responded to'); + const untouchedIssues = staleIssues.filter(value => { + return (!value.comments || value.comments < 1); + }); + console.log('Found ' + untouchedIssues.length + ' untouched issues of any type.'); + + banner('Analyzing stale issues that have never been responded to'); + const untouchedLabelMap = getIssuesByLabel(untouchedIssues, 'bug'); + + header('Stale bugs by area'); + printSortedMap(untouchedLabelMap, (item) => { + if (item[0].startsWith('Area: ')) { + console.log(item[0].slice('Area: '.length) + ': ' + item[1]); + } + }); + + try { + await fileBugs(labelMap, staleLabelMap, untouchedLabelMap); + } + catch (err) { + // Log error before throwing or it will get swallowed since its inside an async function + console.log(err); + throw err; + } +} + +run(); diff --git a/docs/tests-needed.md b/docs/tests-needed.md new file mode 100644 index 000000000000..916b36811fc8 --- /dev/null +++ b/docs/tests-needed.md @@ -0,0 +1,174 @@ +# Tests Needed! + +Right now, lots of our tasks are missing even basic unit test coverage. To help us reach a better place, we'd like help writing some! + +The initial goal here is pretty small - get at least one unit test per task that tests a mainline use. +The idea here is to lower the entry barrier for writing new tests so that we can make that an expectation with any PR introducing new +functionality. + +To that end, we've created the following table which indicates which tasks currently have no tests, please add tests and help get the number +of untested tasks to 0! + +| Task | Owner | Tested? | +|---|---|---| +| AndroidSigningV2 | @leantk | :heavy_check_mark: | +| AndroidSigningV3 | @leantk | :heavy_check_mark: | +| ANTV1 | @leantk | | +| AppCenterDistributeV1 | @DennisPan @turanuk | :heavy_check_mark: | +| AppCenterDistributeV2 | @DennisPan @turanuk | :heavy_check_mark: | +| AppCenterDistributeV3 | @DennisPan @turanuk | :heavy_check_mark: | +| AppCenterTestV1 | @owenniblock | :heavy_check_mark: | +| ArchiveFilesV2 | @jtpetty | :heavy_check_mark: | +| AzureAppServiceManageV0 | @kmkumaran @SumiranAgg @vincentdass | :heavy_check_mark: | +| AzureAppServiceSettingsV1 | @eaarora-ms @SumiranAgg @vincentdass @niadak | | +| AzureCLIV1 | @bishal-pdmsft | | +| AzureCLIV2 | @bishal-pdmsft | | +| AzureCloudPowerShellDeploymentV1 | @kmkumaran | | +| AzureFileCopyV1 | @kmkumaran | :heavy_check_mark: | +| AzureFileCopyV2 | @kmkumaran | :heavy_check_mark: | +| AzureFileCopyV3 | @kmkumaran | :heavy_check_mark: | +| AzureFunctionAppContainerV1 | @kmkumaran @SumiranAgg | :heavy_check_mark: | +| AzureFunctionAppV1 | @kmkumaran @SumiranAgg | | +| AzureFunctionOnKubernetesV0 | | | +| AzureIoTEdgeV2 | @prativen @blackchoey @michaeljqzq | | +| AzureKeyVaultV1 | @bansalaseem | :heavy_check_mark: | +| AzureMonitorAlertsV0 | @kmkumaran | :heavy_check_mark: | +| AzureMysqlDeploymentV1 | @kmkumaran @RoshanKumarMicrosoft | :heavy_check_mark: | +| AzureNLBManagementV1 | @kmkumaran | :heavy_check_mark: | +| AzurePowerShellV2 | @kmkumaran | :heavy_check_mark: | +| AzurePowerShellV3 | @kmkumaran | :heavy_check_mark: | +| AzurePowerShellV4 | @kmkumaran | :heavy_check_mark: | +| AzureResourceGroupDeploymentV2 | @bishal-pdmsft | :heavy_check_mark: | +| AzureResourceManagerTemplateDeploymentV3 | @bishal-pdmsft @vinodkumar3 | :heavy_check_mark: | +| AzureRmWebAppDeploymentV3 | @kmkumaran @SumiranAgg @vincentdass | :heavy_check_mark: | +| AzureRmWebAppDeploymentV4 | @kmkumaran @SumiranAgg @vincentdass | :heavy_check_mark: | +| AzureVmssDeploymentV0 | @bishal-pdmsft | :heavy_check_mark: | +| AzureWebAppContainerV1 | @kmkumaran @SumiranAgg @vincentdass | :heavy_check_mark: | +| AzureWebAppV1 | @kmkumaran @SumiranAgg @vincentdass | | +| BashV3 | @jtpetty | :heavy_check_mark: | +| ChefKnifeV1 | @kmkumaran | | +| ChefV1 | @kmkumaran | | +| CMakeV1 | @daveken | | +| CmdLineV2 | @jtpetty | :heavy_check_mark: | +| CocoaPodsV0 | @leantk | | +| CondaEnvironmentV0 | @leantk | :heavy_check_mark: | +| CondaEnvironmentV1 | @leantk | :heavy_check_mark: | +| ContainerBuildV0 | @vithati @prebansa | :heavy_check_mark: | +| ContainerStructureTestV0 | @SadagopanRajaram @navin22 | | +| CopyFilesOverSSHV0 | @leantk | | +| CopyFilesV2 | @jtpetty | :heavy_check_mark: | +| CUrlUploaderV2 | @leantk | | +| DecryptFileV1 | @leantk | | +| DeleteFilesV1 | @jtpetty | :heavy_check_mark: | +| DeployVisualStudioTestAgentV2 | @SadagopanRajaram @ShreyasRmsft | :heavy_check_mark: | +| DockerComposeV0 | @bansalaseem | :heavy_check_mark: | +| DockerInstallerV0 | | | +| DockerV0 | @bansalaseem | :heavy_check_mark: | +| DockerV1 | @bansalaseem | :heavy_check_mark: | +| DockerV2 | @bansalaseem | :heavy_check_mark: | +| DotNetCoreCLIV2 | @bishal-pdmsft | :heavy_check_mark: | +| DotNetCoreInstallerV0 | @bishal-pdmsft | :heavy_check_mark: | +| DotNetCoreInstallerV1 | @bishal-pdmsft | :heavy_check_mark: | +| DownloadBuildArtifactsV0 | @Lovakumar @omeshp | | +| DownloadFileshareArtifactsV0 | @Lovakumar @omeshp | | +| DownloadGitHubReleaseV0 | | | +| DownloadPackageV0 | @zjrunner | | +| DownloadPackageV1 | | :heavy_check_mark: | +| DownloadSecureFileV1 | @leantk | :heavy_check_mark: | +| DuffleInstallerV0 | @bansalaseem @vithati | | +| ExtractFilesV1 | @jtpetty | :heavy_check_mark: | +| FileTransformV1 | @kmkumaran @SumiranAgg @vincentdass | | +| FileTransformV2 | | | +| FtpUploadV1 | @leantk | | +| FtpUploadV2 | | | +| FuncToolsInstallerV0 | | | +| GitHubCommentV0 | @ds-ms | | +| GitHubReleaseV0 | @prativen @mdmdakbar | :heavy_check_mark: | +| GitHubReleaseV1 | | :heavy_check_mark: | +| GoToolV0 | @bishal-pdmsft | | +| GoV0 | @bishal-pdmsft | :heavy_check_mark: | +| GradleV2 | @leantk | :heavy_check_mark: | +| GruntV0 | @hross | | +| GulpV0 | @hross | | +| GulpV1 | @hross | | +| HelmDeployV0 | @bansalaseem | | +| HelmInstallerV0 | @bansalaseem | | +| HelmInstallerV1 | @bansalaseem | | +| IISWebAppDeployment | @kmkumaran | | +| IISWebAppDeploymentOnMachineGroupV0 | @kmkumaran | :heavy_check_mark: | +| IISWebAppManagementOnMachineGroupV0 | @kmkumaran | :heavy_check_mark: | +| InstallAppleCertificateV2 | @leantk | :heavy_check_mark: | +| InstallAppleProvisioningProfileV1 | @leantk | :heavy_check_mark: | +| InstallSSHKeyV0 | @leantk | :heavy_check_mark: | +| JavaToolInstallerV0 | @leantk | :heavy_check_mark: | +| JenkinsDownloadArtifactsV1 | @Lovakumar @kasubram | :heavy_check_mark: | +| JenkinsQueueJobV2 | @leantk | :heavy_check_mark: | +| KubectlInstallerV0 | @bansalaseem | | +| KubernetesManifestV0 | @bansalaseem | :heavy_check_mark: | +| KubernetesV0 | @bansalaseem | :heavy_check_mark: | +| KubernetesV1 | @bansalaseem | :heavy_check_mark: | +| MavenAuthenticateV0 | @zjrunner @aasim | :heavy_check_mark: | +| MavenV2 | @leantk | | +| MavenV3 | @leantk | :heavy_check_mark: | +| MSBuildV1 | @daveken | :heavy_check_mark: | +| MysqlDeploymentOnMachineGroupV1 | @kmkumaran @RoshanKumarMicrosoft | :heavy_check_mark: | +| NodeToolV0 | @damccorm | :heavy_check_mark: | +| NpmAuthenticateV0 | @zjrunner | | +| NpmV0 | | :heavy_check_mark: | +| NpmV1 | @zjrunner @jotaylo | :heavy_check_mark: | +| NuGetAuthenticateV0 | @zjrunner @zarenner | | +| NuGetCommandV2 | @zjrunner @jotaylo | :heavy_check_mark: | +| NuGetInstallerV0 | | :heavy_check_mark: | +| NuGetPublisherV0 | @zjrunner | :heavy_check_mark: | +| NuGetRestoreV1 | | :heavy_check_mark: | +| NuGetToolInstallerV0 | @zjrunner | | +| NuGetToolInstallerV1 | | | +| NuGetV0 | @zjrunner | :heavy_check_mark: | +| OpenPolicyAgentInstallerV0 | @Anumita | | +| PackerBuildV0 | @bishal-pdmsft | :heavy_check_mark: | +| PackerBuildV1 | @bishal-pdmsft | :heavy_check_mark: | +| PipAuthenticateV0 | @zjrunner @shubham90 | | +| PipAuthenticateV1 | @zjrunner @shubham90 | :heavy_check_mark: | +| PowerShellOnTargetMachinesV1 | @kmkumaran | :heavy_check_mark: | +| PowerShellOnTargetMachinesV2 | @kmkumaran | :heavy_check_mark: | +| PowerShellOnTargetMachinesV3 | @kmkumaran | | +| PowerShellV2 | @jtpetty | :heavy_check_mark: | +| PublishBuildArtifactsV1 | @leantk | | +| PublishCodeCoverageResultsV1 | @SadagopanRajaram @nigurr | | +| PublishCodeCoverageResultsV2 | @karanjitsingh @acesiddhu | | +| PublishPipelineMetadataV0 | @vithati @nidabas | | +| PublishSymbolsV2 | @arunkm @mihaif @jahsu-MSFT @fadnavistanmay @owenhuynMSFT | :heavy_check_mark: | +| PublishTestResultsV1 | @smalpani | :heavy_check_mark: | +| PublishTestResultsV2 | @SadagopanRajaram | :heavy_check_mark: | +| PyPIPublisherV0 | @bishal-pdmsft @leantk | :heavy_check_mark: | +| PythonScriptV0 | @leantk | | +| QuickPerfTestV1 | @SadagopanRajaram @ShreyasRmsft | | +| ReviewAppV0 | @ds-ms | | +| RunJMeterLoadTestV1 | @SadagopanRajaram @ShreyasRmsft | | +| RunLoadTestV1 | @SadagopanRajaram @ShreyasRmsft | | +| ServiceFabricComposeDeployV0 | @bishal-pdmsft | :heavy_check_mark: | +| ServiceFabricDeployV1 | @bishal-pdmsft | :heavy_check_mark: | +| ServiceFabricPowerShellV1 | @bishal-pdmsft | :heavy_check_mark: | +| ServiceFabricUpdateManifestsV2 | @bishal-pdmsft | :heavy_check_mark: | +| ShellScriptV2 | | :heavy_check_mark: | +| SqlAzureDacpacDeploymentV1 | @kmkumaran | :heavy_check_mark: | +| SqlDacpacDeploymentOnMachineGroupV0 | @kmkumaran | | +| SqlServerDacpacDeployment | @kmkumaran | | +| SshV0 | @leantk | | +| TwineAuthenticateV0 | @zjrunner | | +| TwineAuthenticateV1 | @zjrunner @shubham90 | :heavy_check_mark: | +| UniversalPackagesV0 | @zjrunner | :heavy_check_mark: | +| UseDotNetV2 | @bishal-pdmsft | :heavy_check_mark: | +| UseNodeV1 | @damccorm | :heavy_check_mark: | +| UsePythonVersionV0 | @leantk | :heavy_check_mark: | +| UseRubyVersionV0 | @hross | :heavy_check_mark: | +| VSBuildV1 | @daveken | :heavy_check_mark: | +| VsTestPlatformToolInstallerV1 | @SadagopanRajaram @ShreyasRmsft | :heavy_check_mark: | +| VsTestV1 | @SadagopanRajaram @ShreyasRmsft | | +| VsTestV2 | @SadagopanRajaram @ShreyasRmsft | :heavy_check_mark: | +| WindowsMachineFileCopyV1 | @kmkumaran | :heavy_check_mark: | +| WindowsMachineFileCopyV2 | @kmkumaran | :heavy_check_mark: | +| XamarinAndroidV1 | @leantk | :heavy_check_mark: | +| XamariniOSV2 | @leantk | :heavy_check_mark: | +| XamarinTestCloudV1 | @leantk | | +| XcodeV5 | @leantk | :heavy_check_mark: | diff --git a/issue-rules.yml b/issue-rules.yml index 29d4a924d51c..2196c9a9f025 100644 --- a/issue-rules.yml +++ b/issue-rules.yml @@ -6,6 +6,9 @@ rules: contains: 'AppCenter' addLabels: ['Area: AppCenter'] # Area: Artifacts +- valueFor: '**Enter Task Name**' + contains: 'MavenAuthenticate' + addLabels: ['Area: Artifacts'] - valueFor: '**Enter Task Name**' contains: 'Nuget' addLabels: ['Area: Artifacts'] @@ -41,10 +44,14 @@ rules: contains: 'Gradle' addLabels: ['Area: CrossPlatform'] assign: ['leantk'] +- valueFor: '**Enter Task Name**' + contains: 'Maven' + addLabels: ['Area: CrossPlatform'] + assign: ['leantk'] - valueFor: '**Enter Task Name**' contains: 'Python' addLabels: ['Area: CrossPlatform'] - assign: ['leantk'] + assign: ['leantk'] - valueFor: '**Enter Task Name**' contains: 'PyPI' addLabels: ['Area: CrossPlatform'] @@ -95,7 +102,7 @@ rules: addLabels: ['Area: Release'] assign: ['prativen'] - valueFor: '**Enter Task Name**' - contains: 'GithubReleaseV' + contains: 'GithubRelease' addLabels: ['Area: Release'] assign: ['prativen'] - valueFor: '**Enter Task Name**' @@ -239,6 +246,12 @@ rules: - valueFor: '**Enter Task Name**' contains: 'PublishTest' addLabels: ['Area: Test'] + +# Area: ArtifactsPackages +- valueFor: '**Enter Task Name**' + contains: 'TwineAuthenticate' + addLabels: ['Area: ArtifactsPackages'] + # Types - valueFor: '*Type*' contains: Feature @@ -270,3 +283,20 @@ tags: addLabels: ['triage'] - noneMatch: '\s*Area:\s*([^]*)' addLabels: ['route'] + +pathMappings: +- path: 'AzureDevOps\VSTS\Pipelines\Platform' + labels: ['Area: Core'] +- path: 'AzureDevOps\VSTS\Pipelines\Application' + labels: ['Area: Build'] +- path: 'AzureDevOps\VSTS\Pipelines\Integration' + labels: ['Area: CrossPlatform'] +- path: 'AzureDevOps\VSTS\Artifacts' + labels: ['Area: Artifacts', 'Area: ArtifactsCore', 'Area: ArtifactsPackages', 'Area: PipelineArtifact', 'Area: PipelineCaching', 'Area: Symbols'] +- path: 'AzureDevOps\VSTS\Pipelines\RM-Service' + labels: ['Area: Release', 'Area: AzureAppService'] +- path: 'AzureDevOps\VSTS\Pipelines\Test Management and Reporting' + labels: ['Area: Test', 'Area: TestManagement', 'Area: CodeCoverage'] +# TODO - AppCenter owned by teams in AzureDevOps org - probably nothing to be done, worth thinking about +# - path: +# labels: ['Area: AppCenter'] diff --git a/make-options.json b/make-options.json index b16ce3c13ea1..0b245792b3c7 100644 --- a/make-options.json +++ b/make-options.json @@ -60,6 +60,8 @@ "DeployVisualStudioTestAgentV2", "DockerV0", "DockerV1", + "DockerV2", + "DockerComposeV0", "DockerInstallerV0", "DotNetCoreCLIV2", "DotNetCoreInstallerV0", @@ -143,7 +145,6 @@ "QueryWorkItemsV0", "QuickPerfTestV1", "ReviewAppV0", - "RunDistributedTestsV1", "RunJMeterLoadTestV1", "RunLoadTestV1", "ServiceFabricComposeDeployV0", diff --git a/package-lock.json b/package-lock.json index e17d2171172e..6dd951bf6e1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,35 @@ "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=", "dev": true }, + "azure-devops-node-api": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-9.0.1.tgz", + "integrity": "sha512-0veE4EWHObJxzwgHlydG65BjNMuLPkR1nzcQ2K51PIho1/F4llpKt3pelC30Vbex5zA9iVgQ9YZGlkkvOBSksw==", + "dev": true, + "requires": { + "tunnel": "0.0.4", + "typed-rest-client": "1.2.0", + "underscore": "1.8.3" + }, + "dependencies": { + "typed-rest-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", + "dev": true, + "requires": { + "tunnel": "0.0.4", + "underscore": "1.8.3" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -169,9 +198,9 @@ "dev": true }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "expand-range": { @@ -360,9 +389,9 @@ } }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -677,7 +706,7 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=", "dev": true }, "randomatic": { diff --git a/package.json b/package.json index 990749eb9823..43c5d6c646a7 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,11 @@ "homepage": "https://github.com/Microsoft/azure-pipelines-tasks", "devDependencies": { "adm-zip": "0.4.13", + "azure-devops-node-api": "^9.0.1", + "js-yaml": "^3.13.1", "markdown-toc": "^1.2.0", "minimatch": "3.0.2", - "minimist": "1.1.1", + "minimist": "^1.1.1", "mocha": "2.3.3", "mocha-junit-reporter": "1.17.0", "node-uuid": "1.4.6",