diff --git a/.travis.yml b/.travis.yml index f0c04d0e..54919b37 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,15 +19,19 @@ branches: before_install: - if [ $TRAVIS_OS_NAME == "linux" ]; then - sudo apt-get -y install libxtst-dev; + sudo apt-get -y install libxtst-dev libsecret-1-dev; fi - if [ $TRAVIS_OS_NAME == "osx" ]; then nvm install 12.12; fi - npm install -g vsce +- cd .. +- git clone https://github.com/redhat-developer/quarkus-ls +- cd vscode-quarkus install: - - npm install + - npm i + - npm run build - npm run vscode:prepublish - vsce package diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2dc9a8cb..f3b9ea92 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -252,8 +252,8 @@ This script does two things. `vscode-quarkus/jars/`. In addition to `npm run build`, there are two more build scripts: -`npm run build-server` only builds the Quarkus language server and places the jar in `vscode-quarkus/server/`. -`npm run build-ext` only builds the Quarkus jdt.ls extension and places the jar in `vscode-quarkus/jars/`. +`npm run build-server` only builds the MicroProfile language server and places the jar in `vscode-quarkus/server/`. +`npm run build-ext` only builds the MicroProfile jdt.ls extension and places the jar in `vscode-quarkus/jars/`. ### Running vscode-quarkus **Step 1.** Open `vscode-quarkus/` in VSCode. @@ -294,6 +294,9 @@ When running the UI tests, it would be best to disable all other VS Code extensi so that they don't interfere during the testing. Also, please be sure to not do anything else with your machine. Its very important to not disturb your machine when running the UI tests, or else the test functions will not run properly. +Additionally, please finish the [Setup](#setup) steps before running the UI tests. +The setup is important because the debugging tests require the MicroProfile jdt.ls extension. + **Note for running UI tests of macOS:** Due to an issue for an upstream UI testing library: [nut-tree/nut.js#98 (issue)](https://github.com/nut-tree/nut.js/issues/98#issuecomment-571494625), UI tests on macOS work as long as diff --git a/package-lock.json b/package-lock.json index a73c0d62..390e263f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,9 +24,35 @@ "js-tokens": "^4.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@nut-tree/libnut": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@nut-tree/libnut/-/libnut-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-1.0.2.tgz", "integrity": "sha512-XwwMYVqY4Lo6i45f5gMy3IF5V0njwxIsLqtWbn1s1sKGMAz61zP4xFytgLxSgFQSukSvoQeawtBWq/WlNvtTmQ==", "dev": true, "requires": { @@ -37,7 +63,7 @@ }, "@nut-tree/libnut-darwin": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-1.0.2.tgz", "integrity": "sha512-626xDzjSjD9Ux3K7jMaxJ0kRFqsF/3yfF6JCOvEIn1od7MJdAbUBP0qkRvPdg2J8mPxhLgjAc9EfEX5Kt0loFQ==", "dev": true, "requires": { @@ -48,7 +74,7 @@ }, "@nut-tree/libnut-linux": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-1.0.2.tgz", "integrity": "sha512-9dnEt0n63T0sl+nWn+Ok2ykByeVSaSEwPsiXHMbOkykE6m5pClJ5T3iNIU27/bxr8IC4zL1me/m3NAooa6HkRA==", "dev": true, "requires": { @@ -59,7 +85,7 @@ }, "@nut-tree/libnut-win32": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-1.0.2.tgz", "integrity": "sha512-Dsg0eGqC1WYI3EpbwaNMHW/MHmdTol7RcWDumoO9krQX9J9TKk+V7kh0aauf/NXA7zpDx2WmPvqeSyraUlZcXg==", "dev": true, "requires": { @@ -70,7 +96,7 @@ }, "@nut-tree/nut-js": { "version": "1.3.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@nut-tree/nut-js/-/nut-js-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-1.3.1.tgz", "integrity": "sha512-JvT308xTeygoYK1y7QJiuOqCG77wt/d29MRyCeJC4AkfAK2aaZKiWNyUxX6puLVCCkqJpDOS1zCQIYNIyoCT0w==", "dev": true, "requires": { @@ -81,7 +107,7 @@ "dependencies": { "clipboardy": { "version": "2.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/clipboardy/-/clipboardy-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.0.0.tgz", "integrity": "sha512-XbVjHMsss0giNUkp/tV/3eEAZe8i1fZTLzmPKqjE1RGIAWOTiF5D014f6R+g53ZAq0IK3cPrJXFvqE8eQjhFYQ==", "dev": true, "requires": { @@ -119,6 +145,12 @@ "@types/node": "*" } }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, "@types/fs-extra": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-7.0.0.tgz", @@ -128,18 +160,50 @@ "@types/node": "*" } }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/hjson": { + "version": "2.4.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/hjson/-/hjson-2.4.1.tgz", + "integrity": "sha512-yXq/C73UHM8GQc6RYJnUXUgxudr2Q9227Iawhkp03YCnfJJTc+6LJnnVLx+UR/Dvw6imO5Q3vpGNmR9IRBI0JQ==", + "dev": true + }, "@types/lodash": { "version": "4.14.149", "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", "dev": true }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@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 }, + "@types/ncp": { + "version": "2.0.3", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/ncp/-/ncp-2.0.3.tgz", + "integrity": "sha512-eZatZMWhPHUHY/1hUUqwGrWzBAE9deYR3L0QJMicpVkBUOrQslhWblw5Ye+rKuzvFG/UQ3jDolMcjhC2WKUQ5w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { "version": "10.14.16", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.16.tgz", @@ -168,10 +232,20 @@ "@types/request": "*" } }, + "@types/rimraf": { + "version": "2.0.3", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/rimraf/-/rimraf-2.0.3.tgz", + "integrity": "sha512-dZfyfL/u9l/oi984hEXdmAjX3JHry7TLWw43u1HQ8HhPv6KtfxnrZ3T/bleJ0GEvnk9t5sM7eePkgMqz3yBcGg==", + "dev": true, + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, "@types/selenium-webdriver": { - "version": "3.0.16", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", - "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", "dev": true }, "@types/semver": { @@ -410,6 +484,16 @@ "es6-promisify": "^5.0.0" } }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", @@ -435,13 +519,13 @@ }, "amdefine": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, "ansi": { "version": "0.3.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", "dev": true }, @@ -511,7 +595,7 @@ }, "arch": { "version": "2.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", "dev": true }, @@ -523,7 +607,7 @@ }, "are-we-there-yet": { "version": "1.0.6", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", "dev": true, "requires": { @@ -652,6 +736,12 @@ } } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -780,7 +870,7 @@ }, "azure-devops-node-api": { "version": "7.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-7.2.0.tgz", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-7.2.0.tgz", "integrity": "sha512-pMfGJ6gAQ7LRKTHgiRF+8iaUUeGAI0c8puLaqHLc7B8AR7W6GJLozK9RFeUHFjEGybC9/EB3r67WPd7e46zQ8w==", "dev": true, "requires": { @@ -883,7 +973,7 @@ }, "big-integer": { "version": "1.6.48", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", "dev": true }, @@ -895,7 +985,7 @@ }, "binary": { "version": "0.3.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", "dev": true, "requires": { @@ -928,18 +1018,18 @@ } }, "bl": { - "version": "3.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/bl/-/bl-3.0.0.tgz", - "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.1.tgz", + "integrity": "sha512-FL/TdvchukRCuWVxT0YMO/7+L5TNeNrVFvRU2IY63aUyv9mpt8splf2NEr6qXtPo5fya5a66YohQKvGNmLrWNA==", "dev": true, "requires": { - "readable-stream": "^3.0.1" + "readable-stream": "^3.4.0" }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -962,7 +1052,7 @@ }, "boolbase": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, @@ -1100,7 +1190,7 @@ }, "buffer-alloc": { "version": "1.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, "requires": { @@ -1110,7 +1200,7 @@ }, "buffer-alloc-unsafe": { "version": "1.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", "dev": true }, @@ -1127,7 +1217,7 @@ }, "buffer-fill": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", "dev": true }, @@ -1139,13 +1229,13 @@ }, "buffer-indexof-polyfill": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=", "dev": true }, "buffer-shims": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, @@ -1157,7 +1247,7 @@ }, "buffers": { "version": "0.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", "dev": true }, @@ -1194,6 +1284,17 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "cache-base": { @@ -1256,7 +1357,7 @@ }, "chainsaw": { "version": "0.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", "dev": true, "requires": { @@ -1282,7 +1383,7 @@ }, "cheerio": { "version": "1.0.0-rc.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", "dev": true, "requires": { @@ -1370,14 +1471,29 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "clipboardy": { - "version": "2.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", - "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.2.0.tgz", + "integrity": "sha512-9ry9nC3VFULNmoEIqvuRwCIQ9M7wjnm4O+yvk7xkmhR+7FAUWaeX751oeYJbORg0h0zmqW1EVDoZK8f7yapwbg==", "dev": true, "requires": { "arch": "^2.1.1", - "execa": "^1.0.0" + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true + } } }, "cliui": { @@ -1444,7 +1560,7 @@ }, "clone-deep": { "version": "0.2.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", "dev": true, "requires": { @@ -1457,7 +1573,7 @@ "dependencies": { "for-own": { "version": "0.1.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { @@ -1466,7 +1582,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -1494,7 +1610,7 @@ }, "cmake-js": { "version": "5.3.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/cmake-js/-/cmake-js-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-5.3.2.tgz", "integrity": "sha512-OsRQ3ZgoV3nJ+3bZr9MEvSuhGS7xc3LgmPZ2gCXlLqF5Wxi6mUQNK70dm/2UUf4/QNBssdYWB5Y7BSRX9FFUrg==", "dev": true, "requires": { @@ -1519,19 +1635,19 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "camelcase": { "version": "2.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, "cliui": { "version": "3.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { @@ -1542,7 +1658,7 @@ }, "debug": { "version": "4.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { @@ -1551,7 +1667,7 @@ }, "fs-extra": { "version": "5.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { @@ -1562,13 +1678,13 @@ }, "invert-kv": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { @@ -1577,7 +1693,7 @@ }, "lcid": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { @@ -1586,13 +1702,13 @@ }, "ms": { "version": "2.1.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "os-locale": { "version": "1.4.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -1601,7 +1717,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -1612,7 +1728,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -1621,13 +1737,13 @@ }, "y18n": { "version": "3.2.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, "yargs": { "version": "3.32.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { @@ -1711,9 +1827,9 @@ "dev": true }, "compare-versions": { - "version": "3.5.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", - "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", "dev": true }, "component-emitter": { @@ -1750,7 +1866,7 @@ }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, @@ -1781,6 +1897,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "copy-descriptor": { @@ -1875,7 +2002,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { @@ -1887,7 +2014,7 @@ }, "css-what": { "version": "2.1.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true }, @@ -1944,7 +2071,7 @@ }, "decompress-response": { "version": "4.2.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dev": true, "requires": { @@ -1962,7 +2089,7 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, @@ -2039,6 +2166,30 @@ } } }, + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2046,13 +2197,13 @@ }, "delegates": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, "denodeify": { "version": "1.2.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", "dev": true }, @@ -2074,13 +2225,13 @@ }, "detect-libc": { "version": "1.0.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true }, "didyoumean": { "version": "1.2.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz", "integrity": "sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=", "dev": true }, @@ -2101,9 +2252,26 @@ "randombytes": "^2.0.0" } }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, "dom-serializer": { "version": "0.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { @@ -2119,13 +2287,13 @@ }, "domelementtype": { "version": "1.3.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, "domhandler": { "version": "2.4.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { @@ -2134,7 +2302,7 @@ }, "domutils": { "version": "1.5.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { @@ -2144,7 +2312,7 @@ }, "duplexer2": { "version": "0.1.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { @@ -2236,7 +2404,7 @@ }, "entities": { "version": "1.1.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, @@ -2471,7 +2639,7 @@ }, "expand-template": { "version": "2.0.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true }, @@ -2607,11 +2775,94 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, + "fastq": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz", + "integrity": "sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -2812,7 +3063,7 @@ }, "fs-constants": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, @@ -2828,7 +3079,7 @@ }, "fs-minipass": { "version": "1.2.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dev": true, "requires": { @@ -3422,7 +3673,7 @@ }, "fstream": { "version": "1.0.12", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "requires": { @@ -3430,6 +3681,17 @@ "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "function-bind": { @@ -3440,7 +3702,7 @@ }, "gauge": { "version": "1.2.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", "dev": true, "requires": { @@ -3488,7 +3750,7 @@ }, "github-from-package": { "version": "0.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", "dev": true }, @@ -3588,6 +3850,22 @@ "which": "^1.2.14" } }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, "glogg": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", @@ -3604,7 +3882,7 @@ }, "graceful-readlink": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, @@ -3833,7 +4111,7 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, @@ -3895,6 +4173,12 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hjson": { + "version": "3.2.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/hjson/-/hjson-3.2.1.tgz", + "integrity": "sha512-OhhrFMeC7dVuA1xvxuXGTv/yTdhTvbe8hz+3LgVNsfi9+vgz0sF/RrkuX8eegpKaMc9cwYwydImBH6iePoJtdQ==", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3923,7 +4207,7 @@ }, "htmlparser2": { "version": "3.10.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { @@ -3936,9 +4220,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -3996,9 +4280,15 @@ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, "immediate": { "version": "3.0.6", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, @@ -4018,6 +4308,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -4193,7 +4489,7 @@ }, "is-iojs": { "version": "1.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=", "dev": true }, @@ -4223,6 +4519,18 @@ } } }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4412,7 +4720,7 @@ }, "jszip": { "version": "3.2.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", "dev": true, "requires": { @@ -4446,7 +4754,7 @@ }, "lazy-cache": { "version": "1.0.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, @@ -4479,7 +4787,7 @@ }, "lie": { "version": "3.3.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "requires": { @@ -4518,7 +4826,7 @@ }, "linkify-it": { "version": "2.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", "dev": true, "requires": { @@ -4527,7 +4835,7 @@ }, "listenercount": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", "dev": true }, @@ -4590,19 +4898,19 @@ }, "lodash.pad": { "version": "4.5.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", "dev": true }, "lodash.padend": { "version": "4.6.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", "dev": true }, "lodash.padstart": { "version": "4.6.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", "dev": true }, @@ -4675,7 +4983,7 @@ }, "markdown-it": { "version": "8.4.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", "dev": true, "requires": { @@ -4711,7 +5019,7 @@ }, "mdurl": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", "dev": true }, @@ -4738,7 +5046,7 @@ }, "memory-stream": { "version": "0.0.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", "dev": true, "requires": { @@ -4747,13 +5055,13 @@ "dependencies": { "isarray": { "version": "0.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "readable-stream": { "version": "1.0.34", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -4765,7 +5073,7 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } @@ -4773,7 +5081,7 @@ }, "merge-deep": { "version": "3.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", "dev": true, "requires": { @@ -4784,7 +5092,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -4793,6 +5101,12 @@ } } }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4826,7 +5140,7 @@ }, "mime": { "version": "1.6.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, @@ -4850,9 +5164,9 @@ "dev": true }, "mimic-response": { - "version": "2.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", - "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "dev": true }, "minimalistic-assert": { @@ -4883,7 +5197,7 @@ }, "minipass": { "version": "2.9.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dev": true, "requires": { @@ -4893,7 +5207,7 @@ }, "minizlib": { "version": "1.3.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dev": true, "requires": { @@ -4941,7 +5255,7 @@ }, "mixin-object": { "version": "2.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, "requires": { @@ -4951,7 +5265,7 @@ "dependencies": { "for-in": { "version": "0.1.8", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", "dev": true } @@ -5187,6 +5501,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "ms": { @@ -5203,7 +5528,7 @@ }, "mute-stream": { "version": "0.0.8", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, @@ -5233,20 +5558,26 @@ } }, "napi-build-utils": { - "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", - "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "dev": true }, "native-node-utils": { "version": "0.2.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/native-node-utils/-/native-node-utils-0.2.7.tgz", + "resolved": "https://registry.npmjs.org/native-node-utils/-/native-node-utils-0.2.7.tgz", "integrity": "sha512-61v0G3uVxWlXHppSZGwZi+ZEIgGUKI8QvEkEJLb1GVePI7P8SBe+G747z+QMXSt4TxfgbVZP0DyobbRKYVIjdw==", "dev": true, "requires": { "nan": "^2.13.2" } }, + "ncp": { + "version": "2.0.0", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -5266,9 +5597,9 @@ "dev": true }, "node-abi": { - "version": "2.13.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/node-abi/-/node-abi-2.13.0.tgz", - "integrity": "sha512-9HrZGFVTR5SOu3PZAnAY2hLO36aW1wmA+FDsVkr85BTST32TLCA1H/AEcatVRAsWLyXS3bqUDYCAjq5/QGuSTA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.15.0.tgz", + "integrity": "sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg==", "dev": true, "requires": { "semver": "^5.4.1" @@ -5276,7 +5607,7 @@ }, "node-addon-api": { "version": "1.7.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", "dev": true }, @@ -5292,7 +5623,7 @@ }, "node-key-sender": { "version": "1.0.11", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/node-key-sender/-/node-key-sender-1.0.11.tgz", + "resolved": "https://registry.npmjs.org/node-key-sender/-/node-key-sender-1.0.11.tgz", "integrity": "sha512-vv2IXd8QdZBFYXaIy02uy2rK6EKj+tOTEuoTxJKS9l8zw8Cz6DeLffR8ompj7N2A3h6XK7aiy+YAcTaeOqwp2Q==", "dev": true }, @@ -5337,7 +5668,7 @@ }, "noop-logger": { "version": "0.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", "dev": true }, @@ -5382,7 +5713,7 @@ }, "npmlog": { "version": "1.2.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", "dev": true, "requires": { @@ -5393,7 +5724,7 @@ }, "nth-check": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, "requires": { @@ -5542,7 +5873,7 @@ }, "opencv4nodejs-prebuilt": { "version": "5.3.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/opencv4nodejs-prebuilt/-/opencv4nodejs-prebuilt-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/opencv4nodejs-prebuilt/-/opencv4nodejs-prebuilt-5.3.0.tgz", "integrity": "sha512-bdnSv+q1ng1oZAZZhLNsc7kNrYcS3abrna66nuwMu8ybodd0mQsb0EQJvXfrZz0VWmgyKb1Wo7/V2TUCl6tD1g==", "dev": true, "requires": { @@ -5555,13 +5886,13 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "requires": { @@ -5571,7 +5902,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { @@ -5587,7 +5918,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { @@ -5596,7 +5927,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { @@ -5608,7 +5939,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -5619,7 +5950,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -5639,7 +5970,7 @@ }, "os": { "version": "0.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/os/-/os-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=", "dev": true }, @@ -5651,7 +5982,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -5668,13 +5999,13 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "osenv": { "version": "0.1.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { @@ -5716,6 +6047,15 @@ "p-limit": "^2.2.0" } }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5786,7 +6126,7 @@ }, "parse-semver": { "version": "1.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", "dev": true, "requires": { @@ -5795,7 +6135,7 @@ }, "parse5": { "version": "3.0.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { @@ -6003,7 +6343,7 @@ }, "prebuild-install": { "version": "5.3.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", "dev": true, "requires": { @@ -6026,13 +6366,13 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "requires": { @@ -6042,7 +6382,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { @@ -6058,7 +6398,7 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { @@ -6067,13 +6407,13 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "npmlog": { "version": "4.1.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { @@ -6085,7 +6425,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -6096,7 +6436,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -6230,7 +6570,7 @@ }, "rc": { "version": "1.2.8", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { @@ -6242,7 +6582,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -6250,7 +6590,7 @@ }, "read": { "version": "1.0.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/read/-/read-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "dev": true, "requires": { @@ -6536,10 +6876,16 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -6557,10 +6903,16 @@ }, "rsvp": { "version": "3.6.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", "dev": true }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -6608,7 +6960,7 @@ }, "selenium-webdriver": { "version": "3.6.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "requires": { @@ -6616,6 +6968,17 @@ "rimraf": "^2.5.4", "tmp": "0.0.30", "xml2js": "^0.4.17" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "semver": { @@ -6646,7 +7009,7 @@ }, "set-immediate-shim": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, @@ -6691,7 +7054,7 @@ }, "shallow-clone": { "version": "0.1.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", "dev": true, "requires": { @@ -6703,7 +7066,7 @@ "dependencies": { "kind-of": { "version": "2.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "dev": true, "requires": { @@ -6712,7 +7075,7 @@ }, "lazy-cache": { "version": "0.2.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", "dev": true } @@ -6747,13 +7110,13 @@ }, "simple-concat": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", "dev": true }, "simple-get": { "version": "3.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", "dev": true, "requires": { @@ -6762,6 +7125,12 @@ "simple-concat": "^1.0.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6974,7 +7343,7 @@ }, "splitargs": { "version": "0.0.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs=", "dev": true }, @@ -7182,7 +7551,7 @@ }, "tar": { "version": "4.4.13", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "dev": true, "requires": { @@ -7197,7 +7566,7 @@ }, "tar-fs": { "version": "2.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", "dev": true, "requires": { @@ -7208,12 +7577,12 @@ } }, "tar-stream": { - "version": "2.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", - "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.1.tgz", + "integrity": "sha512-GZjLk64XcE/58qwIc1ZfXGqTSE4OutPMEkfBE/oh9eJ4x1eMRjYkgrLrav7PzddpvIpSJSGi8FgNNYXdB9Vumg==", "dev": true, "requires": { - "bl": "^3.0.0", + "bl": "^4.0.1", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -7221,9 +7590,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -7235,7 +7604,7 @@ }, "targz": { "version": "1.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/targz/-/targz-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz", "integrity": "sha1-j3alI2lM3t+7XWCkB2/27uzFOY8=", "dev": true, "requires": { @@ -7244,7 +7613,7 @@ "dependencies": { "bl": { "version": "1.2.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { @@ -7254,7 +7623,7 @@ }, "pump": { "version": "1.0.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "dev": true, "requires": { @@ -7264,7 +7633,7 @@ }, "tar-fs": { "version": "1.16.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", "dev": true, "requires": { @@ -7276,7 +7645,7 @@ }, "tar-stream": { "version": "1.6.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "dev": true, "requires": { @@ -7368,7 +7737,7 @@ }, "tmp": { "version": "0.0.30", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", "dev": true, "requires": { @@ -7393,7 +7762,7 @@ }, "to-buffer": { "version": "1.1.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", "dev": true }, @@ -7466,7 +7835,7 @@ }, "traceur": { "version": "0.0.111", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/traceur/-/traceur-0.0.111.tgz", + "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.111.tgz", "integrity": "sha1-wE3nTRRpbDNzQn3k/Ajsr5E/w6E=", "dev": true, "requires": { @@ -7479,7 +7848,7 @@ "dependencies": { "commander": { "version": "2.9.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { @@ -7488,7 +7857,7 @@ }, "glob": { "version": "5.0.15", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { @@ -7501,13 +7870,13 @@ }, "semver": { "version": "4.3.6", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, "source-map": { "version": "0.1.32", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", "dev": true, "requires": { @@ -7516,7 +7885,7 @@ }, "source-map-support": { "version": "0.2.10", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", "dev": true, "requires": { @@ -7527,13 +7896,13 @@ }, "traverse": { "version": "0.3.9", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", "dev": true }, "ts-essentials": { "version": "3.0.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/ts-essentials/-/ts-essentials-3.0.5.tgz", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-3.0.5.tgz", "integrity": "sha512-2aZyDplUuZ44ABrP9Z8kWzgrCLgntyro+WZMXgJOp5Lhx7e/N3eIDeDQUOHNUKDVyGrGtlOYy1WMkOrZBqLiUA==", "dev": true }, @@ -7653,7 +8022,7 @@ }, "tunnel": { "version": "0.0.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", "dev": true }, @@ -7684,7 +8053,7 @@ }, "typed-rest-client": { "version": "1.2.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", "dev": true, "requires": { @@ -7717,7 +8086,7 @@ }, "uc.micro": { "version": "1.0.6", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, @@ -7729,7 +8098,7 @@ }, "underscore": { "version": "1.8.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", "dev": true }, @@ -7843,7 +8212,7 @@ }, "unzip-stream": { "version": "0.3.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.0.tgz", "integrity": "sha512-NG1h/MdGIX3HzyqMjyj1laBCmlPYhcO4xEy7gEqqzGiSLw7XqDQCnY4nYSn5XSaH8mQ6TFkaujrO8d/PIZN85A==", "dev": true, "requires": { @@ -7853,7 +8222,7 @@ }, "unzipper": { "version": "0.8.14", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", "dev": true, "requires": { @@ -7870,19 +8239,19 @@ "dependencies": { "bluebird": { "version": "3.4.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", "dev": true }, "process-nextick-args": { "version": "1.0.7", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "readable-stream": { "version": "2.1.5", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", "dev": true, "requires": { @@ -7897,7 +8266,7 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } @@ -7943,7 +8312,7 @@ }, "url-join": { "version": "0.0.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=", "dev": true }, @@ -8078,9 +8447,9 @@ } }, "vsce": { - "version": "1.73.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/vsce/-/vsce-1.73.0.tgz", - "integrity": "sha512-6W37Ebbkj3uF3WhT+SCfRtsneRQEFcGvf/XYz+b6OAgDCj4gPurWyDVrqw/HLsbP1WflGIyUfVZ8t5M7kQp6Uw==", + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.74.0.tgz", + "integrity": "sha512-8zWM9bZBNn9my40kkxAxdY4nhb9ADfazXsyDgx1thbRaLPbmPTlmqQ55vCAyWYFEi6XbJv8w599vzVUqsU1gHg==", "dev": true, "requires": { "azure-devops-node-api": "^7.2.0", @@ -8090,7 +8459,7 @@ "denodeify": "^1.2.1", "didyoumean": "^1.2.1", "glob": "^7.0.6", - "lodash": "^4.17.10", + "lodash": "^4.17.15", "markdown-it": "^8.3.1", "mime": "^1.3.4", "minimatch": "^3.0.3", @@ -8107,7 +8476,7 @@ "dependencies": { "tmp": { "version": "0.0.29", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", "dev": true, "requires": { @@ -8116,16 +8485,16 @@ }, "url-join": { "version": "1.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=", "dev": true } } }, "vscode-extension-tester": { - "version": "2.3.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-2.3.0.tgz", - "integrity": "sha512-4IAT1jDL9CJmJtXfdW9KDD8Zwiav8mGbUOy2lAMCaGaehgwYpSXw75HxfvVB6ugSQaB8Qm1OtewMxJCLQyPVcg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-2.4.0.tgz", + "integrity": "sha512-tRgE5eJ9hj83Y2RFkvNsUne1lIIgiL6hCCCJxSEm4b/O0UIEJ/+gsmEXalykPAzum9ScQ4BUA/bSAI9zdIyptg==", "dev": true, "requires": { "@nut-tree/nut-js": "^1.3.1", @@ -8148,13 +8517,13 @@ "dependencies": { "commander": { "version": "3.0.2", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, "fs-extra": { "version": "8.1.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { @@ -8165,7 +8534,7 @@ }, "glob": { "version": "7.1.6", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { @@ -8179,7 +8548,7 @@ }, "graceful-fs": { "version": "4.2.3", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true } @@ -8232,6 +8601,17 @@ "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.4", "rimraf": "^2.6.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "vscode-uri": { @@ -8372,7 +8752,7 @@ }, "which-pm-runs": { "version": "1.0.0", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, @@ -8387,7 +8767,7 @@ }, "window-size": { "version": "0.1.4", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", "dev": true }, @@ -8746,7 +9126,7 @@ }, "yazl": { "version": "2.5.1", - "resolved": "https://repository.engineering.redhat.com/nexus/repository/registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", "dev": true, "requires": { diff --git a/package.json b/package.json index 7588c22d..b29712e1 100644 --- a/package.json +++ b/package.json @@ -342,33 +342,40 @@ "build-server": "./node_modules/.bin/gulp buildServer", "build-ext": "./node_modules/.bin/gulp buildExtension", "test-ui": "npm run test-compile && npm run test-ui-run", - "test-ui-run": "extest setup-and-run 'out/test/vscodeUiTest/suite/*.js' -u", + "test-ui-run": "extest setup-and-run 'out/test/vscodeUiTest/suite/**/tests/*Test.js' -u -o src/test/vscodeUiTest/settings.json -c 1.42.1", "test-all": "npm test && npm run test-ui-run" }, "devDependencies": { "@types/chai": "^4.2.3", "@types/chai-fs": "^2.0.2", "@types/fs-extra": "^7.0.0", + "@types/hjson": "^2.4.1", "@types/lodash": "^4.14.149", "@types/mocha": "^5.2.6", + "@types/ncp": "^2.0.3", "@types/node": "^10.14.16", "@types/request": "^2.48.3", "@types/request-promise": "^4.1.44", + "@types/rimraf": "^2.0.3", "@types/semver": "^6.2.0", "@types/vscode": "^1.37.0", "@types/yauzl": "^2.9.1", "chai": "^4.2.0", "chai-fs": "^2.0.0", + "del": "^5.1.0", "gradle-to-js": "^2.0.0", "gulp": "^4.0.2", "gulp-rename": "^1.4.0", + "hjson": "^3.2.1", "mocha": "^6.2.1", + "ncp": "^2.0.0", "pom-parser": "^1.2.0", + "rimraf": "^3.0.2", "ts-loader": "^6.0.1", "tslint": "^5.20.1", "typescript": "^3.7.2", "typescript-tslint-plugin": "^0.3.1", - "vscode-extension-tester": "^2.3.0", + "vscode-extension-tester": "^2.4.0", "vscode-test": "^1.2.3", "webpack": "^4.32.2", "webpack-cli": "^3.3.2" diff --git a/src/test/vscodeUiTest/index.ts b/src/test/vscodeUiTest/index.ts index 4174dfd0..35e58d9e 100644 --- a/src/test/vscodeUiTest/index.ts +++ b/src/test/vscodeUiTest/index.ts @@ -15,5 +15,9 @@ */ import { ExTester } from 'vscode-extension-tester'; -const tester: ExTester = new ExTester(); -tester.setupAndRunTests(undefined, undefined, 'out/test/vscodeUiTest/suite/*.js'); +async function runTests() { + const tester: ExTester = new ExTester(); + await tester.setupAndRunTests('1.42.1', undefined, 'out/test/vscodeUiTest/suite/**/tests/multiProjectMultiWorkspaceTest.js', 'src/test/vscodeUiTest/settings.json'); +} + +runTests(); \ No newline at end of file diff --git a/src/test/vscodeUiTest/log.ts b/src/test/vscodeUiTest/log.ts new file mode 100644 index 00000000..831509ee --- /dev/null +++ b/src/test/vscodeUiTest/log.ts @@ -0,0 +1,4 @@ +const LOG_PROGRESS: boolean = false; +export function log(str: string) { + if (LOG_PROGRESS) console.log(str); +} \ No newline at end of file diff --git a/src/test/vscodeUiTest/settings.json b/src/test/vscodeUiTest/settings.json new file mode 100644 index 00000000..ff9586f4 --- /dev/null +++ b/src/test/vscodeUiTest/settings.json @@ -0,0 +1,3 @@ +{ + "debug.onTaskErrors": "showErrors" +} \ No newline at end of file diff --git a/src/test/vscodeUiTest/suite/debuggingTests/debugProjectInfo.ts b/src/test/vscodeUiTest/suite/debuggingTests/debugProjectInfo.ts new file mode 100644 index 00000000..dde26167 --- /dev/null +++ b/src/test/vscodeUiTest/suite/debuggingTests/debugProjectInfo.ts @@ -0,0 +1,131 @@ +/** + * Copyright 2020 Red Hat, Inc. and others. + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class BuildSupportInfo { + private executable: string; + private wrapper: string; + private windowsWrapper: string; + private quarkusDev: string; + private commandParam: string | undefined; + constructor( + executable: string, + wrapper: string, + windowsWrapper: string, + quarkusDev: string, + commandParam?: string + ) { + this.executable = executable; + this.wrapper = wrapper; + this.windowsWrapper = windowsWrapper; + this.quarkusDev = quarkusDev; + this.commandParam = commandParam; + } + + public getExecutable(): string { + return this.executable; + } + + public getWrapper(): string { + return this.wrapper; + } + + public getWindowsWrapper(): string { + return this.windowsWrapper; + } + + public getQuarkusDev(): string { + return this.quarkusDev; + } + + public getCommand(options: { useWrapper: boolean }): string { + return this.addParamsIfNeeded( + `${options.useWrapper ? this.wrapper : this.executable} ${ + this.quarkusDev + } ` + ); + } + + public getWindowsCommand(options: { useWrapper: boolean }): string { + return this.addParamsIfNeeded( + `${options.useWrapper ? this.windowsWrapper : this.executable} ${ + this.quarkusDev + } ` + ); + } + + private addParamsIfNeeded(command: string): string { + return command + (this.commandParam ? this.commandParam : ""); + } +} + +export interface ProjectInfo { + projectName: string; + parentFolderName: string; + resourceClass: string; + message: string; + port: number; + buildSupport: BuildSupportInfo; +} + +export const MAVEN: BuildSupportInfo = new BuildSupportInfo( + "mvn", + "./mvnw", + ".\\mvnw.cmd", + "quarkus:dev" +); +export const GRADLE: BuildSupportInfo = new BuildSupportInfo( + "gradle", + "./gradlew", + ".\\gradlew.bat", + "quarkusDev", + "--console=plain" +); + +export const QUARKUS_MAVEN_1: ProjectInfo = { + projectName: "quarkus-maven-1", + parentFolderName: "maven-projects", + resourceClass: "QuarkusMaven1.java", + message: "hello from QuarkusMaven1", + port: 8080, + buildSupport: MAVEN +}; + +export const QUARKUS_MAVEN_2: ProjectInfo = { + projectName: "quarkus-maven-2", + parentFolderName: "maven-projects", + resourceClass: "QuarkusMaven2.java", + message: "hello from QuarkusMaven2", + port: 9090, + buildSupport: MAVEN +}; + +export const QUARKUS_GRADLE_1: ProjectInfo = { + projectName: "quarkus-gradle-1", + parentFolderName: "gradle-projects", + resourceClass: "QuarkusGradle1.java", + message: "hello from QuarkusGradle1", + port: 8080, + buildSupport: GRADLE +}; + +export const QUARKUS_GRADLE_2: ProjectInfo = { + projectName: "quarkus-gradle-2", + parentFolderName: "gradle-projects", + resourceClass: "QuarkusGradle2.java", + message: "hello from QuarkusGradle2", + port: 9090, + buildSupport: GRADLE +}; diff --git a/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectMultiWorkspaceTest.ts b/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectMultiWorkspaceTest.ts new file mode 100644 index 00000000..2d2842d1 --- /dev/null +++ b/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectMultiWorkspaceTest.ts @@ -0,0 +1,146 @@ +/** + * Copyright 2020 Red Hat, Inc. and others. + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as del from 'del'; +import * as fs from 'fs-extra'; +import * as path from 'path'; +import { DialogHandler, OpenDialog, VSBrowser, WebDriver, Workbench } from 'vscode-extension-tester'; +import { ProjectInfo, QUARKUS_GRADLE_1, QUARKUS_GRADLE_2, QUARKUS_MAVEN_1, QUARKUS_MAVEN_2 } from '../debugProjectInfo'; +import { addFolder, assertDebugProjectWhenNoEditorsOpen, assertLaunchJson, assertTasksJson, copyToTempDir, LaunchConfigInfo, TaskInfo, TEST_PROJECTS_DIR, waitForQuarkusWelcomePage, WorkspaceInfo } from '../utils'; + +describe('Debug multiple project multiple workspace tests', function () { + this.bail(true); + this.retries(3); + + let driver: WebDriver; + const tempDir: string = path.join(__dirname, 'temp'); + + before(() => { + driver = VSBrowser.instance.driver; + }); + + beforeEach(async function() { + this.timeout(10000); + await new Promise((res) => setTimeout(res, 3000)); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + fs.mkdirSync(tempDir); + }); + + after(async function() { + this.timeout(10000); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + }); + + afterEach(async function() { + this.timeout(10000); + await VSBrowser.instance.waitForWorkbench(); + await (new Workbench()).executeCommand('Clear Editor History'); + await (new Workbench()).executeCommand('Close Workspace'); + }); + + it('should debug Quarkus Maven projects in separate workspace folders', async function () { + this.timeout(300000); + await assertDebuggingTwoProjects(QUARKUS_MAVEN_1, QUARKUS_MAVEN_2); + }); + + it('should debug Quarkus Gradle projects in separate workspace folders', async function () { + this.timeout(300000); + await assertDebuggingTwoProjects(QUARKUS_GRADLE_1, QUARKUS_GRADLE_2); + }); + + async function setupWorkspace(project1: ProjectInfo, project2: ProjectInfo): Promise { + const project1Dir: string = path.join(TEST_PROJECTS_DIR, project1.parentFolderName, project1.projectName); + const project2Dir: string = path.join(TEST_PROJECTS_DIR, project2.parentFolderName, project2.projectName); + const workspaceDir: string = path.join(TEST_PROJECTS_DIR, 'empty.code-workspace'); + const tempProject1Dir: string = await copyToTempDir(project1Dir, tempDir); + const tempProject2Dir: string = await copyToTempDir(project2Dir, tempDir); + const tempWorkspace: string = await copyToTempDir(workspaceDir, tempDir); + await new Workbench().executeCommand('Workspaces: Open Workspace...'); + const dialog: OpenDialog = await DialogHandler.getOpenDialog(); + await dialog.selectPath(tempWorkspace); + await dialog.confirm(); + await addFolder(path.join(tempProject1Dir)); + await addFolder(path.join(tempProject2Dir)); + return { + workspaceFolders: [tempProject1Dir, tempProject2Dir] + }; + } + + async function assertDebuggingTwoProjects( + project1: ProjectInfo, + project2: ProjectInfo + ) { + const workspace: WorkspaceInfo = await setupWorkspace(project1, project2); + await waitForQuarkusWelcomePage(driver); + await new Workbench().executeCommand("View: Close All Editors"); // close welcome pages + await assertDebugProjectWhenNoEditorsOpen(driver, project1, {endPrematurely: false}); + // await assertDebugProjectWhenProjectFileOpen(driver, project1, {endPrematurely: true}); + await assertDebugProjectWhenNoEditorsOpen(driver, project2, {endPrematurely: false}); + // await assertDebugProjectWhenProjectFileOpen(driver, project2, {endPrematurely: true}); + + assertTasksJson(workspace.workspaceFolders[0], [ + expectedTask(project1, true) + ]); + assertTasksJson(workspace.workspaceFolders[1], [ + expectedTask(project2, true) + ]); + assertLaunchJson(workspace.workspaceFolders[0], [ + expectedLaunchConfig(project1) + ]); + assertLaunchJson(workspace.workspaceFolders[1], [ + expectedLaunchConfig(project1) + ]); + + // deleteLaunchAndTasksJson(workspace.workspaceFolders[0]); + // deleteLaunchAndTasksJson(workspace.workspaceFolders[1]); + // removeWrapperFiles(workspace.workspaceFolders[0], project1); + // removeWrapperFiles(workspace.workspaceFolders[1], project2); + + // await assertDebugProjectWhenNoEditorsOpen(driver, project1, {endPrematurely: true}); + // await assertDebugProjectWhenNoEditorsOpen(driver, project2, {endPrematurely: true}); + + // assertTasksJson(workspace.workspaceFolders[0], [ + // expectedTask(project1, false) + // ]); + // assertTasksJson(workspace.workspaceFolders[1], [ + // expectedTask(project2, false) + // ]); + // assertLaunchJson(workspace.workspaceFolders[0], [ + // expectedLaunchConfig(project1) + // ]); + // assertLaunchJson(workspace.workspaceFolders[1], [ + // expectedLaunchConfig(project2) + // ]); + } + + function expectedTask(project: ProjectInfo, useWrapper: boolean): TaskInfo { + return { + label: project.buildSupport.getQuarkusDev(), + command: project.buildSupport.getCommand({ useWrapper }), + windowsCommand: project.buildSupport.getWindowsCommand({ useWrapper }) + }; + } + + function expectedLaunchConfig(project: ProjectInfo): LaunchConfigInfo { + return { + preLaunchTask: `${project.buildSupport.getQuarkusDev()}`, + name: 'Debug Quarkus application' + }; + } +}); \ No newline at end of file diff --git a/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectOneWorkspaceTest.ts b/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectOneWorkspaceTest.ts new file mode 100644 index 00000000..9c0ccc6a --- /dev/null +++ b/src/test/vscodeUiTest/suite/debuggingTests/tests/multiProjectOneWorkspaceTest.ts @@ -0,0 +1,137 @@ +/** + * Copyright 2020 Red Hat, Inc. and others. + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as del from 'del'; +import * as fs from 'fs-extra'; +import * as path from 'path'; +import { DialogHandler, OpenDialog, VSBrowser, WebDriver, Workbench } from 'vscode-extension-tester'; +import { ProjectInfo, QUARKUS_GRADLE_1, QUARKUS_GRADLE_2, QUARKUS_MAVEN_1, QUARKUS_MAVEN_2 } from '../debugProjectInfo'; +import { assertDebugProjectWhenNoEditorsOpen, assertLaunchJson, assertTasksJson, copyToTempDir, LaunchConfigInfo, openFileEditor, openFolder, TaskInfo, TEST_PROJECTS_DIR, waitForQuarkusWelcomePage, WorkspaceInfo } from '../utils'; + +describe('Debug multiple project one workspace tests', function () { + this.bail(true); + this.retries(3); + + let driver: WebDriver; + const tempDir: string = path.join(__dirname, 'temp'); + + before(() => { + driver = VSBrowser.instance.driver; + }); + + beforeEach(async function() { + this.timeout(10000); + await new Promise((res) => setTimeout(res, 3000)); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + fs.mkdirSync(tempDir); + }); + + after(async function() { + this.timeout(10000); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + }); + + afterEach(async function () { + this.timeout(10000); + await VSBrowser.instance.waitForWorkbench(); + await (new Workbench()).executeCommand('Clear Editor History'); + await (new Workbench()).executeCommand('Close Workspace'); + }); + + it('should debug Quarkus Maven projects under one workspace folder', async function () { + this.timeout(300000); + await assertDebuggingMultipleProjects(QUARKUS_MAVEN_1, QUARKUS_MAVEN_2); + }); + + it('should debug Quarkus Gradle projects under one workspace folder', async function () { + this.timeout(300000); + await assertDebuggingMultipleProjects(QUARKUS_GRADLE_1, QUARKUS_GRADLE_2); + }); + + async function setupWorkspace(projectDir: string): Promise { + const parentFolderDir: string = path.join(TEST_PROJECTS_DIR, projectDir); + const workspaceDir: string = path.join(TEST_PROJECTS_DIR, 'empty.code-workspace'); + const tempParentDir: string = await copyToTempDir(parentFolderDir, tempDir); + const tempWorkspace: string = await copyToTempDir(workspaceDir, tempDir); + await new Workbench().executeCommand('Workspaces: Open Workspace...'); + const dialog: OpenDialog = await DialogHandler.getOpenDialog(); + await dialog.selectPath(tempWorkspace); + await dialog.confirm(); + await openFolder(tempParentDir); + return { + workspaceFolders: [tempParentDir] + }; + } + + async function assertDebuggingMultipleProjects( + project1: ProjectInfo, + project2: ProjectInfo + ) { + const workspace: WorkspaceInfo = await setupWorkspace( + project1.parentFolderName + ); + await openFileEditor(project1.resourceClass); // open Java file to trigger vscode-java welcome page + await waitForQuarkusWelcomePage(driver); + await new Workbench().executeCommand("View: Close All Editors"); // close welcome pages + await assertDebugProjectWhenNoEditorsOpen(driver, project1, {endPrematurely: false}); + // await assertDebugProjectWhenProjectFileOpen(driver, project1, {endPrematurely: true}); + await assertDebugProjectWhenNoEditorsOpen(driver, project2, {endPrematurely: false}); + // await assertDebugProjectWhenProjectFileOpen(driver, project2, {endPrematurely: true}); + + const parentDir: string = workspace.workspaceFolders[0]; + assertTasksJson(parentDir, [ + expectedTask(project1, true), + expectedTask(project2, true) + ]); + assertLaunchJson(parentDir, [ + expectedLaunchConfig(project1), + expectedLaunchConfig(project2) + ]); + + // deleteLaunchAndTasksJson(parentDir); + // removeWrapperFiles(path.join(parentDir, project1.projectName), project1); + // removeWrapperFiles(path.join(parentDir, project2.projectName), project2); + + // await assertDebugProjectWhenNoEditorsOpen(driver, project1, {endPrematurely: true}); + // await assertDebugProjectWhenNoEditorsOpen(driver, project2, {endPrematurely: true}); + + // assertTasksJson(parentDir, [ + // expectedTask(project1, false), + // expectedTask(project2, false) + // ]); + // assertLaunchJson(parentDir, [ + // expectedLaunchConfig(project1), + // expectedLaunchConfig(project2) + // ]); + } + + function expectedTask(project: ProjectInfo, useWrapper: boolean): TaskInfo { + return { label: `${project.buildSupport.getQuarkusDev()} (${project.projectName})`, + command: project.buildSupport.getCommand({useWrapper}), + windowsCommand: project.buildSupport.getWindowsCommand({useWrapper}) + }; + } + + function expectedLaunchConfig(project: ProjectInfo): LaunchConfigInfo { + return { + preLaunchTask: `${project.buildSupport.getQuarkusDev()} (${project.projectName})`, + name: `Debug Quarkus application (${project.projectName})` + }; + } +}); \ No newline at end of file diff --git a/src/test/vscodeUiTest/suite/debuggingTests/tests/singleProjectTest.ts b/src/test/vscodeUiTest/suite/debuggingTests/tests/singleProjectTest.ts new file mode 100644 index 00000000..82e87980 --- /dev/null +++ b/src/test/vscodeUiTest/suite/debuggingTests/tests/singleProjectTest.ts @@ -0,0 +1,156 @@ +/** + * Copyright 2020 Red Hat, Inc. and others. + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { expect } from 'chai'; +import * as del from 'del'; +import * as fs from 'fs-extra'; +import * as os from 'os'; +import * as path from 'path'; +import { By, DialogHandler, OpenDialog, VSBrowser, WebDriver, Workbench } from 'vscode-extension-tester'; +import { log } from '../../../log'; +import { ProjectInfo, QUARKUS_GRADLE_1, QUARKUS_MAVEN_1 } from '../debugProjectInfo'; +import { assertInDebugSession, assertLaunchJson, assertTasksJson, copyToTempDir, deleteLaunchAndTasksJson, endDebugSession, endDebugSessionPrematurely, removeWrapperFiles, TEST_PROJECTS_DIR, waitForQuarkusWelcomePage, WorkspaceInfo } from '../utils'; + +describe('Single Project Tests', function () { + this.bail(true); + this.retries(3); + + let driver: WebDriver; + const tempDir: string = path.join(__dirname, 'temp'); + + before(() => { + driver = VSBrowser.instance.driver; + }); + + beforeEach(async function () { + this.timeout(10000); + await new Promise((res) => setTimeout(res, 3000)); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + fs.mkdirSync(tempDir); + }); + + after(async function() { + this.timeout(5000); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + }); + + afterEach(async function () { + this.timeout(5000); + await VSBrowser.instance.waitForWorkbench(); + await (new Workbench()).executeCommand('Close Workspace'); + }); + + it('should debug Quarkus Maven project', async function () { + this.timeout(300000); + await assertDebuggingSingleProject(QUARKUS_MAVEN_1); + }); + + it('should debug Quarkus Gradle project', async function () { + this.timeout(300000); + await assertDebuggingSingleProject(QUARKUS_GRADLE_1); + }); + + async function setupWorkspace(project: ProjectInfo): Promise { + const projectsDir: string = path.join(TEST_PROJECTS_DIR, project.parentFolderName, project.projectName); + const tempProjectDir: string = await copyToTempDir(projectsDir, tempDir); + await openFolder(tempProjectDir); + return { + workspaceFolders: [tempProjectDir] + }; + } + + async function assertDebuggingSingleProject(project: ProjectInfo) { + const projectDir: string = (await setupWorkspace(project)).workspaceFolders[0]; + log('Finished setting up workspace'); + await waitForQuarkusWelcomePage(driver); + log('Finished waiting for Quarkus Welcome page'); + const len = await driver.findElements(By.linkText('Quarkus Tools for Visual Studio Code')); + log(`len: ${len.length}`); + if (len.length !== 2) expect.fail(); + await new Workbench().executeCommand('Quarkus: Debug current Quarkus project'); + log('Finished executing debug command'); + await assertInDebugSession(driver, project); + log('Finished entering debug session'); + assertTasksJson(projectDir, + [{ + label: project.buildSupport.getQuarkusDev(), + command: project.buildSupport.getCommand({ useWrapper: true }), + windowsCommand: project.buildSupport.getWindowsCommand({ useWrapper: true }) + }] + ); + + assertLaunchJson( + projectDir, + [ + { preLaunchTask: project.buildSupport.getQuarkusDev(), name: "Debug Quarkus application" } + ] + ); + await endDebugSession(driver); + log('Finished terminating debug session'); + // Debug once more to test if duplicate tasks/launch config are created + await new Workbench().executeCommand('Quarkus: Debug current Quarkus project'); + log('Finished executing debug command'); + await endDebugSessionPrematurely(); + log('Finished prematurely terminating debug session'); + assertTasksJson( + projectDir, + [ + { label: project.buildSupport.getQuarkusDev(), command: project.buildSupport.getCommand({ useWrapper: true }), windowsCommand: project.buildSupport.getWindowsCommand({ useWrapper: true }) } + ] + ); + + assertLaunchJson( + projectDir, + [ + { preLaunchTask: project.buildSupport.getQuarkusDev(), name: "Debug Quarkus application" } + ] + ); + // Debug once more to test if correct tasks are being created when wrapper files are not availible + deleteLaunchAndTasksJson(projectDir); + removeWrapperFiles(projectDir, project); + await new Promise((res) => setTimeout(res, 4000)); + await new Workbench().executeCommand('Quarkus: Debug current Quarkus project'); + log('Finished executing debug command'); + await endDebugSessionPrematurely(); + log('Finished prematurely terminating debug session'); + + assertTasksJson( + projectDir, + [ + { label: project.buildSupport.getQuarkusDev(), command: project.buildSupport.getCommand({ useWrapper: false }), windowsCommand: project.buildSupport.getWindowsCommand({ useWrapper: false }) } + ] + ); + + assertLaunchJson( + projectDir, + [ + { preLaunchTask: project.buildSupport.getQuarkusDev(), name: "Debug Quarkus application" } + ] + ); + } +}); + +async function openFolder(folderPath: string) { + let command: string = 'File: Open Folder...'; + if (os.platform() === 'darwin') command = 'File: Open...'; + await new Workbench().executeCommand(command); + const dialog: OpenDialog = await DialogHandler.getOpenDialog(); + await dialog.selectPath(folderPath); + await dialog.confirm(); +} \ No newline at end of file diff --git a/src/test/vscodeUiTest/suite/debuggingTests/utils.ts b/src/test/vscodeUiTest/suite/debuggingTests/utils.ts new file mode 100644 index 00000000..921e8ff2 --- /dev/null +++ b/src/test/vscodeUiTest/suite/debuggingTests/utils.ts @@ -0,0 +1,249 @@ +import { expect } from 'chai'; +import * as fs from 'fs-extra'; +import * as hjson from 'hjson'; +import * as _ from 'lodash'; +import * as path from 'path'; +import * as request from 'request-promise'; +import { By, InputBox, Notification, until, WebDriver, Workbench, BottomBarPanel, WebElement } from 'vscode-extension-tester'; +import { ProjectInfo } from './debugProjectInfo'; +import ncp = require('ncp'); + +export const TEST_PROJECTS_DIR: string = path.join( + __dirname, + '..', + '..', + '..', + '..', + '..', + 'test-projects' +); + +export interface WorkspaceInfo { + workspaceFolders: string[]; +} + +export interface TaskInfo { + label: string; + command: string; + windowsCommand: string; +} + +export interface LaunchConfigInfo { + preLaunchTask: string; + name: string; +} + +export async function openFolder(folderPath: string) { + await new Workbench().executeCommand('Extest: Open Folder'); + const input = await InputBox.create(); + await input.setText(folderPath); + await input.confirm(); +} + +export async function addFolder(folderPath: string) { + await new Workbench().executeCommand('Extest: Add Folder'); + const input = await InputBox.create(); + await input.setText(folderPath); + await input.confirm(); +} + +export function assertTasksJson(projectDir: string, taskInfoList: TaskInfo[]) { + const tasksPath: string = path.join(projectDir, '.vscode', 'tasks.json'); + const actualTasks: any[] = readJsonFile(tasksPath).tasks; + expect(actualTasks.length).to.be.equal( + taskInfoList.length, + 'Either there are duplicate tasks, or tasks are not being saved.' + ); + actualTasks.forEach(a => (a.windowsCommand = a.windows.command)); + + taskInfoList.forEach(info => { + expect(_.some(actualTasks, info)).to.be.true; + }); +} + +export function assertLaunchJson( + projectDir: string, + launchConfigInfoList: LaunchConfigInfo[] +) { + const launchPath: string = path.join(projectDir, '.vscode', 'launch.json'); + const actualLaunchConfig: any[] = readJsonFile(launchPath).configurations; + expect(actualLaunchConfig.length).to.be.equal(launchConfigInfoList.length); + launchConfigInfoList.forEach(info => { + expect(_.some(actualLaunchConfig, info)).to.be.true; + }); +} + +export function deleteLaunchAndTasksJson(projectDir: string) { + fs.removeSync(path.join(projectDir, '.vscode', 'launch.json')); + fs.removeSync(path.join(projectDir, '.vscode', 'tasks.json')); +} + +export async function assertDebugProjectWhenNoEditorsOpen( + driver: WebDriver, + project: ProjectInfo, + { endPrematurely }: { endPrematurely: boolean } +) { + await new Workbench().executeCommand( + 'Quarkus: Debug current Quarkus project' + ); + await driver.wait( + until.elementLocated(By.className('quick-input-widget')), + 10000 + ); + const input: InputBox = await new InputBox().wait(); + await new Promise(res => setTimeout(res, 300)); + await input.setText(project.projectName); + await new Promise(res => setTimeout(res, 300)); + await input.confirm(); + if (endPrematurely) { + await endDebugSessionPrematurely(); + } else { + await assertInDebugSession(driver, project); + await endDebugSession(driver); + } +} + +export async function assertDebugProjectWhenProjectFileOpen( + driver: WebDriver, + project: ProjectInfo, + { endPrematurely }: { endPrematurely: boolean } +) { + const prompt = await new Workbench().openCommandPrompt(); + await prompt.setText(project.resourceClass); + await prompt.confirm(); + await new Workbench().executeCommand( + 'Quarkus: Debug current Quarkus project' + ); + + if (endPrematurely) { + await endDebugSessionPrematurely(); + } else { + await assertInDebugSession(driver, project); + await endDebugSession(driver); + } + await new Workbench().executeCommand('View: Close All Editors'); +} + +function readJsonFile(path: string): any { + const contents: string = fs.readFileSync(path, { encoding: 'utf8' }); + return hjson.parse(contents); +} + +export async function endDebugSessionPrematurely() { + + await new Promise(res => setTimeout(res, 3000)); + await new Workbench().executeCommand('Debug: Stop'); + await new Promise(res => setTimeout(res, 300)); + await (new Workbench()).executeCommand('Terminate Task'); + await new Promise(res => setTimeout(res, 300)); + const input: InputBox = new InputBox(); + await new Promise(res => setTimeout(res, 300)); + await input.confirm(); + await new Promise((res) => setTimeout(res, 1000)); + +} + +export async function endDebugSession(driver: WebDriver) { + await new Workbench().executeCommand('Debug: Disconnect'); + let notification: Notification = (await driver.wait(() => { + return getQuarkusNotification(); + }, 2000)) as Notification; + await new Promise(res => setTimeout(res, 200)); + await notification.takeAction('Terminate task'); + notification = (await driver.wait(() => { + return getQuarkusNotification(); + }, 2000)) as Notification; + await new Promise(res => setTimeout(res, 200)); + await notification.takeAction('Ask again next time'); +} + +export function copyToTempDir(src: string, tempDir: string): Promise { + return new Promise((resolve, reject) => { + const srcBaseName: string = path.basename(src); + const dest: string = path.join(tempDir, srcBaseName); + ncp(src, dest, (err: Error[]) => { + if (err) { + reject(err); + } + resolve(dest); + }); + }); +} + +/** + * To assert that VS Code is in debug mode (is debugging a Quarkus project), + * this function will wait until the '1 active session' string exists + * in the debug icon title from the activity bar (the leftmost bar). + * + * After waiting until VS Code is in debug mode, this function + * will send an http request to ensure that the Quarkus application + * is running. + * + * @param driver the {@link WebDriver} instance + * @param project the Quarkus project that is being debugged + */ +export async function assertInDebugSession( + driver: WebDriver, + project: ProjectInfo +) { + await driver.wait(async () => { + const disconnectBtn: WebElement[] = await driver.findElements(By.className('codicon-debug-disconnect')); + + for (const btn of disconnectBtn) { + try { + if (await btn.isDisplayed()) return true; + } catch (e) { + // do nothing + } + } + return false; + }, 120000); + const response: string = await request( + `http://localhost:${project.port}/hello` + ); + expect(response).to.equal(project.message); +} + +export function removeWrapperFiles(projectDir: string, project: ProjectInfo) { + const wrapper: string = path.join( + projectDir, + path.basename(project.buildSupport.getWrapper()) + ); + const windowsWrapper: string = path.join( + projectDir, + path.win32.basename(project.buildSupport.getWindowsWrapper()) + ); + fs.removeSync(wrapper); + fs.removeSync(windowsWrapper); +} + +export async function openFileEditor(fileName: string) { + await new Promise(res => setTimeout(res, 300)); // important + const prompt = await new Workbench().openCommandPrompt(); + await new Promise(res => setTimeout(res, 300)); // important + await prompt.setText(fileName); // open Java file to trigger vscode-java welcome page + await new Promise(res => setTimeout(res, 300)); // important + await prompt.confirm(); +} + +export async function waitForQuarkusWelcomePage(driver: WebDriver) { + await driver.wait(until.elementLocated(By.linkText('Quarkus Tools for Visual Studio Code')), 120000); +} + +/** + * Example wait condition for WebDriver. Wait for a notification with given text to appear. + * Wait conditions resolve when the first truthy value is returned. + * In this case we choose to return the first matching notification object we find, + * or undefined if no such notification is found. + */ +async function getQuarkusNotification(): Promise { + const QUARKUS_SOURCE = 'Quarkus (Extension)'; + const notifications: Notification[] = await new Workbench().getNotifications(); + for (const notification of notifications) { + const source: string = await notification.getSource(); + if (source.indexOf(QUARKUS_SOURCE) >= 0) { + return notification; + } + } + return undefined; +} diff --git a/src/test/vscodeUiTest/ProjectGenerationWizard.ts b/src/test/vscodeUiTest/suite/projectGenerationTests/ProjectGenerationWizard.ts similarity index 100% rename from src/test/vscodeUiTest/ProjectGenerationWizard.ts rename to src/test/vscodeUiTest/suite/projectGenerationTests/ProjectGenerationWizard.ts diff --git a/src/test/vscodeUiTest/suite/projectGenerationTest.ts b/src/test/vscodeUiTest/suite/projectGenerationTests/tests/projectGenerationTest_.ts similarity index 97% rename from src/test/vscodeUiTest/suite/projectGenerationTest.ts rename to src/test/vscodeUiTest/suite/projectGenerationTests/tests/projectGenerationTest_.ts index 0d3c6084..631c0099 100644 --- a/src/test/vscodeUiTest/suite/projectGenerationTest.ts +++ b/src/test/vscodeUiTest/suite/projectGenerationTests/tests/projectGenerationTest_.ts @@ -18,7 +18,7 @@ import * as fs from 'fs-extra'; import * as path from 'path'; import * as pomParser from 'pom-parser'; import * as g2js from 'gradle-to-js/lib/parser'; - +import * as del from 'del'; import { InputBox, VSBrowser, Workbench, WebDriver, WebElement, By, Key } from 'vscode-extension-tester'; import { ProjectGenerationWizard, QuickPickItemInfo } from '../ProjectGenerationWizard'; import { expect, use } from 'chai'; @@ -31,18 +31,33 @@ use(require('chai-fs')); */ describe('Project generation tests', function() { this.bail(true); + this.retries(3); let driver: WebDriver; const tempDir: string = path.join(__dirname, 'temp'); - before(() => { + before(async () => { driver = VSBrowser.instance.driver; - fs.removeSync(tempDir); + }); + + beforeEach(async function() { + this.timeout(10000); + await new Promise((res) => setTimeout(res, 3000)); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } fs.mkdirSync(tempDir); }); after(async () => { - fs.removeSync(tempDir); + if (fs.existsSync(tempDir)) { + await del(tempDir); + } + }); + + afterEach(async function () { + this.timeout(5000); + await (new Workbench()).executeCommand('Close Workspace'); }); /** @@ -168,7 +183,6 @@ describe('Project generation tests', function() { */ it('should generate Maven project with extensions added', async function() { this.timeout(60000); - const projectDestDir: string = path.join(tempDir, 'maven'); const projectFolderName: string = 'quarkus-maven'; @@ -206,7 +220,6 @@ describe('Project generation tests', function() { */ it('should generate Gradle project with extensions added', async function() { this.timeout(60000); - const projectDestDir: string = path.join(tempDir, 'gradle'); const projectFolderName: string = 'quarkus-gradle'; @@ -244,7 +257,6 @@ describe('Project generation tests', function() { */ it('should display input values from previously generated project (with extensions)', async function() { this.timeout(80000); - const projectDestDir: string = path.join(tempDir, 'previous-values-extensions'); const buildTool: string = 'Gradle'; diff --git a/src/wizards/debugging/TaskCreator.ts b/src/wizards/debugging/TaskCreator.ts index ae6597f3..5baa1052 100644 --- a/src/wizards/debugging/TaskCreator.ts +++ b/src/wizards/debugging/TaskCreator.ts @@ -60,7 +60,6 @@ export class TaskCreator { const tasksKey = 'tasks'; const versionKey = 'version'; const version = '2.0.0'; - const workspaceConfiguration = workspace.getConfiguration(tasksKey, this.workspaceFolder.uri); // Get all registered tasks and current version @@ -70,7 +69,6 @@ export class TaskCreator { if (Array.isArray(tasks) && currentVersion) { return; } - // Create tasks.json file with empty list of tasks and with version 2.0.0 await workspaceConfiguration.update(versionKey, version, ConfigurationTarget.WorkspaceFolder); await workspaceConfiguration.update(tasksKey, [], ConfigurationTarget.WorkspaceFolder); diff --git a/test-projects/empty.code-workspace b/test-projects/empty.code-workspace new file mode 100644 index 00000000..d60dc64c --- /dev/null +++ b/test-projects/empty.code-workspace @@ -0,0 +1,3 @@ +{ + "folders": [] +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/.dockerignore b/test-projects/gradle-projects/quarkus-gradle-1/.dockerignore new file mode 100644 index 00000000..482f0130 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/.dockerignore @@ -0,0 +1,4 @@ +* +!build/*-runner +!build/*-runner.jar +!build/lib/* \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/.gitignore b/test-projects/gradle-projects/quarkus-gradle-1/.gitignore new file mode 100644 index 00000000..31144e4a --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/.gitignore @@ -0,0 +1,32 @@ +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Gradle +.gradle/ +build/ \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/README.md b/test-projects/gradle-projects/quarkus-gradle-1/README.md new file mode 100644 index 00000000..13b1d9d1 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/README.md @@ -0,0 +1,35 @@ +# quarkus-gradle-1 project + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +``` +./gradlew quarkusDev +``` + +## Packaging and running the application + +The application is packageable using `./gradlew quarkusBuild`. +It produces the executable `quarkus-gradle-1-1.0-SNAPSHOT-runner.jar` file in `build` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `build/lib` directory. + +The application is now runnable using `java -jar build/quarkus-gradle-1-1.0-SNAPSHOT-runner.jar`. + +If you want to build an _über-jar_, just add the `--uber-jar` option to the command line: +``` +./gradlew quarkusBuild --uber-jar +``` + +## Creating a native executable + +You can create a native executable using: `./gradlew buildNative`. + +Or you can use Docker to build the native executable using: `./gradlew buildNative --docker-build=true`. + +You can then execute your binary: `./build/quarkus-gradle-1-1.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling#building-a-native-executable . \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/build.gradle b/test-projects/gradle-projects/quarkus-gradle-1/build.gradle new file mode 100644 index 00000000..228e2aad --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/build.gradle @@ -0,0 +1,31 @@ +plugins { + id 'java' + id 'io.quarkus' +} + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + implementation 'io.quarkus:quarkus-resteasy' + implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}") + implementation 'io.quarkus:quarkus-resteasy' + + testImplementation 'io.quarkus:quarkus-junit5' + testImplementation 'io.rest-assured:rest-assured' +} + +group 'org.acme' +version '1.0-SNAPSHOT' + +compileJava { + options.compilerArgs << '-parameters' +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + diff --git a/test-projects/gradle-projects/quarkus-gradle-1/gradle.properties b/test-projects/gradle-projects/quarkus-gradle-1/gradle.properties new file mode 100644 index 00000000..7d2c0816 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/gradle.properties @@ -0,0 +1,6 @@ +#Gradle properties +#Tue Feb 25 21:41:03 UTC 2020 +quarkusPluginVersion=1.2.1.Final +quarkusPlatformArtifactId=quarkus-universe-bom +quarkusPlatformVersion=1.2.1.Final +quarkusPlatformGroupId=io.quarkus diff --git a/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.jar b/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..f3d88b1c Binary files /dev/null and b/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.jar differ diff --git a/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.properties b/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..b7c8c5db --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/test-projects/gradle-projects/quarkus-gradle-1/gradlew b/test-projects/gradle-projects/quarkus-gradle-1/gradlew new file mode 100755 index 00000000..2fe81a7d --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/test-projects/gradle-projects/quarkus-gradle-1/gradlew.bat b/test-projects/gradle-projects/quarkus-gradle-1/gradlew.bat new file mode 100755 index 00000000..9109989e --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/test-projects/gradle-projects/quarkus-gradle-1/settings.gradle b/test-projects/gradle-projects/quarkus-gradle-1/settings.gradle new file mode 100644 index 00000000..802a4020 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/settings.gradle @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + plugins { + id 'io.quarkus' version "${quarkusPluginVersion}" + } +} +rootProject.name='quarkus-gradle-1' \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.jvm b/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.jvm new file mode 100644 index 00000000..11050521 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.jvm @@ -0,0 +1,47 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the docker image run: +# +# mvn package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-gradle-1-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-gradle-1-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 + +ARG JAVA_PACKAGE=java-1.8.0-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.5 + +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' + +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install openssl curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" + +COPY build/lib/* /deployments/lib/ +COPY build/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.native b/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.native new file mode 100644 index 00000000..3ed683e4 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/main/docker/Dockerfile.native @@ -0,0 +1,30 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the docker image run: +# +# mvn package -Pnative -Dquarkus.native.container-build=true +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/quarkus-gradle-1 . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-gradle-1 +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 +WORKDIR /work/ +COPY build/*-runner /work/application + +# set up permissions for user `1001` +RUN chmod 775 /work /work/application \ + && chown -R 1001 /work \ + && chmod -R "g+rwX" /work \ + && chown -R 1001:root /work + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/main/java/org/acme/QuarkusGradle1.java b/test-projects/gradle-projects/quarkus-gradle-1/src/main/java/org/acme/QuarkusGradle1.java new file mode 100644 index 00000000..994074db --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/main/java/org/acme/QuarkusGradle1.java @@ -0,0 +1,16 @@ +package org.acme; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class QuarkusGradle1 { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + return "hello from QuarkusGradle1"; + } +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/META-INF/resources/index.html b/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/META-INF/resources/index.html new file mode 100644 index 00000000..db438cc0 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,152 @@ + + + + + quarkus-gradle-1 - 1.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: mvn compile quarkus:dev. +

