Merge from vscode e3c4990c67c40213af168300d1cfeb71d680f877 (#16569)

This commit is contained in:
Cory Rivera
2021-08-25 16:28:29 -07:00
committed by GitHub
parent ab1112bfb3
commit cb7b7da0a4
1752 changed files with 59525 additions and 33878 deletions

View File

@@ -105,7 +105,7 @@ export async function resolveCommonProperties(
return result;
}
function verifyMicrosoftInternalDomain(domainList: readonly string[]): boolean {
export function verifyMicrosoftInternalDomain(domainList: readonly string[]): boolean {
const userDnsDomain = env['USERDNSDOMAIN'];
if (!userDnsDomain) {
return false;

View File

@@ -1,6 +1,6 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { registerSharedProcessRemoteService } from 'vs/platform/ipc/electron-sandbox/services';

View File

@@ -1,6 +1,6 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Client as TelemetryClient } from 'vs/base/parts/ipc/node/ipc.cp';

View File

@@ -3,43 +3,52 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { readdirSync } from 'vs/base/node/pfs';
import { statSync, readFileSync } from 'fs';
import { Promises } from 'vs/base/node/pfs';
import { join } from 'vs/base/common/path';
export function buildTelemetryMessage(appRoot: string, extensionsPath?: string): string {
export async function buildTelemetryMessage(appRoot: string, extensionsPath?: string): Promise<string> {
const mergedTelemetry = Object.create(null);
// Simple function to merge the telemetry into one json object
const mergeTelemetry = (contents: string, dirName: string) => {
const telemetryData = JSON.parse(contents);
mergedTelemetry[dirName] = telemetryData;
};
if (extensionsPath) {
// Gets all the directories inside the extension directory
const dirs = readdirSync(extensionsPath).filter(files => {
// This handles case where broken symbolic links can cause statSync to throw and error
const dirs: string[] = [];
const files = await Promises.readdir(extensionsPath);
for (const file of files) {
try {
return statSync(join(extensionsPath, files)).isDirectory();
const fileStat = await Promises.stat(join(extensionsPath, file));
if (fileStat.isDirectory()) {
dirs.push(file);
}
} catch {
return false;
// This handles case where broken symbolic links can cause statSync to throw and error
}
});
}
const telemetryJsonFolders: string[] = [];
dirs.forEach((dir) => {
const files = readdirSync(join(extensionsPath, dir)).filter(file => file === 'telemetry.json');
// We know it contains a telemetry.json file so we add it to the list of folders which have one
for (const dir of dirs) {
const files = (await Promises.readdir(join(extensionsPath, dir))).filter(file => file === 'telemetry.json');
if (files.length === 1) {
telemetryJsonFolders.push(dir);
telemetryJsonFolders.push(dir); // // We know it contains a telemetry.json file so we add it to the list of folders which have one
}
});
telemetryJsonFolders.forEach((folder) => {
const contents = readFileSync(join(extensionsPath, folder, 'telemetry.json')).toString();
}
for (const folder of telemetryJsonFolders) {
const contents = (await Promises.readFile(join(extensionsPath, folder, 'telemetry.json'))).toString();
mergeTelemetry(contents, folder);
});
}
}
let contents = readFileSync(join(appRoot, 'telemetry-core.json')).toString();
let contents = (await Promises.readFile(join(appRoot, 'telemetry-core.json'))).toString();
mergeTelemetry(contents, 'vscode-core');
contents = readFileSync(join(appRoot, 'telemetry-extensions.json')).toString();
contents = (await Promises.readFile(join(appRoot, 'telemetry-extensions.json'))).toString();
mergeTelemetry(contents, 'vscode-extensions');
return JSON.stringify(mergedTelemetry, null, 4);
}

View File

@@ -9,10 +9,13 @@ import ErrorTelemetry from 'vs/platform/telemetry/browser/errorTelemetry';
import { NullAppender, ITelemetryAppender } from 'vs/platform/telemetry/common/telemetryUtils';
import * as Errors from 'vs/base/common/errors';
import * as sinon from 'sinon';
import * as sinonTest from 'sinon-test';
import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
const sinonTestFn = sinonTest(sinon);
class TestTelemetryAppender implements ITelemetryAppender {
public events: any[];
@@ -85,7 +88,7 @@ class ErrorTestingSettings {
suite('TelemetryService', () => {
test('Disposing', sinon.test(function () {
test('Disposing', sinonTestFn(function () {
let testAppender = new TestTelemetryAppender();
let service = new TelemetryService({ appender: testAppender }, undefined!);
@@ -98,7 +101,7 @@ suite('TelemetryService', () => {
}));
// event reporting
test('Simple event', sinon.test(function () {
test('Simple event', sinonTestFn(function () {
let testAppender = new TestTelemetryAppender();
let service = new TelemetryService({ appender: testAppender }, undefined!);
@@ -111,7 +114,7 @@ suite('TelemetryService', () => {
});
}));
test('Event with data', sinon.test(function () {
test('Event with data', sinonTestFn(function () {
let testAppender = new TestTelemetryAppender();
let service = new TelemetryService({ appender: testAppender }, undefined!);
@@ -193,7 +196,7 @@ suite('TelemetryService', () => {
});
});
test('enableTelemetry on by default', sinon.test(function () {
test('enableTelemetry on by default', sinonTestFn(function () {
let testAppender = new TestTelemetryAppender();
let service = new TelemetryService({ appender: testAppender }, undefined!);
@@ -224,7 +227,7 @@ suite('TelemetryService', () => {
}
}
test.skip('Error events', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Error events', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -256,7 +259,7 @@ suite('TelemetryService', () => {
}
}));
// test('Unhandled Promise Error events', sinon.test(function() {
// test('Unhandled Promise Error events', sinonTestFn(function() {
//
// let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
// Errors.setUnexpectedErrorHandler(() => {});
@@ -285,7 +288,7 @@ suite('TelemetryService', () => {
// }
// }));
test.skip('Handle global errors', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Handle global errors', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
@@ -313,7 +316,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Error Telemetry removes PII from filename with spaces', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Error Telemetry removes PII from filename with spaces', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -336,7 +339,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Uncaught Error Telemetry removes PII from filename', sinon.test(function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII from filename', sinonTestFn(function (this: any) { // {{SQL CARBON EDIT}} skip test
let clock = this.clock;
let errorStub = sinon.stub();
window.onerror = errorStub;
@@ -368,7 +371,7 @@ suite('TelemetryService', () => {
});
}));
test.skip('Unexpected Error Telemetry removes PII', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
try {
@@ -399,7 +402,7 @@ suite('TelemetryService', () => {
}
}));
test.skip('Uncaught Error Telemetry removes PII', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -426,7 +429,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -462,7 +465,7 @@ suite('TelemetryService', () => {
}
}));
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -491,7 +494,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path with node modules', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path with node modules', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -523,7 +526,7 @@ suite('TelemetryService', () => {
}
}));
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -549,7 +552,7 @@ suite('TelemetryService', () => {
}));
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path when PIIPath is configured', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII but preserves Code file path when PIIPath is configured', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -585,7 +588,7 @@ suite('TelemetryService', () => {
}
}));
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path when PIIPath is configured', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII but preserves Code file path when PIIPath is configured', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -614,7 +617,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Unexpected Error Telemetry removes PII but preserves Missing Model error message', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII but preserves Missing Model error message', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -650,7 +653,7 @@ suite('TelemetryService', () => {
}
}));
test.skip('Uncaught Error Telemetry removes PII but preserves Missing Model error message', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Uncaught Error Telemetry removes PII but preserves Missing Model error message', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let errorStub = sinon.stub();
window.onerror = errorStub;
let settings = new ErrorTestingSettings();
@@ -680,7 +683,7 @@ suite('TelemetryService', () => {
service.dispose();
}));
test.skip('Unexpected Error Telemetry removes PII but preserves No Such File error message', sinon.test(async function (this: any) { // {{SQL CARBON EIDT}} skip test
test.skip('Unexpected Error Telemetry removes PII but preserves No Such File error message', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
@@ -715,7 +718,8 @@ suite('TelemetryService', () => {
Errors.setUnexpectedErrorHandler(origErrorHandler);
}
}));
test.skip('Uncaught Error Telemetry removes PII but preserves No Such File error message', sinon.test(async function (this: any) { // {{SQL CARBON EDIT}} skip tests
test.skip('Uncaught Error Telemetry removes PII but preserves No Such File error message', sinonTestFn(async function (this: any) { // {{SQL CARBON EDIT}} skip test
let origErrorHandler = Errors.errorHandler.getUnexpectedErrorHandler();
Errors.setUnexpectedErrorHandler(() => { });
try {
@@ -751,7 +755,7 @@ suite('TelemetryService', () => {
}
}));
test('Telemetry Service sends events when enableTelemetry is on', sinon.test(function () {
test('Telemetry Service sends events when enableTelemetry is on', sinonTestFn(function () {
let testAppender = new TestTelemetryAppender();
let service = new TelemetryService({ appender: testAppender }, undefined!);