From 9849fb595ae6a67fbfc887600a6919c8b802bbaa Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Tue, 2 Apr 2019 13:36:07 -0700 Subject: [PATCH 1/8] merge over from master --- .../webpack/webpack.datascience-ui.config.js | 8 + .../webpack/webpack.datascience-ui.config.ts | 8 + news/3 Code Health/4905.md | 1 + package-lock.json | 699 +++++++++++++++++- package.datascience-ui.dependencies.json | 1 + package.json | 5 +- .../checks/macPythonInterpreter.ts | 2 +- src/client/debugger/debugAdapter/main.ts | 2 +- src/client/providers/jediProxy.ts | 4 +- src/client/providers/linterProvider.ts | 2 +- src/client/unittests/main.ts | 4 +- .../history-react/variableExplorer.tsx | 16 +- .../history-react/variableExplorerGrid.scss | 5 + src/test/common/exitCIAfterTestReporter.ts | 56 ++ src/test/debugger/run.test.ts | 2 +- src/test/index.ts | 9 +- src/test/initialize.ts | 4 +- src/test/testRunner.ts | 2 +- webpack.datascience-ui.config.js | 8 + 19 files changed, 812 insertions(+), 26 deletions(-) create mode 100644 news/3 Code Health/4905.md create mode 100644 src/datascience-ui/history-react/variableExplorerGrid.scss create mode 100644 src/test/common/exitCIAfterTestReporter.ts diff --git a/build/webpack/webpack.datascience-ui.config.js b/build/webpack/webpack.datascience-ui.config.js index 1e1956db220b..b23e0196dbf9 100644 --- a/build/webpack/webpack.datascience-ui.config.js +++ b/build/webpack/webpack.datascience-ui.config.js @@ -81,6 +81,14 @@ const config = { options: {} } ] + }, + { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + 'sass-loader' + ] } ] } diff --git a/build/webpack/webpack.datascience-ui.config.ts b/build/webpack/webpack.datascience-ui.config.ts index d531ae4a6c83..63c5d91be500 100644 --- a/build/webpack/webpack.datascience-ui.config.ts +++ b/build/webpack/webpack.datascience-ui.config.ts @@ -87,6 +87,14 @@ const config: webpack.Configuration = { options: {} } ] + }, + { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + 'sass-loader' + ] } ] } diff --git a/news/3 Code Health/4905.md b/news/3 Code Health/4905.md new file mode 100644 index 000000000000..8d16219eaa7e --- /dev/null +++ b/news/3 Code Health/4905.md @@ -0,0 +1 @@ +Kill the test process on CI, 10s after the tests have completed. diff --git a/package-lock.json b/package-lock.json index e00f799eea0b..7869bf93cb8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1551,9 +1551,9 @@ "dev": true }, "@types/mocha": { - "version": "2.2.48", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", - "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz", + "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==", "dev": true }, "@types/node": { @@ -2185,6 +2185,16 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "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": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2259,6 +2269,12 @@ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2464,6 +2480,12 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -3369,6 +3391,24 @@ "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, "caniuse-lite": { "version": "1.0.30000887", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000887.tgz", @@ -3662,6 +3702,18 @@ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", "dev": true }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -3922,6 +3974,12 @@ "date-now": "^0.1.4" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -4344,6 +4402,15 @@ "integrity": "sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw==", "dev": true }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -4913,6 +4980,12 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -6780,6 +6853,62 @@ "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -6806,6 +6935,12 @@ "npm-conf": "^1.1.0" } }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -7028,6 +7163,17 @@ } } }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, "glogg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", @@ -7877,6 +8023,12 @@ "has-symbol-support-x": "^1.4.1" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -8314,6 +8466,21 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -8659,6 +8826,15 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -9026,6 +9202,12 @@ "is-object": "^1.0.1" } }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, "js-beautify": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz", @@ -9580,6 +9762,12 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -9628,6 +9816,12 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", @@ -9646,6 +9840,12 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -9717,6 +9917,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -9781,6 +9991,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, "map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", @@ -9913,6 +10129,24 @@ "readable-stream": "^2.0.1" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -10070,6 +10304,24 @@ } } }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -10366,8 +10618,7 @@ "version": "2.11.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "dev": true, - "optional": true + "dev": true }, "nanomatch": { "version": "1.2.9", @@ -10454,6 +10705,34 @@ "is-stream": "^1.0.1" } }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, "node-has-native-dependencies": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/node-has-native-dependencies/-/node-has-native-dependencies-1.0.2.tgz", @@ -10552,6 +10831,150 @@ "semver": "^5.3.0" } }, + "node-sass": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, "node-stream-zip": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.6.0.tgz", @@ -10671,6 +11094,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -11982,6 +12417,12 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", @@ -11998,6 +12439,16 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-cancelable": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", @@ -13211,6 +13662,16 @@ } } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, "reflect-metadata": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", @@ -13491,6 +13952,15 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, "replace-ext": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", @@ -13800,6 +14270,146 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "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://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -13860,6 +14470,27 @@ } } }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -14069,6 +14700,25 @@ "safe-buffer": "^5.0.1" } }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -14455,6 +15105,15 @@ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -14670,6 +15329,15 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -15187,6 +15855,12 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -15214,6 +15888,15 @@ "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==", "dev": true }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, "tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", @@ -17258,6 +17941,12 @@ "ultron": "~1.1.0" } }, + "wtfnode": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/wtfnode/-/wtfnode-0.8.0.tgz", + "integrity": "sha512-A5jm/0REykxUac1q4Q5kv+hDIiacvqVpwIoXzCQcRL7syeEKucVVOxyLLrt+jIiZoXfla3lnsxUw/cmWXIaGWA==", + "dev": true + }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", diff --git a/package.datascience-ui.dependencies.json b/package.datascience-ui.dependencies.json index 9457d8814805..ce660d0bd2e6 100644 --- a/package.datascience-ui.dependencies.json +++ b/package.datascience-ui.dependencies.json @@ -121,6 +121,7 @@ "remark-parse", "repeat-string", "roughjs-es5", + "sass-loader", "schedule", "semiotic-mark", "semiotic", diff --git a/package.json b/package.json index bc4b19ce2927..051c5b59b255 100644 --- a/package.json +++ b/package.json @@ -2333,7 +2333,7 @@ "@types/loader-utils": "^1.1.3", "@types/lodash": "^4.14.104", "@types/md5": "^2.1.32", - "@types/mocha": "^2.2.48", + "@types/mocha": "^5.2.6", "@types/node": "9.4.7", "@types/promisify-node": "^0.4.0", "@types/react": "^16.4.14", @@ -2397,6 +2397,7 @@ "mocha-junit-reporter": "^1.17.0", "mocha-multi-reporters": "^1.1.7", "node-has-native-dependencies": "^1.0.2", + "node-sass": "^4.11.0", "nyc": "^13.3.0", "raw-loader": "^0.5.1", "react": "^16.5.2", @@ -2410,6 +2411,7 @@ "remap-istanbul": "^0.10.1", "retyped-diff-match-patch-tsd-ambient": "^1.0.0-0", "rewiremock": "^3.13.0", + "sass-loader": "^7.1.0", "shortid": "^2.2.8", "style-loader": "^0.23.1", "styled-jsx": "^3.1.0", @@ -2435,6 +2437,7 @@ "webpack-merge": "^4.1.4", "webpack-node-externals": "^1.7.2", "why-is-node-running": "^2.0.3", + "wtfnode": "^0.8.0", "yargs": "^12.0.2" }, "__metadata": { diff --git a/src/client/application/diagnostics/checks/macPythonInterpreter.ts b/src/client/application/diagnostics/checks/macPythonInterpreter.ts index f5fc5187ad08..c2dcae52d437 100644 --- a/src/client/application/diagnostics/checks/macPythonInterpreter.ts +++ b/src/client/application/diagnostics/checks/macPythonInterpreter.ts @@ -56,7 +56,7 @@ export class InvalidMacPythonInterpreterService extends BaseDiagnosticsService { } public dispose() { if (this.timeOut) { - this.timeOut.unref(); + clearTimeout(this.timeOut); this.timeOut = undefined; } } diff --git a/src/client/debugger/debugAdapter/main.ts b/src/client/debugger/debugAdapter/main.ts index 78aee9e42978..7bf56a430a3c 100644 --- a/src/client/debugger/debugAdapter/main.ts +++ b/src/client/debugger/debugAdapter/main.ts @@ -136,7 +136,7 @@ export class PythonDebugger extends DebugSession { try { await this.debugServer!.client; - timeout.unref(); + clearTimeout(timeout); if (!rejected) { resolve(); } diff --git a/src/client/providers/jediProxy.ts b/src/client/providers/jediProxy.ts index 9d9e682a3503..862962b796a3 100644 --- a/src/client/providers/jediProxy.ts +++ b/src/client/providers/jediProxy.ts @@ -185,7 +185,7 @@ export class JediProxy implements Disposable { } } if (this.timer) { - this.timer.unref(); + clearTimeout(this.timer); } this.killProcess(); } @@ -255,7 +255,7 @@ export class JediProxy implements Disposable { await this.checkJediMemoryFootprintImpl(); if (this.timer) { - this.timer.unref(); + clearTimeout(this.timer); } this.timer = setTimeout(() => this.checkJediMemoryFootprint(), 15 * 1000); } diff --git a/src/client/providers/linterProvider.ts b/src/client/providers/linterProvider.ts index f1a0e818796d..aba767f54ee0 100644 --- a/src/client/providers/linterProvider.ts +++ b/src/client/providers/linterProvider.ts @@ -53,7 +53,7 @@ export class LinterProvider implements Disposable { // and then the extension is activated. So schedule linting pass now. if (!isTestExecution()) { const timer = setTimeout(() => this.engine.lintOpenPythonFiles().ignoreErrors(), 1200); - this.disposables.push({ dispose: () => timer.unref() }); + this.disposables.push({ dispose: () => clearTimeout(timer) }); } } diff --git a/src/client/unittests/main.ts b/src/client/unittests/main.ts index 01f072c40b3f..fbea02a848ab 100644 --- a/src/client/unittests/main.ts +++ b/src/client/unittests/main.ts @@ -67,11 +67,11 @@ export class UnitTestManagementService implements IUnitTestManagementService, Di this.workspaceTestManagerService.dispose(); } if (this.configChangedTimer) { - this.configChangedTimer.unref(); + clearTimeout(this.configChangedTimer); this.configChangedTimer = undefined; } if (this.autoDiscoverTimer) { - this.autoDiscoverTimer.unref(); + clearTimeout(this.autoDiscoverTimer); this.autoDiscoverTimer = undefined; } } diff --git a/src/datascience-ui/history-react/variableExplorer.tsx b/src/datascience-ui/history-react/variableExplorer.tsx index 48eff669ad52..53876117cd9a 100644 --- a/src/datascience-ui/history-react/variableExplorer.tsx +++ b/src/datascience-ui/history-react/variableExplorer.tsx @@ -13,6 +13,8 @@ import { CollapseButton } from './collapseButton'; import * as AdazzleReactDataGrid from 'react-data-grid'; +import './variableExplorerGrid.scss'; + //import 'bootstrap/dist/css/bootstrap.css' interface IVariableExplorerProps { @@ -67,12 +69,14 @@ export class VariableExplorer extends React.Component
- { return {...c, ...defaultColumnProperties}; })} - rowGetter = {this.getRow} - rowsCount = {this.state.gridRows.length} - minHeight = {this.state.gridHeight} - /> +
+ { return {...c, ...defaultColumnProperties}; })} + rowGetter = {this.getRow} + rowsCount = {this.state.gridRows.length} + minHeight = {this.state.gridHeight} + /> +
); diff --git a/src/datascience-ui/history-react/variableExplorerGrid.scss b/src/datascience-ui/history-react/variableExplorerGrid.scss new file mode 100644 index 000000000000..954dfa6bd407 --- /dev/null +++ b/src/datascience-ui/history-react/variableExplorerGrid.scss @@ -0,0 +1,5 @@ +#variable-explorer-data-grid { + div { + background-color: pink; + } +} \ No newline at end of file diff --git a/src/test/common/exitCIAfterTestReporter.ts b/src/test/common/exitCIAfterTestReporter.ts new file mode 100644 index 000000000000..0387dcda0174 --- /dev/null +++ b/src/test/common/exitCIAfterTestReporter.ts @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +'use strict'; + +// Custom reporter to ensure Mocha process exits when we're done with tests. +// This is a hack, however for some reason the process running the tests do not exit. +// The hack is to force it to die when tests are done, if this doesn't work we've got a bigger problem on our hands. + +// tslint:disable:no-var-requires no-require-imports no-any no-console no-unnecessary-class no-default-export +const log = require('why-is-node-running'); +const wtf = require('wtfnode'); +const mochaTests: any = require('mocha'); +const { EVENT_RUN_BEGIN, EVENT_RUN_END } = mochaTests.Runner.constants; +class ExitReporter { + constructor(runner: any) { + console.log('Initialize Exit Reporter for Mocha (PVSC).'); + const stats = runner.stats; + runner + .once(EVENT_RUN_BEGIN, () => { + console.info('Start Exit Reporter for Mocha.'); + }) + .once(EVENT_RUN_END, () => { + process.stdout.cork(); + console.info('End Exit Reporter for Mocha.'); + process.stdout.write('If process does not die in 30s, then log and kill.'); + process.stdout.uncork(); + // NodeJs generally waits for pending timeouts, however the process running Mocha + // No idea why it times, out. Once again, this is a hack. + // Solution (i.e. hack), lets add a timeout with a delay of 30 seconds, + // & if this process doesn't die, lets kill it. + function die() { + setTimeout(() => { + console.info('Exiting from custom PVSC Mocha Reporter.'); + try { + log(); + wtf(); + } catch (ex) { + // Do nothing. + } + process.exit(stats.failures === 0 ? 0 : 1); + try { + // Lets just close VSC, hopefully that'll be sufficient (more graceful). + const vscode = require('vscode'); + vscode.commands.executeCommand('workbench.action.closeWindow'); + } catch (ex) { + // Do nothing. + } + }, 30000); + } + die(); + }); + } +} + +module.exports = ExitReporter; diff --git a/src/test/debugger/run.test.ts b/src/test/debugger/run.test.ts index c27eb78f4b67..aff635cb0c54 100644 --- a/src/test/debugger/run.test.ts +++ b/src/test/debugger/run.test.ts @@ -24,7 +24,7 @@ suite('Run without Debugging', () => { this.skip(); } await new Promise(resolve => setTimeout(resolve, 1000)); - const coverageDirectory = path.join(EXTENSION_ROOT_DIR, `debug_coverage_nodebug${this.currentTest.title}`); + const coverageDirectory = path.join(EXTENSION_ROOT_DIR, `debug_coverage_nodebug${this.currentTest!.title}`); debugClient = await createDebugAdapter(coverageDirectory); }); teardown(async () => { diff --git a/src/test/index.ts b/src/test/index.ts index 3b1442fe66b4..a243a9bc4728 100644 --- a/src/test/index.ts +++ b/src/test/index.ts @@ -1,13 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. 'use strict'; +// tslint:disable:no-require-imports no-var-requires no-any +// Always place at the top, to ensure other modules are imported first. +require('./common/exitCIAfterTestReporter'); -// tslint:disable-next-line:no-any if ((Reflect as any).metadata === undefined) { - // tslint:disable-next-line:no-require-imports no-var-requires require('reflect-metadata'); } +import * as path from 'path'; import { IS_CI_SERVER_TEST_DEBUGGER, MOCHA_REPORTER_JUNIT } from './ciConstants'; @@ -44,8 +46,9 @@ const options: testRunner.SetupOptions & { retries: number } = { // changed by setting env var `MOCHA_FILE` (we do this in our CI). if (MOCHA_REPORTER_JUNIT) { options.reporter = 'mocha-multi-reporters'; + const reporterPath = path.join(__dirname, 'common', 'exitCIAfterTestReporter.js'); options.reporterOptions = { - reporterEnabled: 'spec,mocha-junit-reporter' + reporterEnabled: `spec,mocha-junit-reporter,${reporterPath}` }; } diff --git a/src/test/initialize.ts b/src/test/initialize.ts index 83e354bed12a..a3a2e843b4be 100644 --- a/src/test/initialize.ts +++ b/src/test/initialize.ts @@ -64,10 +64,10 @@ export async function closeActiveWindows(): Promise { }, 15000); vscode.commands.executeCommand('workbench.action.closeAllEditors') .then(() => { - timer.unref(); + clearTimeout(timer); resolve(); }, ex => { - timer.unref(); + clearTimeout(timer); reject(ex); }); }); diff --git a/src/test/testRunner.ts b/src/test/testRunner.ts index bb26ec497799..b5763b08168e 100644 --- a/src/test/testRunner.ts +++ b/src/test/testRunner.ts @@ -110,7 +110,7 @@ export function run(testsRoot: string, callback: TestCallback): void { timer = setTimeout(() => reject(ex), 120_000); }); const promise = Promise.race([initialize(), failed]); - promise.then(() => timer!.unref()).catch(() => timer!.unref()); + promise.then(() => clearTimeout(timer!)).catch(() => clearTimeout(timer!)); return promise; } // Run the tests. diff --git a/webpack.datascience-ui.config.js b/webpack.datascience-ui.config.js index 4f5cabb1b624..6b51b6a1a1c6 100644 --- a/webpack.datascience-ui.config.js +++ b/webpack.datascience-ui.config.js @@ -87,6 +87,14 @@ module.exports = [ options: {} } ] + }, + { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + 'sass-loader' + ] } ] } From 8bbcd1742b9d6480cb0d30794dfc3739e5d7e681 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Tue, 2 Apr 2019 14:00:37 -0700 Subject: [PATCH 2/8] working basic styles from rich --- .../history-react/variableExplorerGrid.scss | 75 ++++++++++++++++++- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/src/datascience-ui/history-react/variableExplorerGrid.scss b/src/datascience-ui/history-react/variableExplorerGrid.scss index 954dfa6bd407..8d8bd3ee04b0 100644 --- a/src/datascience-ui/history-react/variableExplorerGrid.scss +++ b/src/datascience-ui/history-react/variableExplorerGrid.scss @@ -1,5 +1,74 @@ #variable-explorer-data-grid { - div { - background-color: pink; - } + @import "~bootstrap/dist/css/bootstrap"; +} + +#variable-explorer-data-grid .form-control { + height: auto; + padding: 0px; + font-size: inherit; + font-weight: inherit; + line-height: inherit; + border-radius: 0px; +} + +#variable-explorer-data-grid .react-grid-Toolbar { + background-color: var(--vscode-editor-background); + border: none; +} + +#variable-explorer-data-grid .react-grid-Toolbar .btn { + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); + border-color: var(--vscode-badge-background); +} + +#variable-explorer-data-grid .react-grid-Main { + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); + outline: none; +} + +#variable-explorer-data-grid .react-grid-Grid { + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); + border-color: var(--vscode-badge-background); +} + +#variable-explorer-data-grid .react-grid-Canvas { + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); +} + +#variable-explorer-data-grid .react-grid-Header { + background-color: var(--vscode-notifications-background); +} + +#variable-explorer-data-grid .react-grid-HeaderCell { + background-color: var(--vscode-notifications-background); + color: var(--vscode-editor-foreground); + border-right-color: var(--vscode-badge-background); + border-bottom-color: var(--vscode-badge-background); +} + +#variable-explorer-data-grid .react-grid-Cell { + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); + border-right-color: var(--vscode-badge-background); + border-bottom-color: var(--vscode-badge-background); +} + +#variable-explorer-data-grid .react-grid-Cell:hover { + background-color: var(--vscode-editor-selectionBackground); +} + +#variable-explorer-data-grid .react-grid-Row:hover { + background-color: var(--vscode-editor-selectionBackground); +} + +#variable-explorer-data-grid .react-grid-Row:hover .react-grid-Cell { + background-color: var(--vscode-editor-selectionBackground); +} + +#variable-explorer-data-grid .rdg-selected { + visibility: hidden; } \ No newline at end of file From aa953381da5ed3c65462b17134ebe12a4559b73b Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Wed, 3 Apr 2019 15:08:02 -0700 Subject: [PATCH 3/8] pre-review working styles --- package.nls.json | 2 +- src/client/datascience/codeCssGenerator.ts | 5 +++ .../history-react/variableExplorer.tsx | 21 +++++++----- .../variableExplorerCellFormatter.css | 15 ++++++++ .../variableExplorerCellFormatter.tsx | 33 ++++++++++++++++++ .../history-react/variableExplorerGrid.scss | 34 +++++++++++-------- 6 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 src/datascience-ui/history-react/variableExplorerCellFormatter.css create mode 100644 src/datascience-ui/history-react/variableExplorerCellFormatter.tsx diff --git a/package.nls.json b/package.nls.json index 4158c89e7059..aa7d1b9982d1 100644 --- a/package.nls.json +++ b/package.nls.json @@ -95,7 +95,7 @@ "DataScience.exportOpenQuestion": "Open in browser", "DataScience.collapseInputTooltip": "Collapse input block", "DataScience.collapseVariableExplorerTooltip": "Collapse variable explorer", - "DataScience.collapseVariableExplorerLabel": "Variable Explorer", + "DataScience.collapseVariableExplorerLabel": "Variables", "DataScience.variableLoadingValue": "Loading...", "DataScience.importDialogTitle": "Import Jupyter Notebook", "DataScience.importDialogFilter": "Jupyter Notebooks", diff --git a/src/client/datascience/codeCssGenerator.ts b/src/client/datascience/codeCssGenerator.ts index a9a5e9291b38..4c923d39de20 100644 --- a/src/client/datascience/codeCssGenerator.ts +++ b/src/client/datascience/codeCssGenerator.ts @@ -124,6 +124,7 @@ export class CodeCssGenerator implements ICodeCssGenerator { const keywordStyle = this.getScopeStyle(tokenColors, 'keyword.control', 'keyword'); const operatorStyle = this.getScopeStyle(tokenColors, 'keyword.operator', 'keyword'); const variableStyle = this.getScopeStyle(tokenColors, 'variable'); + const entityTypeStyle = this.getScopeStyle(tokenColors, 'entity.name.type'); // const atomic = this.getScopeColor(tokenColors, 'atomic'); const builtinStyle = this.getScopeStyle(tokenColors, 'support.function'); const punctuationStyle = this.getScopeStyle(tokenColors, 'punctuation'); @@ -141,6 +142,10 @@ export class CodeCssGenerator implements ICodeCssGenerator { return ` :root { --code-comment-color: ${commentStyle.color}; + --code-numeric-color: ${numericStyle.color}; + --code-string-color: ${stringStyle.color}; + --code-variable-color: ${variableStyle.color}; + --code-type-color: ${entityTypeStyle.color}; --code-font-family: ${fontFamily}; --code-font-size: ${fontSize}px; } diff --git a/src/datascience-ui/history-react/variableExplorer.tsx b/src/datascience-ui/history-react/variableExplorer.tsx index 53876117cd9a..ac07768e9202 100644 --- a/src/datascience-ui/history-react/variableExplorer.tsx +++ b/src/datascience-ui/history-react/variableExplorer.tsx @@ -10,13 +10,12 @@ import { IJupyterVariable } from '../../client/datascience/types'; import { getLocString } from '../react-common/locReactSide'; import { getSettings } from '../react-common/settingsReactSide'; import { CollapseButton } from './collapseButton'; +import { CellStyle, VariableExplorerCellFormatter } from './variableExplorerCellFormatter'; import * as AdazzleReactDataGrid from 'react-data-grid'; import './variableExplorerGrid.scss'; -//import 'bootstrap/dist/css/bootstrap.css' - interface IVariableExplorerProps { baseTheme: string; refreshVariables(): void; @@ -34,7 +33,7 @@ interface IVariableExplorerState { const defaultColumnProperties = { filterable: false, sortable: false, - resizable: false + resizable: true }; interface IGridRow { @@ -45,10 +44,12 @@ interface IGridRow { export class VariableExplorer extends React.Component { constructor(prop: IVariableExplorerProps) { super(prop); + // IANHU: Localize const columns = [ - {key: 'name', name: 'Name', type: 'string', width: 120}, - {key: 'type', name: 'Type', type: 'string', width: 120}, - {key: 'value', name: 'Value', type: 'string', width: 300} + {key: 'name', name: getLocString('DataScience.variableExplorerNameColumn', 'Name'), type: 'string', width: 120, formatter: }, + {key: 'type', name: getLocString('DataScience.variableExplorerTypeColumn', 'Type'), type: 'string', width: 120, formatter: }, + {key: 'size', name: getLocString('DataScience.variableExplorerSizeColumn', 'Size'), type: 'number', width: 120, formatter: }, + {key: 'value', name: getLocString('DataScience.variableExplorerValueColumn', 'Value'), type: 'string', width: 300, formatter: } ]; this.state = { open: false, gridColumns: columns, @@ -67,7 +68,7 @@ export class VariableExplorer extends React.Component + label={getLocString('DataScience.collapseVariableExplorerLabel', 'Variables')} />
@@ -97,7 +100,7 @@ export class VariableExplorer extends React.Component { - return {name: newVar.name, type: newVar.type, value: getLocString('DataScience.variableLoadingValue', 'Loading...')}; + return {name: newVar.name, type: newVar.type, size: newVar.size, value: getLocString('DataScience.variableLoadingValue', 'Loading...')}; }); this.setState({ gridRows: newGridRows}); @@ -136,7 +139,7 @@ export class VariableExplorer extends React.Component= 0 && index < this.state.gridRows.length) { return this.state.gridRows[index]; } - return {name: '', type: '', value: ''}; + return {name: '', type: '', size: '', value: ''}; } private toggleInputBlock = () => { diff --git a/src/datascience-ui/history-react/variableExplorerCellFormatter.css b/src/datascience-ui/history-react/variableExplorerCellFormatter.css new file mode 100644 index 000000000000..1996345f9b1b --- /dev/null +++ b/src/datascience-ui/history-react/variableExplorerCellFormatter.css @@ -0,0 +1,15 @@ +.react-grid-variable-explorer-cell-variable { + color: var(--code-variable-color, var(--vscode-editor-foreground)); +} + +.react-grid-variable-explorer-cell-type { + color: var(--code-type-color, var(--vscode-editor-foreground)); +} + +.react-grid-variable-explorer-cell-string { + color: var(--code-string-color, var(--vscode-editor-foreground)); +} + +.react-grid-variable-explorer-cell-numeric { + color: var(--code-numeric-color, var(--vscode-editor-foreground)); +} \ No newline at end of file diff --git a/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx new file mode 100644 index 000000000000..d5ef2fbc6036 --- /dev/null +++ b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +'use strict'; +import './variableExplorerCellFormatter.css'; + +import * as React from 'react'; + +export enum CellStyle { + variable = 'variable', + type = 'type', + string = 'string', + numeric = 'numeric' +} + +interface IVariableExplorerCellFormatterProps { + cellStyle: CellStyle; + // value gets populated by the default cell formatter props + value?: string | number | object | boolean; +} + +export class VariableExplorerCellFormatter extends React.Component { + public shouldComponentUpdate(nextProps: IVariableExplorerCellFormatterProps) { + return nextProps.value !== this.props.value; + } + + public render() { + const className = `react-grid-variable-explorer-cell-${this.props.cellStyle.toString()}`; + if (this.props.value) { + return(
{this.props.value}
); + } + return []; + } +} diff --git a/src/datascience-ui/history-react/variableExplorerGrid.scss b/src/datascience-ui/history-react/variableExplorerGrid.scss index 8d8bd3ee04b0..963dea898ea7 100644 --- a/src/datascience-ui/history-react/variableExplorerGrid.scss +++ b/src/datascience-ui/history-react/variableExplorerGrid.scss @@ -11,17 +11,6 @@ border-radius: 0px; } -#variable-explorer-data-grid .react-grid-Toolbar { - background-color: var(--vscode-editor-background); - border: none; -} - -#variable-explorer-data-grid .react-grid-Toolbar .btn { - background-color: var(--vscode-editor-background); - color: var(--vscode-editor-foreground); - border-color: var(--vscode-badge-background); -} - #variable-explorer-data-grid .react-grid-Main { background-color: var(--vscode-editor-background); color: var(--vscode-editor-foreground); @@ -31,7 +20,7 @@ #variable-explorer-data-grid .react-grid-Grid { background-color: var(--vscode-editor-background); color: var(--vscode-editor-foreground); - border-color: var(--vscode-badge-background); + border-style: none; } #variable-explorer-data-grid .react-grid-Canvas { @@ -44,19 +33,34 @@ } #variable-explorer-data-grid .react-grid-HeaderCell { - background-color: var(--vscode-notifications-background); + background-color: var(--vscode-editor-lineHighlightBorder); color: var(--vscode-editor-foreground); - border-right-color: var(--vscode-badge-background); + border-style: none none solid none; border-bottom-color: var(--vscode-badge-background); + padding: 4px; } -#variable-explorer-data-grid .react-grid-Cell { + +#variable-explorer-data-grid .react-grid-Row--even { background-color: var(--vscode-editor-background); color: var(--vscode-editor-foreground); border-right-color: var(--vscode-badge-background); border-bottom-color: var(--vscode-badge-background); } +#variable-explorer-data-grid .react-grid-Row--odd { + background-color: var(--vscode-editor-lineHighlightBorder); + color: var(--vscode-editor-foreground); + border-right-color: var(--vscode-badge-background); + border-bottom-color: var(--vscode-badge-background); +} + +#variable-explorer-data-grid .react-grid-Cell { + background-color: transparent; + color: var(--vscode-editor-foreground); + border-style: none; +} + #variable-explorer-data-grid .react-grid-Cell:hover { background-color: var(--vscode-editor-selectionBackground); } From 4e5022ff764d42efe549122464ff3cfc6e8044a0 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Wed, 3 Apr 2019 15:15:55 -0700 Subject: [PATCH 4/8] news and review cleanup --- news/1 Enhancements/4998.md | 1 + src/datascience-ui/history-react/variableExplorer.tsx | 1 - .../history-react/variableExplorerCellFormatter.tsx | 1 + src/datascience-ui/history-react/variableExplorerGrid.scss | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 news/1 Enhancements/4998.md diff --git a/news/1 Enhancements/4998.md b/news/1 Enhancements/4998.md new file mode 100644 index 000000000000..125594dbc611 --- /dev/null +++ b/news/1 Enhancements/4998.md @@ -0,0 +1 @@ +Pass one at getting our data grid styled correctly to match vscode styles and the spec \ No newline at end of file diff --git a/src/datascience-ui/history-react/variableExplorer.tsx b/src/datascience-ui/history-react/variableExplorer.tsx index ac07768e9202..61bdadae7c8d 100644 --- a/src/datascience-ui/history-react/variableExplorer.tsx +++ b/src/datascience-ui/history-react/variableExplorer.tsx @@ -44,7 +44,6 @@ interface IGridRow { export class VariableExplorer extends React.Component { constructor(prop: IVariableExplorerProps) { super(prop); - // IANHU: Localize const columns = [ {key: 'name', name: getLocString('DataScience.variableExplorerNameColumn', 'Name'), type: 'string', width: 120, formatter: }, {key: 'type', name: getLocString('DataScience.variableExplorerTypeColumn', 'Type'), type: 'string', width: 120, formatter: }, diff --git a/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx index d5ef2fbc6036..b436dd8c1cfb 100644 --- a/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx +++ b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx @@ -18,6 +18,7 @@ interface IVariableExplorerCellFormatterProps { value?: string | number | object | boolean; } +// Our formatter for cells in the variable explorer. Allow for different styles per column type export class VariableExplorerCellFormatter extends React.Component { public shouldComponentUpdate(nextProps: IVariableExplorerCellFormatterProps) { return nextProps.value !== this.props.value; diff --git a/src/datascience-ui/history-react/variableExplorerGrid.scss b/src/datascience-ui/history-react/variableExplorerGrid.scss index 963dea898ea7..711781efd184 100644 --- a/src/datascience-ui/history-react/variableExplorerGrid.scss +++ b/src/datascience-ui/history-react/variableExplorerGrid.scss @@ -1,3 +1,4 @@ +/* Import bootstrap, but prefix it all with our grid div so we don't clobber our history windows styles */ #variable-explorer-data-grid { @import "~bootstrap/dist/css/bootstrap"; } From a0c3b9d2991dc9e0fbc902eec2709f68166af531 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Wed, 3 Apr 2019 15:31:26 -0700 Subject: [PATCH 5/8] remove unused dependency --- package.datascience-ui.dependencies.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.datascience-ui.dependencies.json b/package.datascience-ui.dependencies.json index ce660d0bd2e6..9457d8814805 100644 --- a/package.datascience-ui.dependencies.json +++ b/package.datascience-ui.dependencies.json @@ -121,7 +121,6 @@ "remark-parse", "repeat-string", "roughjs-es5", - "sass-loader", "schedule", "semiotic-mark", "semiotic", From ae8048979588377c43cecf51f2091ae601bdc7e3 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Thu, 4 Apr 2019 10:02:31 -0700 Subject: [PATCH 6/8] fix font sizing --- .../history-react/collapseButton.css | 2 +- .../history-react/variableExplorer.tsx | 29 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/datascience-ui/history-react/collapseButton.css b/src/datascience-ui/history-react/collapseButton.css index f3c1ec5aeb03..75da9ec2e17c 100644 --- a/src/datascience-ui/history-react/collapseButton.css +++ b/src/datascience-ui/history-react/collapseButton.css @@ -21,6 +21,7 @@ .remove-style { background-color:transparent; border:transparent; + font:inherit; } .collapseInputLabel { @@ -28,6 +29,5 @@ color: var(--vscode-editor-foreground); font-family: var(--vscode-editor-font-family); font-weight: var(--vscode-editor-font-weight); - font-size: var(--vscode-editor-font-size); margin: 3px; } diff --git a/src/datascience-ui/history-react/variableExplorer.tsx b/src/datascience-ui/history-react/variableExplorer.tsx index 61bdadae7c8d..a85474281e7f 100644 --- a/src/datascience-ui/history-react/variableExplorer.tsx +++ b/src/datascience-ui/history-react/variableExplorer.tsx @@ -28,6 +28,7 @@ interface IVariableExplorerState { gridRows: IGridRow[]; gridHeight: number; height: number; + fontSize: number; } const defaultColumnProperties = { @@ -42,6 +43,8 @@ interface IGridRow { } export class VariableExplorer extends React.Component { + private divRef: React.RefObject; + constructor(prop: IVariableExplorerProps) { super(prop); const columns = [ @@ -54,14 +57,22 @@ export class VariableExplorer extends React.Component(); } public render() { if (getSettings && getSettings().showJupyterVariableExplorer) { const contentClassName = `variable-explorer-content ${this.state.open ? '' : ' hide'}`; + + const fontSizeStyle: React.CSSProperties = { + fontSize: `${this.state.fontSize.toString()}px` + }; + return( -
+
@@ -88,6 +99,16 @@ export class VariableExplorer extends React.Component { + // After mounting, check our computed style to see if the font size is changed + if (this.divRef.current) { + const newFontSize = parseInt(getComputedStyle(this.divRef.current).getPropertyValue('--code-font-size'), 10); + + // Make sure to check for update here so we don't update loop + if (this.state.fontSize !== newFontSize) { + this.setState({fontSize: newFontSize}); + } + } + this.updateHeight(); } From 3615be71a1b4a0c469ad621ad1557a53da524824 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Thu, 4 Apr 2019 10:07:16 -0700 Subject: [PATCH 7/8] better null check on cell formatter --- .../history-react/variableExplorerCellFormatter.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx index b436dd8c1cfb..c4e82acfc766 100644 --- a/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx +++ b/src/datascience-ui/history-react/variableExplorerCellFormatter.tsx @@ -26,7 +26,7 @@ export class VariableExplorerCellFormatter extends React.Component{this.props.value}); } return []; From 01667008a5cde623ba2d4c85f254e68cf704325f Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Thu, 4 Apr 2019 10:17:47 -0700 Subject: [PATCH 8/8] don't try to import load .scss files --- src/test/vscode-mock.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/vscode-mock.ts b/src/test/vscode-mock.ts index 4e689c35a23a..bd6609ea5203 100644 --- a/src/test/vscode-mock.ts +++ b/src/test/vscode-mock.ts @@ -40,6 +40,11 @@ export function initialize() { if (request === 'vscode-extension-telemetry') { return { default: vscMockTelemetryReporter }; } + // scss files need to be in import statements to be converted to css + // But we don't want to try to load them in the mock vscode + if (/\.scss$/.test(request)) { + return; + } return originalLoad.apply(this, arguments); }; }