+
    +
  • Add REST resources, Servlets, functions and other services in src/main/java.
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties. +
  • +
+ +

How do I get rid of this page?

+

Just delete the src/main/resources/META-INF/resources/index.html file.

+
+
+
+

Application

+
    +
  • GroupId: org.acme
  • +
  • ArtifactId: quarkus-gradle-1
  • +
  • Version: 1.0-SNAPSHOT
  • +
  • Quarkus Version: 1.2.1.Final
  • +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/application.properties b/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/application.properties new file mode 100644 index 00000000..3c1ac56a --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/main/resources/application.properties @@ -0,0 +1,2 @@ +# Configuration file +# key = value \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/native-test/java/org/acme/NativeGreetingResourceIT.java b/test-projects/gradle-projects/quarkus-gradle-1/src/native-test/java/org/acme/NativeGreetingResourceIT.java new file mode 100644 index 00000000..043ae182 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/native-test/java/org/acme/NativeGreetingResourceIT.java @@ -0,0 +1,9 @@ +package org.acme; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class NativeGreetingResourceIT extends GreetingResourceTest { + + // Execute the same tests but in native mode. +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-1/src/test/java/org/acme/GreetingResourceTest.java b/test-projects/gradle-projects/quarkus-gradle-1/src/test/java/org/acme/GreetingResourceTest.java new file mode 100644 index 00000000..fffe669f --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-1/src/test/java/org/acme/GreetingResourceTest.java @@ -0,0 +1,21 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class GreetingResourceTest { + + @Test + public void testHelloEndpoint() { + given() + .when().get("/hello") + .then() + .statusCode(200) + .body(is("hello")); + } + +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/.dockerignore b/test-projects/gradle-projects/quarkus-gradle-2/.dockerignore new file mode 100644 index 00000000..482f0130 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/.dockerignore @@ -0,0 +1,4 @@ +* +!build/*-runner +!build/*-runner.jar +!build/lib/* \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/.gitignore b/test-projects/gradle-projects/quarkus-gradle-2/.gitignore new file mode 100644 index 00000000..31144e4a --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/.gitignore @@ -0,0 +1,32 @@ +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Gradle +.gradle/ +build/ \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/README.md b/test-projects/gradle-projects/quarkus-gradle-2/README.md new file mode 100644 index 00000000..e241acd1 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/README.md @@ -0,0 +1,35 @@ +# quarkus-gradle-2 project + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +``` +./gradlew quarkusDev +``` + +## Packaging and running the application + +The application is packageable using `./gradlew quarkusBuild`. +It produces the executable `quarkus-gradle-2-1.0-SNAPSHOT-runner.jar` file in `build` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `build/lib` directory. + +The application is now runnable using `java -jar build/quarkus-gradle-2-1.0-SNAPSHOT-runner.jar`. + +If you want to build an _über-jar_, just add the `--uber-jar` option to the command line: +``` +./gradlew quarkusBuild --uber-jar +``` + +## Creating a native executable + +You can create a native executable using: `./gradlew buildNative`. + +Or you can use Docker to build the native executable using: `./gradlew buildNative --docker-build=true`. + +You can then execute your binary: `./build/quarkus-gradle-2-1.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling#building-a-native-executable . \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/build.gradle b/test-projects/gradle-projects/quarkus-gradle-2/build.gradle new file mode 100644 index 00000000..228e2aad --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/build.gradle @@ -0,0 +1,31 @@ +plugins { + id 'java' + id 'io.quarkus' +} + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + implementation 'io.quarkus:quarkus-resteasy' + implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}") + implementation 'io.quarkus:quarkus-resteasy' + + testImplementation 'io.quarkus:quarkus-junit5' + testImplementation 'io.rest-assured:rest-assured' +} + +group 'org.acme' +version '1.0-SNAPSHOT' + +compileJava { + options.compilerArgs << '-parameters' +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + diff --git a/test-projects/gradle-projects/quarkus-gradle-2/gradle.properties b/test-projects/gradle-projects/quarkus-gradle-2/gradle.properties new file mode 100644 index 00000000..7dd32211 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/gradle.properties @@ -0,0 +1,6 @@ +#Gradle properties +#Fri Feb 28 17:22:00 UTC 2020 +quarkusPluginVersion=1.2.1.Final +quarkusPlatformArtifactId=quarkus-universe-bom +quarkusPlatformVersion=1.2.1.Final +quarkusPlatformGroupId=io.quarkus diff --git a/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.jar b/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..f3d88b1c Binary files /dev/null and b/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.jar differ diff --git a/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.properties b/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..b7c8c5db --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/test-projects/gradle-projects/quarkus-gradle-2/gradlew b/test-projects/gradle-projects/quarkus-gradle-2/gradlew new file mode 100755 index 00000000..2fe81a7d --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/test-projects/gradle-projects/quarkus-gradle-2/gradlew.bat b/test-projects/gradle-projects/quarkus-gradle-2/gradlew.bat new file mode 100755 index 00000000..9109989e --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/test-projects/gradle-projects/quarkus-gradle-2/settings.gradle b/test-projects/gradle-projects/quarkus-gradle-2/settings.gradle new file mode 100644 index 00000000..75a0f4cb --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/settings.gradle @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + plugins { + id 'io.quarkus' version "${quarkusPluginVersion}" + } +} +rootProject.name='quarkus-gradle-2' \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.jvm b/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.jvm new file mode 100644 index 00000000..3726c92a --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.jvm @@ -0,0 +1,47 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the docker image run: +# +# mvn package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-gradle-2-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-gradle-2-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 + +ARG JAVA_PACKAGE=java-1.8.0-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.5 + +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' + +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install openssl curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" + +COPY build/lib/* /deployments/lib/ +COPY build/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.native b/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.native new file mode 100644 index 00000000..9373d84f --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/main/docker/Dockerfile.native @@ -0,0 +1,30 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the docker image run: +# +# mvn package -Pnative -Dquarkus.native.container-build=true +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/quarkus-gradle-2 . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-gradle-2 +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 +WORKDIR /work/ +COPY build/*-runner /work/application + +# set up permissions for user `1001` +RUN chmod 775 /work /work/application \ + && chown -R 1001 /work \ + && chmod -R "g+rwX" /work \ + && chown -R 1001:root /work + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/main/java/org/acme/QuarkusGradle2.java b/test-projects/gradle-projects/quarkus-gradle-2/src/main/java/org/acme/QuarkusGradle2.java new file mode 100644 index 00000000..99cfe6a1 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/main/java/org/acme/QuarkusGradle2.java @@ -0,0 +1,16 @@ +package org.acme; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class QuarkusGradle2 { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + return "hello from QuarkusGradle2"; + } +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/META-INF/resources/index.html b/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/META-INF/resources/index.html new file mode 100644 index 00000000..d0410e75 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,152 @@ + + + + + quarkus-gradle-2 - 1.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: mvn compile quarkus:dev. +

