From 4d458f90861fd3328dd23de646b6252c891f0527 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 19 Oct 2020 17:17:17 +0200 Subject: [PATCH 1/2] MONGOSH-248 - Run java-shell tests as part of the test suite --- packages/java-shell/package-lock.json | 315 +++++++++++++++---- packages/java-shell/package.json | 3 +- packages/java-shell/src/test/js/run-tests.ts | 62 ++++ packages/java-shell/tsconfig.json | 3 + 4 files changed, 320 insertions(+), 63 deletions(-) create mode 100644 packages/java-shell/src/test/js/run-tests.ts create mode 100644 packages/java-shell/tsconfig.json diff --git a/packages/java-shell/package-lock.json b/packages/java-shell/package-lock.json index 2cc0c7ad54..afcc58eef7 100644 --- a/packages/java-shell/package-lock.json +++ b/packages/java-shell/package-lock.json @@ -15,9 +15,9 @@ } }, "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-node": { @@ -37,6 +37,12 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -84,6 +90,15 @@ } } }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -142,9 +157,9 @@ } }, "browserify": { - "version": "16.5.2", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", - "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", + "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", "dev": true, "requires": { "JSONStream": "^1.0.3", @@ -159,31 +174,31 @@ "constants-browserify": "~1.0.0", "crypto-browserify": "^3.0.0", "defined": "^1.0.0", - "deps-sort": "^2.0.0", + "deps-sort": "^2.0.1", "domain-browser": "^1.2.0", "duplexer2": "~0.1.2", - "events": "^2.0.0", + "events": "^3.0.0", "glob": "^7.1.0", "has": "^1.0.0", "htmlescape": "^1.1.0", "https-browserify": "^1.0.0", "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", + "insert-module-globals": "^7.2.1", "labeled-stream-splicer": "^2.0.0", "mkdirp-classic": "^0.5.2", "module-deps": "^6.2.3", "os-browserify": "~0.3.0", "parents": "^1.0.1", - "path-browserify": "~0.0.0", + "path-browserify": "^1.0.0", "process": "~0.11.0", "punycode": "^1.3.2", "querystring-es3": "~0.2.0", "read-only-stream": "^2.0.0", "readable-stream": "^2.0.2", "resolve": "^1.1.4", - "shasum": "^1.0.0", + "shasum-object": "^1.0.0", "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", + "stream-browserify": "^3.0.0", "stream-http": "^3.0.0", "string_decoder": "^1.1.1", "subarg": "^1.0.0", @@ -192,7 +207,7 @@ "timers-browserify": "^1.0.1", "tty-browserify": "0.0.1", "url": "~0.11.0", - "util": "~0.10.1", + "util": "~0.12.0", "vm-browserify": "^1.0.0", "xtend": "^4.0.0" } @@ -459,6 +474,15 @@ "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -555,10 +579,40 @@ } } }, + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "evp_bytestokey": { @@ -577,6 +631,12 @@ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", "dev": true }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -618,6 +678,12 @@ "function-bind": "^1.1.1" } }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -707,9 +773,9 @@ } }, "insert-module-globals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", - "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", "dev": true, "requires": { "JSONStream": "^1.0.3", @@ -724,31 +790,76 @@ "xtend": "^4.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", "dev": true }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "has-symbols": "^1.0.1" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "is-typed-array": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", + "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.0", + "es-abstract": "^1.17.4", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "jsonparse": { @@ -864,6 +975,52 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -908,9 +1065,9 @@ } }, "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, "path-is-absolute": { @@ -1097,16 +1254,6 @@ "safe-buffer": "^5.0.1" } }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "dev": true, - "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" - } - }, "shasum-object": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", @@ -1135,13 +1282,26 @@ "dev": true }, "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "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", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "stream-combiner2": { @@ -1189,6 +1349,26 @@ "readable-stream": "^2.0.2" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -1291,20 +1471,17 @@ } }, "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", "dev": true, "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" } }, "util-deprecate": { @@ -1319,6 +1496,20 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "which-typed-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", + "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "es-abstract": "^1.17.5", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/packages/java-shell/package.json b/packages/java-shell/package.json index 65737bbe31..184907df03 100644 --- a/packages/java-shell/package.json +++ b/packages/java-shell/package.json @@ -12,7 +12,8 @@ }, "scripts": { "browserify-shell-api": "browserify src/main/js/all.js -o src/main/resources/js/all-standalone.js -dv", - "test-ci": "npm run test" + "test": "mocha -r \"../../scripts/import-expansions.js\" --timeout 60000 --colors -r ts-node/register \"./src/test/js/run-tests.ts\"", + "test-ci": "node ../../scripts/run-if-platform.js linux npm run test" }, "devDependencies": { "browserify": "latest" diff --git a/packages/java-shell/src/test/js/run-tests.ts b/packages/java-shell/src/test/js/run-tests.ts new file mode 100644 index 0000000000..db3457bfa0 --- /dev/null +++ b/packages/java-shell/src/test/js/run-tests.ts @@ -0,0 +1,62 @@ +'use strict'; +import child_process from 'child_process'; +import fs from 'fs'; +import path from 'path'; +import { startTestServer } from '../../../../../testing/integration-testing-hooks'; + +const port = '27019'; +const authlessUri = `mongodb://localhost:${port}`; +const uri = `mongodb://admin:admin@localhost:${port}`; + +describe('java-shell tests', function() { + this.timeout(300_000); + const connectionString = startTestServer(); + const uriFile = path.resolve(__dirname, '..', 'resources', 'URI.txt'); + const packageRoot = path.resolve(__dirname, '..', '..', '..') + '/'; + let origUriFileContent; + + before((done) => { + // We can probably turn this into execSync once + // https://jira.mongodb.org/browse/MONGOSH-401 is fixed + const mongosh = child_process.spawn( + process.execPath, + [ path.resolve(packageRoot, '..', 'cli-repl', 'bin', 'mongosh.js'), connectionString ], + { stdio: [ 'pipe', 'pipe', 'inherit' ], env: { ...process.env, NO_COLOR: '1' } }); + let out = ''; + let wroteCreateUser = false; + let isDone = false; + mongosh.stdout.setEncoding('utf8').on('data', (chunk) => { + out += chunk; + process.stderr.write(chunk); + if (out.includes('> ') && !wroteCreateUser) { + wroteCreateUser = true; + mongosh.stdin.write(` + use admin; + db.createUser({ user: "admin", pwd: "admin", roles: ["root"]}); + `); + } + if ((out.includes('{ ok: 1 }') || + out.includes('User "admin@admin" already exists')) && !isDone) { + isDone = true; + mongosh.kill(); + origUriFileContent = fs.readFileSync(uriFile); + fs.writeFileSync(uriFile, + connectionString.replace('mongodb://', 'mongodb://admin:admin@')); + done(); + } + }); + }); + + after(() => { + fs.writeFileSync(uriFile, origUriFileContent); + }); + + it('passes the JavaShell tests', () => { + if (process.platform !== 'win32') { + child_process.execSync('./gradlew test --info', { stdio: 'inherit', cwd: packageRoot }); + } else { + child_process.execSync('.\\gradlew.bat test --info', { stdio: 'inherit', cwd: packageRoot }); + } + }); +}); + diff --git a/packages/java-shell/tsconfig.json b/packages/java-shell/tsconfig.json new file mode 100644 index 0000000000..60604af5b7 --- /dev/null +++ b/packages/java-shell/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../config/tsconfig.base.json" +} From 55b7d0198e77ce92000b96fff19db57e989f00f5 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 20 Oct 2020 17:27:05 +0200 Subject: [PATCH 2/2] fix: improve java shell tests for newer mongod versions --- .../src/test/kotlin/com/mongodb/mongosh/util.kt | 10 +++++++++- .../aggregateWithNegativeBatchSize.expected.1.txt | 1 + .../resources/collection/createIndex.expected.1.txt | 2 ++ .../test/resources/collection/dropIndex.expected.1.txt | 1 + .../resources/collection/dropIndexes.expected.1.txt | 1 + .../resources/collection/getIndexes.expected.1.txt | 1 + .../resources/collection/uniqueIndex.expected.1.txt | 2 ++ .../test/resources/db/createCollection.expected.1.txt | 1 + .../resources/db/getCollectionInfos.expected.1.txt | 1 + 9 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 packages/java-shell/src/test/resources/collection/aggregateWithNegativeBatchSize.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/collection/createIndex.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/collection/dropIndex.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/collection/dropIndexes.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/collection/getIndexes.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/collection/uniqueIndex.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/db/createCollection.expected.1.txt create mode 100644 packages/java-shell/src/test/resources/db/getCollectionInfos.expected.1.txt diff --git a/packages/java-shell/src/test/kotlin/com/mongodb/mongosh/util.kt b/packages/java-shell/src/test/kotlin/com/mongodb/mongosh/util.kt index 1db09cc89f..7f39786d2f 100644 --- a/packages/java-shell/src/test/kotlin/com/mongodb/mongosh/util.kt +++ b/packages/java-shell/src/test/kotlin/com/mongodb/mongosh/util.kt @@ -143,12 +143,20 @@ private fun withDb(shell: MongoShell, name: String?, block: () -> Unit) { @Throws(IOException::class) private fun compare(testDataPath: String, name: String, actual: String) { - val expectedFile = File("$testDataPath/$name.expected.txt") + var expectedFile = File("$testDataPath/$name.expected.txt") if (!expectedFile.exists()) { assertTrue(expectedFile.createNewFile()) expectedFile.writeText(actual.trim()) fail("Created output file $expectedFile") } else { + for (counter in 1..10) { + if (expectedFile.readText().trim() == actual.trim()) break + + val alternativeFile = File("$testDataPath/$name.expected.$counter.txt") + if (alternativeFile.exists()) { + expectedFile = alternativeFile + } + } assertEquals(expectedFile.readText().trim(), actual.trim()) } } diff --git a/packages/java-shell/src/test/resources/collection/aggregateWithNegativeBatchSize.expected.1.txt b/packages/java-shell/src/test/resources/collection/aggregateWithNegativeBatchSize.expected.1.txt new file mode 100644 index 0000000000..a0ab70a266 --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/aggregateWithNegativeBatchSize.expected.1.txt @@ -0,0 +1 @@ +com.mongodb.MongoCommandException: Command failed with error 2 (BadValue): 'cursor.batchSize must not be negative' on server localhost:27018. The full response is {"ok": 0.0, "errmsg": "cursor.batchSize must not be negative", "code": 2, "codeName": "BadValue"} diff --git a/packages/java-shell/src/test/resources/collection/createIndex.expected.1.txt b/packages/java-shell/src/test/resources/collection/createIndex.expected.1.txt new file mode 100644 index 0000000000..7c386d10a1 --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/createIndex.expected.1.txt @@ -0,0 +1,2 @@ +[ "category_1" ] +[ { "v": 2, "key": { "_id": 1 }, "name": "_id_" }, { "v": 2, "key": { "category": 1 }, "name": "category_1", "collation": { "locale": "fr", "caseLevel": false, "caseFirst": "off", "strength": 3, "numericOrdering": false, "alternate": "non-ignorable", "maxVariable": "punct", "normalization": false, "backwards": false, "version": "57.1" } } ] diff --git a/packages/java-shell/src/test/resources/collection/dropIndex.expected.1.txt b/packages/java-shell/src/test/resources/collection/dropIndex.expected.1.txt new file mode 100644 index 0000000000..42dc2490ea --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/dropIndex.expected.1.txt @@ -0,0 +1 @@ +[ { "v": 2, "key": { "_id": 1 }, "name": "_id_" } ] diff --git a/packages/java-shell/src/test/resources/collection/dropIndexes.expected.1.txt b/packages/java-shell/src/test/resources/collection/dropIndexes.expected.1.txt new file mode 100644 index 0000000000..42dc2490ea --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/dropIndexes.expected.1.txt @@ -0,0 +1 @@ +[ { "v": 2, "key": { "_id": 1 }, "name": "_id_" } ] diff --git a/packages/java-shell/src/test/resources/collection/getIndexes.expected.1.txt b/packages/java-shell/src/test/resources/collection/getIndexes.expected.1.txt new file mode 100644 index 0000000000..42dc2490ea --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/getIndexes.expected.1.txt @@ -0,0 +1 @@ +[ { "v": 2, "key": { "_id": 1 }, "name": "_id_" } ] diff --git a/packages/java-shell/src/test/resources/collection/uniqueIndex.expected.1.txt b/packages/java-shell/src/test/resources/collection/uniqueIndex.expected.1.txt new file mode 100644 index 0000000000..97cd172a31 --- /dev/null +++ b/packages/java-shell/src/test/resources/collection/uniqueIndex.expected.1.txt @@ -0,0 +1,2 @@ +[ "category_1" ] +com.mongodb.MongoBulkWriteException: Bulk write operation error on server localhost:27018. Write errors: [BulkWriteError{index=0, code=11000, message='E11000 duplicate key error collection: admin.coll index: category_1 dup key: { category: "cat1" }', details={}}]. diff --git a/packages/java-shell/src/test/resources/db/createCollection.expected.1.txt b/packages/java-shell/src/test/resources/db/createCollection.expected.1.txt new file mode 100644 index 0000000000..7d86a9fcd9 --- /dev/null +++ b/packages/java-shell/src/test/resources/db/createCollection.expected.1.txt @@ -0,0 +1 @@ +com.mongodb.MongoBulkWriteException: Bulk write operation error on server localhost:27018. Write errors: [BulkWriteError{index=0, code=121, message='Document failed validation', details={}}]. diff --git a/packages/java-shell/src/test/resources/db/getCollectionInfos.expected.1.txt b/packages/java-shell/src/test/resources/db/getCollectionInfos.expected.1.txt new file mode 100644 index 0000000000..1915cf35fd --- /dev/null +++ b/packages/java-shell/src/test/resources/db/getCollectionInfos.expected.1.txt @@ -0,0 +1 @@ +[ { "name": "testCollection1", "type": "collection", "options": { }, "info": { "readOnly": false, "uuid": }, "idIndex": { "v": 2, "key": { "_id": 1 }, "name": "_id_" } } ]