+
    +
  • Add REST resources, Servlets, functions and other services in src/main/java.
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties. +
  • +
+ +

How do I get rid of this page?

+

Just delete the src/main/resources/META-INF/resources/index.html file.

+
+
+
+

Application

+
    +
  • GroupId: org.acme
  • +
  • ArtifactId: quarkus-gradle-2
  • +
  • Version: 1.0-SNAPSHOT
  • +
  • Quarkus Version: 1.2.1.Final
  • +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/application.properties b/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/application.properties new file mode 100644 index 00000000..7d1c912e --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/main/resources/application.properties @@ -0,0 +1,3 @@ +# Configuration file +# key = value +quarkus.http.port=9090 \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/native-test/java/org/acme/NativeGreetingResourceIT.java b/test-projects/gradle-projects/quarkus-gradle-2/src/native-test/java/org/acme/NativeGreetingResourceIT.java new file mode 100644 index 00000000..043ae182 --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/native-test/java/org/acme/NativeGreetingResourceIT.java @@ -0,0 +1,9 @@ +package org.acme; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class NativeGreetingResourceIT extends GreetingResourceTest { + + // Execute the same tests but in native mode. +} \ No newline at end of file diff --git a/test-projects/gradle-projects/quarkus-gradle-2/src/test/java/org/acme/GreetingResourceTest.java b/test-projects/gradle-projects/quarkus-gradle-2/src/test/java/org/acme/GreetingResourceTest.java new file mode 100644 index 00000000..fffe669f --- /dev/null +++ b/test-projects/gradle-projects/quarkus-gradle-2/src/test/java/org/acme/GreetingResourceTest.java @@ -0,0 +1,21 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class GreetingResourceTest { + + @Test + public void testHelloEndpoint() { + given() + .when().get("/hello") + .then() + .statusCode(200) + .body(is("hello")); + } + +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/.dockerignore b/test-projects/maven-projects/quarkus-maven-1/.dockerignore new file mode 100644 index 00000000..b86c7ac3 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/.dockerignore @@ -0,0 +1,4 @@ +* +!target/*-runner +!target/*-runner.jar +!target/lib/* \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/.gitignore b/test-projects/maven-projects/quarkus-maven-1/.gitignore new file mode 100644 index 00000000..087a1835 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/.gitignore @@ -0,0 +1,35 @@ +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +release.properties \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/MavenWrapperDownloader.java b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 00000000..fcf558ec --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,124 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.Authenticator; +import java.net.PasswordAuthentication; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.5"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.jar b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..0d5e6498 Binary files /dev/null and b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.jar differ diff --git a/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.properties b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..fa87ad7d --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar diff --git a/test-projects/maven-projects/quarkus-maven-1/README.md b/test-projects/maven-projects/quarkus-maven-1/README.md new file mode 100644 index 00000000..3228e8df --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/README.md @@ -0,0 +1,30 @@ +# quarkus-maven-1 project + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +``` +./mvnw quarkus:dev +``` + +## Packaging and running the application + +The application is packageable using `./mvnw package`. +It produces the executable `quarkus-maven-1-1.0-SNAPSHOT-runner.jar` file in `/target` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/lib` directory. + +The application is now runnable using `java -jar target/quarkus-maven-1-1.0-SNAPSHOT-runner.jar`. + +## Creating a native executable + +You can create a native executable using: `./mvnw package -Pnative`. + +Or you can use Docker to build the native executable using: `./mvnw package -Pnative -Dquarkus.native.container-build=true`. + +You can then execute your binary: `./target/quarkus-maven-1-1.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image-guide . \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/mvnw b/test-projects/maven-projects/quarkus-maven-1/mvnw new file mode 100755 index 00000000..d2f0ea38 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/test-projects/maven-projects/quarkus-maven-1/mvnw.cmd b/test-projects/maven-projects/quarkus-maven-1/mvnw.cmd new file mode 100755 index 00000000..b26ab24f --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/test-projects/maven-projects/quarkus-maven-1/pom.xml b/test-projects/maven-projects/quarkus-maven-1/pom.xml new file mode 100644 index 00000000..8a89cabf --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/pom.xml @@ -0,0 +1,111 @@ + + + 4.0.0 + org.acme + quarkus-maven-1 + 1.0-SNAPSHOT + + 3.8.1 + true + 1.8 + 1.8 + UTF-8 + UTF-8 + 1.2.1.Final + quarkus-universe-bom + io.quarkus + 1.2.1.Final + 2.22.1 + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + + + + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus-plugin.version} + + + + build + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + + + + + + + + native + + + native + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + + + + + + + + + native + + + + diff --git a/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.jvm b/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.jvm new file mode 100644 index 00000000..2870e093 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.jvm @@ -0,0 +1,47 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the docker image run: +# +# mvn package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-maven-1-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-maven-1-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 + +ARG JAVA_PACKAGE=java-1.8.0-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.5 + +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' + +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install openssl curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" + +COPY target/lib/* /deployments/lib/ +COPY target/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.native b/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.native new file mode 100644 index 00000000..4ed88a24 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/main/docker/Dockerfile.native @@ -0,0 +1,30 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the docker image run: +# +# mvn package -Pnative -Dquarkus.native.container-build=true +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/quarkus-maven-1 . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-maven-1 +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 +WORKDIR /work/ +COPY target/*-runner /work/application + +# set up permissions for user `1001` +RUN chmod 775 /work /work/application \ + && chown -R 1001 /work \ + && chmod -R "g+rwX" /work \ + && chown -R 1001:root /work + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/main/java/org/acme/QuarkusMaven1.java b/test-projects/maven-projects/quarkus-maven-1/src/main/java/org/acme/QuarkusMaven1.java new file mode 100644 index 00000000..9b6eb6ca --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/main/java/org/acme/QuarkusMaven1.java @@ -0,0 +1,16 @@ +package org.acme; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class QuarkusMaven1 { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + return "hello from QuarkusMaven1"; + } +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/main/resources/META-INF/resources/index.html b/test-projects/maven-projects/quarkus-maven-1/src/main/resources/META-INF/resources/index.html new file mode 100644 index 00000000..936aa52f --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,152 @@ + + + + + quarkus-maven-1 - 1.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: mvn compile quarkus:dev. +

+
    +
  • Add REST resources, Servlets, functions and other services in src/main/java.
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties. +
  • +
+ +

How do I get rid of this page?

+

Just delete the src/main/resources/META-INF/resources/index.html file.

+
+
+
+

Application

+
    +
  • GroupId: org.acme
  • +
  • ArtifactId: quarkus-maven-1
  • +
  • Version: 1.0-SNAPSHOT
  • +
  • Quarkus Version: 1.2.1.Final
  • +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/main/resources/application.properties b/test-projects/maven-projects/quarkus-maven-1/src/main/resources/application.properties new file mode 100644 index 00000000..3c1ac56a --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/main/resources/application.properties @@ -0,0 +1,2 @@ +# Configuration file +# key = value \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/GreetingResourceTest.java b/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/GreetingResourceTest.java new file mode 100644 index 00000000..fffe669f --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/GreetingResourceTest.java @@ -0,0 +1,21 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class GreetingResourceTest { + + @Test + public void testHelloEndpoint() { + given() + .when().get("/hello") + .then() + .statusCode(200) + .body(is("hello")); + } + +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/NativeGreetingResourceIT.java b/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/NativeGreetingResourceIT.java new file mode 100644 index 00000000..043ae182 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-1/src/test/java/org/acme/NativeGreetingResourceIT.java @@ -0,0 +1,9 @@ +package org.acme; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class NativeGreetingResourceIT extends GreetingResourceTest { + + // Execute the same tests but in native mode. +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/.dockerignore b/test-projects/maven-projects/quarkus-maven-2/.dockerignore new file mode 100644 index 00000000..b86c7ac3 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/.dockerignore @@ -0,0 +1,4 @@ +* +!target/*-runner +!target/*-runner.jar +!target/lib/* \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/.gitignore b/test-projects/maven-projects/quarkus-maven-2/.gitignore new file mode 100644 index 00000000..087a1835 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/.gitignore @@ -0,0 +1,35 @@ +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +release.properties \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/MavenWrapperDownloader.java b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 00000000..fcf558ec --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,124 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.Authenticator; +import java.net.PasswordAuthentication; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.5"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.jar b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..0d5e6498 Binary files /dev/null and b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.jar differ diff --git a/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.properties b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..fa87ad7d --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar diff --git a/test-projects/maven-projects/quarkus-maven-2/README.md b/test-projects/maven-projects/quarkus-maven-2/README.md new file mode 100644 index 00000000..b6d0f26a --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/README.md @@ -0,0 +1,30 @@ +# quarkus-maven-2 project + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +``` +./mvnw quarkus:dev +``` + +## Packaging and running the application + +The application is packageable using `./mvnw package`. +It produces the executable `quarkus-maven-2-1.0-SNAPSHOT-runner.jar` file in `/target` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/lib` directory. + +The application is now runnable using `java -jar target/quarkus-maven-2-1.0-SNAPSHOT-runner.jar`. + +## Creating a native executable + +You can create a native executable using: `./mvnw package -Pnative`. + +Or you can use Docker to build the native executable using: `./mvnw package -Pnative -Dquarkus.native.container-build=true`. + +You can then execute your binary: `./target/quarkus-maven-2-1.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image-guide . \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/mvnw b/test-projects/maven-projects/quarkus-maven-2/mvnw new file mode 100755 index 00000000..d2f0ea38 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/test-projects/maven-projects/quarkus-maven-2/mvnw.cmd b/test-projects/maven-projects/quarkus-maven-2/mvnw.cmd new file mode 100755 index 00000000..b26ab24f --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/test-projects/maven-projects/quarkus-maven-2/pom.xml b/test-projects/maven-projects/quarkus-maven-2/pom.xml new file mode 100644 index 00000000..96cddd21 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/pom.xml @@ -0,0 +1,111 @@ + + + 4.0.0 + org.acme + quarkus-maven-2 + 1.0-SNAPSHOT + + 3.8.1 + true + 1.8 + 1.8 + UTF-8 + UTF-8 + 1.2.1.Final + quarkus-universe-bom + io.quarkus + 1.2.1.Final + 2.22.1 + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + + + + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus-plugin.version} + + + + build + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + + + + + + + + native + + + native + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + + + + + + + + + native + + + + diff --git a/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.jvm b/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.jvm new file mode 100644 index 00000000..06b2b759 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.jvm @@ -0,0 +1,47 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the docker image run: +# +# mvn package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-maven-2-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-maven-2-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 + +ARG JAVA_PACKAGE=java-1.8.0-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.5 + +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' + +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install openssl curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" + +COPY target/lib/* /deployments/lib/ +COPY target/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.native b/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.native new file mode 100644 index 00000000..7da9886e --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/main/docker/Dockerfile.native @@ -0,0 +1,30 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the docker image run: +# +# mvn package -Pnative -Dquarkus.native.container-build=true +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/quarkus-maven-2 . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/quarkus-maven-2 +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.1 +WORKDIR /work/ +COPY target/*-runner /work/application + +# set up permissions for user `1001` +RUN chmod 775 /work /work/application \ + && chown -R 1001 /work \ + && chmod -R "g+rwX" /work \ + && chown -R 1001:root /work + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/main/java/org/acme/QuarkusMaven2.java b/test-projects/maven-projects/quarkus-maven-2/src/main/java/org/acme/QuarkusMaven2.java new file mode 100644 index 00000000..ca7daf0e --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/main/java/org/acme/QuarkusMaven2.java @@ -0,0 +1,16 @@ +package org.acme; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +@Path("/hello") +public class QuarkusMaven2 { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + return "hello from QuarkusMaven2"; + } +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/main/resources/META-INF/resources/index.html b/test-projects/maven-projects/quarkus-maven-2/src/main/resources/META-INF/resources/index.html new file mode 100644 index 00000000..b004702b --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,152 @@ + + + + + quarkus-maven-2 - 1.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: mvn compile quarkus:dev. +

+
    +
  • Add REST resources, Servlets, functions and other services in src/main/java.
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties. +
  • +
+ +

How do I get rid of this page?

+

Just delete the src/main/resources/META-INF/resources/index.html file.

+
+
+
+

Application

+
    +
  • GroupId: org.acme
  • +
  • ArtifactId: quarkus-maven-2
  • +
  • Version: 1.0-SNAPSHOT
  • +
  • Quarkus Version: 1.2.1.Final
  • +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/main/resources/application.properties b/test-projects/maven-projects/quarkus-maven-2/src/main/resources/application.properties new file mode 100644 index 00000000..7d1c912e --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/main/resources/application.properties @@ -0,0 +1,3 @@ +# Configuration file +# key = value +quarkus.http.port=9090 \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/GreetingResourceTest.java b/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/GreetingResourceTest.java new file mode 100644 index 00000000..fffe669f --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/GreetingResourceTest.java @@ -0,0 +1,21 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class GreetingResourceTest { + + @Test + public void testHelloEndpoint() { + given() + .when().get("/hello") + .then() + .statusCode(200) + .body(is("hello")); + } + +} \ No newline at end of file diff --git a/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/NativeGreetingResourceIT.java b/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/NativeGreetingResourceIT.java new file mode 100644 index 00000000..043ae182 --- /dev/null +++ b/test-projects/maven-projects/quarkus-maven-2/src/test/java/org/acme/NativeGreetingResourceIT.java @@ -0,0 +1,9 @@ +package org.acme; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class NativeGreetingResourceIT extends GreetingResourceTest { + + // Execute the same tests but in native mode. +} \ No newline at end of file