Merge branch 'main' into cs-reference-view-api

This commit is contained in:
Johannes Rieken 2022-08-19 12:57:24 +02:00 committed by GitHub
commit 11b6d009a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2028 changed files with 61710 additions and 35712 deletions

View file

@ -25,10 +25,6 @@
**/src/typings/**/*.d.ts **/src/typings/**/*.d.ts
**/src/vs/*/**/*.d.ts **/src/vs/*/**/*.d.ts
**/src/vs/base/test/common/filters.perf.data.js **/src/vs/base/test/common/filters.perf.data.js
**/src/vs/css.build.js
**/src/vs/css.js
**/src/vs/loader.js **/src/vs/loader.js
**/src/vs/nls.build.js
**/src/vs/nls.js
**/test/unit/assert.js **/test/unit/assert.js
**/typings/** **/typings/**

View file

@ -220,15 +220,11 @@
// - electron-main // - electron-main
"when": "hasNode", "when": "hasNode",
"allow": [ "allow": [
"@microsoft/applicationinsights-web",
"@parcel/watcher", "@parcel/watcher",
"@vscode/sqlite3", "@vscode/sqlite3",
"@vscode/vscode-languagedetection", "@vscode/vscode-languagedetection",
"@vscode/ripgrep", "@vscode/ripgrep",
"@vscode/iconv-lite-umd", "@vscode/iconv-lite-umd",
"applicationinsights",
"@microsoft/1ds-core-js",
"@microsoft/1ds-post-js",
"assert", "assert",
"child_process", "child_process",
"console", "console",
@ -263,6 +259,7 @@
"windows-process-tree", "windows-process-tree",
"worker_threads", "worker_threads",
"xterm", "xterm",
"xterm-addon-canvas",
"xterm-addon-search", "xterm-addon-search",
"xterm-addon-serialize", "xterm-addon-serialize",
"xterm-addon-unicode11", "xterm-addon-unicode11",
@ -277,6 +274,7 @@
// imports that are allowed in all /test/ files // imports that are allowed in all /test/ files
"when": "test", "when": "test",
"allow": [ "allow": [
"vs/css.build",
"assert", "assert",
"sinon", "sinon",
"sinon-test" "sinon-test"
@ -331,7 +329,9 @@
"vs/base/~", "vs/base/~",
"vs/base/parts/*/~", "vs/base/parts/*/~",
"vs/platform/*/~", "vs/platform/*/~",
"tas-client-umd" // node module allowed even in /common/ "tas-client-umd", // node module allowed even in /common/
"@microsoft/1ds-core-js",// node module allowed even in /common/
"@microsoft/1ds-post-js" // node module allowed even in /common/
] ]
}, },
{ {
@ -445,8 +445,7 @@
}, // TODO@layers }, // TODO@layers
"tas-client-umd", // node module allowed even in /common/ "tas-client-umd", // node module allowed even in /common/
"vscode-textmate", // node module allowed even in /common/ "vscode-textmate", // node module allowed even in /common/
"@vscode/vscode-languagedetection", // node module allowed even in /common/ "@vscode/vscode-languagedetection" // node module allowed even in /common/
"@microsoft/applicationinsights-web" // node module allowed even in /common/
] ]
}, },
{ {
@ -537,7 +536,7 @@
] ]
}, },
{ {
"target": "src/vs/workbench/{workbench.sandbox.main.ts,workbench.desktop.sandbox.main.ts}", "target": "src/vs/workbench/workbench.desktop.main.ts",
"layer": "electron-sandbox", "layer": "electron-sandbox",
"restrictions": [ "restrictions": [
"vs/base/*/~", "vs/base/*/~",
@ -550,26 +549,7 @@
"vs/workbench/api/~", "vs/workbench/api/~",
"vs/workbench/services/*/~", "vs/workbench/services/*/~",
"vs/workbench/contrib/*/~", "vs/workbench/contrib/*/~",
"vs/workbench/workbench.common.main", "vs/workbench/workbench.common.main"
"vs/workbench/workbench.sandbox.main"
]
},
{
"target": "src/vs/workbench/workbench.desktop.main.ts",
"layer": "electron-browser",
"restrictions": [
"vs/base/*/~",
"vs/base/parts/*/~",
"vs/platform/*/~",
"vs/editor/~",
"vs/editor/contrib/*/~",
"vs/editor/editor.all",
"vs/workbench/~",
"vs/workbench/api/~",
"vs/workbench/services/*/~",
"vs/workbench/contrib/*/~",
"vs/workbench/workbench.common.main",
"vs/workbench/workbench.sandbox.main"
] ]
}, },
{ {
@ -577,7 +557,7 @@
"restrictions": [] "restrictions": []
}, },
{ {
"target": "src/vs/{css.d.ts,monaco.d.ts,nls.d.ts,nls.mock.ts}", "target": "src/vs/{loader.d.ts,css.ts,css.build.ts,monaco.d.ts,nls.ts,nls.build.ts,nls.mock.ts}",
"restrictions": [] "restrictions": []
}, },
{ {

View file

@ -145,7 +145,7 @@
"snippets": {"assign": ["jrieken"]}, "snippets": {"assign": ["jrieken"]},
"splitview": {"assign": ["joaomoreno"]}, "splitview": {"assign": ["joaomoreno"]},
"suggest": {"assign": ["jrieken"]}, "suggest": {"assign": ["jrieken"]},
"tasks": {"assign": ["alexr00"], "accuracy": 0.85}, "tasks": {"assign": ["meganrogge"], "accuracy": 0.85},
"telemetry": {"assign": []}, "telemetry": {"assign": []},
"themes": {"assign": ["aeschli"]}, "themes": {"assign": ["aeschli"]},
"timeline": {"assign": ["lramos15"]}, "timeline": {"assign": ["lramos15"]},

66
.github/commands.json vendored
View file

@ -15,30 +15,35 @@
"type": "label", "type": "label",
"name": "*question", "name": "*question",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "We closed this issue because it is a question about using VS Code rather than an issue or feature request. Please search for help on [StackOverflow](https://aka.ms/vscodestackoverflow), where the community has already answered thousands of similar questions. You may find their [guide on asking a new question](https://aka.ms/vscodestackoverflowquestion) helpful if your question has not already been asked. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "We closed this issue because it is a question about using VS Code rather than an issue or feature request. Please search for help on [StackOverflow](https://aka.ms/vscodestackoverflow), where the community has already answered thousands of similar questions. You may find their [guide on asking a new question](https://aka.ms/vscodestackoverflowquestion) helpful if your question has not already been asked. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "*dev-question", "name": "*dev-question",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "We have a great developer community [over on slack](https://aka.ms/vscode-dev-community) where extension authors help each other. This is a great place for you to ask questions and find support.\n\nHappy Coding!" "comment": "We have a great developer community [over on slack](https://aka.ms/vscode-dev-community) where extension authors help each other. This is a great place for you to ask questions and find support.\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "*extension-candidate", "name": "*extension-candidate",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the [VS Code Marketplace](https://aka.ms/vscodemarketplace). Just in case, in a few simple steps you can get started [writing your own extension](https://aka.ms/vscodewritingextensions). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the [VS Code Marketplace](https://aka.ms/vscodemarketplace). Just in case, in a few simple steps you can get started [writing your own extension](https://aka.ms/vscodewritingextensions). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "*not-reproducible", "name": "*not-reproducible",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "We closed this issue because we are unable to reproduce the problem with the steps you describe. Chances are we've already fixed your problem in a recent version of VS Code. If not, please ask us to reopen the issue and provide us with more detail. Our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) might help you with that.\n\nHappy Coding!" "comment": "We closed this issue because we are unable to reproduce the problem with the steps you describe. Chances are we've already fixed your problem in a recent version of VS Code. If not, please ask us to reopen the issue and provide us with more detail. Our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) might help you with that.\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "*out-of-scope", "name": "*out-of-scope",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "We closed this issue because we [don't plan to address it](https://aka.ms/vscode-out-of-scope) in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.\n\nIf you wonder what we are up to, please see our [roadmap](https://aka.ms/vscoderoadmap) and [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nThanks for your understanding, and happy coding!" "comment": "We closed this issue because we [don't plan to address it](https://aka.ms/vscode-out-of-scope) in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.\n\nIf you wonder what we are up to, please see our [roadmap](https://aka.ms/vscoderoadmap) and [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nThanks for your understanding, and happy coding!"
}, },
{ {
@ -57,12 +62,14 @@
"type": "label", "type": "label",
"name": "*caused-by-extension", "name": "*caused-by-extension",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the [marketplace](https://aka.ms/vscodemarketplace) for VS Code. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the [marketplace](https://aka.ms/vscodemarketplace) for VS Code. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "*as-designed", "name": "*as-designed",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
@ -104,6 +111,7 @@
"type": "label", "type": "label",
"name": "*duplicate", "name": "*duplicate",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for [similar existing issues](${duplicateQuery}). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for [similar existing issues](${duplicateQuery}). See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
@ -154,7 +162,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "updateLabels", "action": "updateLabels",
"addLabel": "~needs more info" "addLabel": "~info-needed"
}, },
{ {
"type": "comment", "type": "comment",
@ -165,14 +173,14 @@
"gjsjohnmurray", "gjsjohnmurray",
"IllusionMH" "IllusionMH"
], ],
"addLabel": "needs more info", "addLabel": "info-needed",
"comment": "Thanks for creating this issue regarding performance! Please follow this guide to help us diagnose performance issues: https://github.com/microsoft/vscode/wiki/Performance-Issues \n\nHappy Coding!" "comment": "Thanks for creating this issue regarding performance! Please follow this guide to help us diagnose performance issues: https://github.com/microsoft/vscode/wiki/Performance-Issues \n\nHappy Coding!"
}, },
{ {
"type": "comment", "type": "comment",
"name": "jsDebugLogs", "name": "jsDebugLogs",
"action": "updateLabels", "action": "updateLabels",
"addLabel": "needs more info", "addLabel": "info-needed",
"comment": "Please collect trace logs using the following instructions:\n\n> If you're able to, add `\"trace\": true` to your `launch.json` and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.\n>\n> ⚠️ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to connor@xbox.com" "comment": "Please collect trace logs using the following instructions:\n\n> If you're able to, add `\"trace\": true` to your `launch.json` and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.\n>\n> ⚠️ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to connor@xbox.com"
}, },
{ {
@ -185,22 +193,23 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "completed",
"addLabel": "unreleased" "addLabel": "unreleased"
}, },
{ {
"type": "label", "type": "label",
"name": "~needs more info", "name": "~info-needed",
"action": "updateLabels", "action": "updateLabels",
"addLabel": "needs more info", "addLabel": "info-needed",
"removeLabel": "~needs more info", "removeLabel": "~info-needed",
"comment": "Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nHappy Coding!" "comment": "Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nHappy Coding!"
}, },
{ {
"type": "label", "type": "label",
"name": "~needs version info", "name": "~version-info-needed",
"action": "updateLabels", "action": "updateLabels",
"addLabel": "needs more info", "addLabel": "info-needed",
"removeLabel": "~needs version info", "removeLabel": "~version-info-needed",
"comment": "Thanks for creating this issue! We figured it's missing some basic information, such as a version number, or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nHappy Coding!" "comment": "Thanks for creating this issue! We figured it's missing some basic information, such as a version number, or in some other way doesn't follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting). Please take the time to review these and update the issue.\n\nHappy Coding!"
}, },
{ {
@ -222,6 +231,7 @@
"type": "label", "type": "label",
"name": "*off-topic", "name": "*off-topic",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "Thanks for creating this issue. We think this issue is unactionable or unrelated to the goals of this project. Please follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!" "comment": "Thanks for creating this issue. We think this issue is unactionable or unrelated to the goals of this project. Please follow our [issue reporting guidelines](https://aka.ms/vscodeissuereporting).\n\nHappy Coding!"
}, },
{ {
@ -234,6 +244,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Python extension. Please file the issue to the [Python extension repository](https://github.com/microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the Python extension. Please file the issue to the [Python extension repository](https://github.com/microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -247,6 +258,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Jupyter extension. Please file the issue to the [Jupyter extension repository](https://github.com/microsoft/vscode-jupyter). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the Jupyter extension. Please file the issue to the [Jupyter extension repository](https://github.com/microsoft/vscode-jupyter). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -260,6 +272,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the C extension. Please file the issue to the [C extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the C extension. Please file the issue to the [C extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -273,6 +286,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -286,6 +300,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the C++ extension. Please file the issue to the [C++ extension repository](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -299,6 +314,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the TypeScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the TypeScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -312,6 +328,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the TypeScript/JavaScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the TypeScript/JavaScript language service. Please file the issue to the [TypeScript repository](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -325,6 +342,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the C# extension. Please file the issue to the [C# extension repository](https://github.com/OmniSharp/omnisharp-vscode.git). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the C# extension. Please file the issue to the [C# extension repository](https://github.com/OmniSharp/omnisharp-vscode.git). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -351,6 +369,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the PowerShell extension. Please file the issue to the [PowerShell extension repository](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the PowerShell extension. Please file the issue to the [PowerShell extension repository](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -364,6 +383,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the LiveShare extension. Please file the issue to the [LiveShare repository](https://github.com/MicrosoftDocs/live-share). Make sure to check their [contributing guidelines](https://github.com/MicrosoftDocs/live-share/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the LiveShare extension. Please file the issue to the [LiveShare repository](https://github.com/MicrosoftDocs/live-share). Make sure to check their [contributing guidelines](https://github.com/MicrosoftDocs/live-share/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -377,6 +397,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Docker extension. Please file the issue to the [Docker extension repository](https://github.com/microsoft/vscode-docker). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the Docker extension. Please file the issue to the [Docker extension repository](https://github.com/microsoft/vscode-docker). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -390,6 +411,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Java extension. Please file the issue to the [Java extension repository](https://github.com/redhat-developer/vscode-java). Make sure to check their [troubleshooting instructions](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the Java extension. Please file the issue to the [Java extension repository](https://github.com/redhat-developer/vscode-java). Make sure to check their [troubleshooting instructions](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) and provide relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
@ -403,9 +425,24 @@
"IllusionMH" "IllusionMH"
], ],
"action": "close", "action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension", "addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Java Debugger extension. Please file the issue to the [Java Debugger repository](https://github.com/microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!" "comment": "It looks like this is caused by the Java Debugger extension. Please file the issue to the [Java Debugger repository](https://github.com/microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
}, },
{
"type": "comment",
"name": "extCodespaces",
"allowUsers": [
"cleidigh",
"usernamehw",
"gjsjohnmurray",
"IllusionMH"
],
"action": "close",
"reason": "not_planned",
"addLabel": "*caused-by-extension",
"comment": "It looks like this is caused by the Codespaces extension. Please file the issue in the [Codespaces Discussion Forum](http://aka.ms/ghcs-feedback). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting guidelines](https://aka.ms/vscodeissuereporting) for more information.\n\nHappy Coding!"
},
{ {
"type": "comment", "type": "comment",
"name": "gifPlease", "name": "gifPlease",
@ -416,7 +453,7 @@
"IllusionMH" "IllusionMH"
], ],
"action": "comment", "action": "comment",
"addLabel": "needs more info", "addLabel": "info-needed",
"comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.\n\nIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette).\n\nHappy coding!" "comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.\n\nIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette).\n\nHappy coding!"
}, },
{ {
@ -439,6 +476,15 @@
"type": "label", "type": "label",
"name": "*workspace-trust-docs", "name": "*workspace-trust-docs",
"action": "close", "action": "close",
"reason": "not_planned",
"comment": "This issue appears to be the result of the new workspace trust feature shipped in June 2021. This security-focused feature has major impact on the functionality of VS Code. Due to the volume of issues, we ask that you take some time to review our [comprehensive documentation](https://aka.ms/vscode-workspace-trust) on the feature. If your issue is still not resolved, please let us know." "comment": "This issue appears to be the result of the new workspace trust feature shipped in June 2021. This security-focused feature has major impact on the functionality of VS Code. Due to the volume of issues, we ask that you take some time to review our [comprehensive documentation](https://aka.ms/vscode-workspace-trust) on the feature. If your issue is still not resolved, please let us know."
},
{
"type": "label",
"name": "~verification-steps-needed",
"action": "updateLabels",
"addLabel": "verification-steps-needed",
"removeLabel": "~verification-steps-needed",
"comment": "Friendly ping! Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue."
} }
] ]

View file

@ -5,5 +5,3 @@
* Ensure that the code is up-to-date with the `main` branch. * Ensure that the code is up-to-date with the `main` branch.
* Include a description of the proposed changes and how to test them. * Include a description of the proposed changes and how to test them.
--> -->
This PR fixes #

View file

@ -22,8 +22,6 @@ jobs:
# TODO: rename azure-pipelines/linux/xvfb.init to github-actions # TODO: rename azure-pipelines/linux/xvfb.init to github-actions
- name: Setup Build Environment - name: Setup Build Environment
run: | run: |
sudo apt-get update
sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1
sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
sudo chmod +x /etc/init.d/xvfb sudo chmod +x /etc/init.d/xvfb
sudo update-rc.d xvfb defaults sudo update-rc.d xvfb defaults
@ -41,8 +39,7 @@ jobs:
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesLinux-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
@ -62,10 +59,7 @@ jobs:
run: yarn --frozen-lockfile --network-timeout 180000 run: yarn --frozen-lockfile --network-timeout 180000
- name: Compile and Download - name: Compile and Download
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64"
- name: Compile Integration Tests
run: yarn --cwd test/integration/browser compile
- name: Run Unit Tests - name: Run Unit Tests
id: electron-unit-tests id: electron-unit-tests
@ -97,8 +91,7 @@ jobs:
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesLinux-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
@ -117,9 +110,6 @@ jobs:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1 ELECTRON_SKIP_BINARY_DOWNLOAD: 1
run: yarn --frozen-lockfile --network-timeout 180000 run: yarn --frozen-lockfile --network-timeout 180000
- name: Download Playwright
run: yarn playwright-install
- name: Run Hygiene Checks - name: Run Hygiene Checks
run: yarn gulp hygiene run: yarn gulp hygiene
@ -163,8 +153,7 @@ jobs:
uses: actions/cache@v3 uses: actions/cache@v3
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesLinux-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}

View file

@ -125,8 +125,7 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesLinux-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
@ -197,8 +196,7 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesMacOS-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
@ -271,8 +269,7 @@ jobs:
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: "**/node_modules" path: "**/node_modules"
key: ${{ runner.os }}-cacheNodeModules22-${{ steps.nodeModulesCacheKey.outputs.value }} key: ${{ runner.os }}-cacheNodeModulesLinux-${{ steps.nodeModulesCacheKey.outputs.value }}
restore-keys: ${{ runner.os }}-cacheNodeModules22-
- name: Get yarn cache directory path - name: Get yarn cache directory path
id: yarnCacheDirPath id: yarnCacheDirPath
if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}

View file

@ -24,14 +24,14 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v2
with: with:
languages: javascript languages: javascript
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v1 uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell. # Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
@ -45,4 +45,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v2

View file

@ -46,7 +46,7 @@ jobs:
uses: ./actions/classifier-deep/apply/apply-labels uses: ./actions/classifier-deep/apply/apply-labels
with: with:
configPath: classifier configPath: classifier
allowLabels: "needs more info|new release|error-telemetry|*english-please|translation-required" allowLabels: "info-needed|new release|error-telemetry|*english-please|translation-required"
appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
manifestDbConnectionString: ${{secrets.MANIFEST_DB_CONNECTION_STRING}} manifestDbConnectionString: ${{secrets.MANIFEST_DB_CONNECTION_STRING}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}

View file

@ -24,6 +24,6 @@ jobs:
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}} cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please" nonEnglishLabel: "*english-please"
needsMoreInfoLabel: "needs more info" needsMoreInfoLabel: "info-needed"
translatorRequestedLabelPrefix: "translation-required-" translatorRequestedLabelPrefix: "translation-required-"
translatorRequestedLabelColor: "c29cff" translatorRequestedLabelColor: "c29cff"

View file

@ -1,4 +1,4 @@
name: Needs More Info Closer name: info-needed Closer
on: on:
schedule: schedule:
- cron: 20 11 * * * # 4:20am Redmond - cron: 20 11 * * * # 4:20am Redmond
@ -17,12 +17,12 @@ jobs:
ref: stable ref: stable
- name: Install Actions - name: Install Actions
run: npm install --production --prefix ./actions run: npm install --production --prefix ./actions
- name: Run Needs More Info Closer - name: Run info-needed Closer
uses: ./actions/needs-more-info-closer uses: ./actions/needs-more-info-closer
with: with:
appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
label: needs more info label: info-needed
closeDays: 7 closeDays: 7
additionalTeam: "cleidigh|usernamehw|gjsjohnmurray|IllusionMH" additionalTeam: "cleidigh|usernamehw|gjsjohnmurray|IllusionMH"
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!" closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"

View file

@ -18,8 +18,9 @@ jobs:
run: | run: |
echo "user: ${{ github.event.pull_request.user.login }}" echo "user: ${{ github.event.pull_request.user.login }}"
echo "role: ${{ fromJson(steps.get_permissions.outputs.data).permission }}" echo "role: ${{ fromJson(steps.get_permissions.outputs.data).permission }}"
echo "is dependabot: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}"
echo "should_run: ${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}" echo "should_run: ${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}"
echo "::set-output name=should_run::${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}" echo "::set-output name=should_run::${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) && github.event.pull_request.user.login != 'dependabot[bot]' }}"
- name: Get file changes - name: Get file changes
uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272 uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272
if: ${{ steps.control.outputs.should_run == 'true' }} if: ${{ steps.control.outputs.should_run == 'true' }}

View file

@ -71,7 +71,8 @@ jobs:
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item') if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
uses: ./actions/test-plan-item-validator uses: ./actions/test-plan-item-validator
with: with:
appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
refLabel: on-testplan
label: testplan-item label: testplan-item
invalidLabel: invalid-testplan-item invalidLabel: invalid-testplan-item
comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved. comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.
@ -85,6 +86,6 @@ jobs:
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}} cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please" nonEnglishLabel: "*english-please"
needsMoreInfoLabel: "needs more info" needsMoreInfoLabel: "info-needed"
translatorRequestedLabelPrefix: "translation-required-" translatorRequestedLabelPrefix: "translation-required-"
translatorRequestedLabelColor: "c29cff" translatorRequestedLabelColor: "c29cff"

View file

@ -59,6 +59,16 @@ jobs:
appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}} cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please" nonEnglishLabel: "*english-please"
needsMoreInfoLabel: "needs more info" needsMoreInfoLabel: "info-needed"
translatorRequestedLabelPrefix: "translation-required-" translatorRequestedLabelPrefix: "translation-required-"
translatorRequestedLabelColor: "c29cff" translatorRequestedLabelColor: "c29cff"
# source of truth in ./test-plan-item-validator.yml
- name: Run Test Plan Item Validator
uses: ./actions/test-plan-item-validator
with:
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
refLabel: on-testplan
label: testplan-item
invalidLabel: invalid-testplan-item
comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.

View file

@ -3,7 +3,7 @@ on:
issues: issues:
types: [edited] types: [edited]
# also edit in ./on-label.yml # also edit in ./on-label.yml and ./on-open.yml
jobs: jobs:
main: main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -22,7 +22,8 @@ jobs:
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item') if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
uses: ./actions/test-plan-item-validator uses: ./actions/test-plan-item-validator
with: with:
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
refLabel: on-testplan
label: testplan-item label: testplan-item
appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
invalidLabel: invalid-testplan-item invalidLabel: invalid-testplan-item
comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved. comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.

1
.nvmrc Normal file
View file

@ -0,0 +1 @@
16.14

53
.vscode/launch.json vendored
View file

@ -24,7 +24,7 @@
] ]
}, },
{ {
"type": "pwa-chrome", "type": "chrome",
"request": "attach", "request": "attach",
"name": "Attach to Shared Process", "name": "Attach to Shared Process",
"timeout": 30000, "timeout": 30000,
@ -92,6 +92,23 @@
"order": 6 "order": 6
} }
}, },
{
"type": "extensionHost",
"request": "launch",
"name": "VS Code Configuration Editing Tests",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/extensions/configuration-editing",
"--extensionTestsPath=${workspaceFolder}/extensions/configuration-editing/out/test"
],
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
"presentation": {
"group": "5_tests",
"order": 6
}
},
{ {
"type": "extensionHost", "type": "extensionHost",
"request": "launch", "request": "launch",
@ -185,25 +202,7 @@
} }
}, },
{ {
"type": "extensionHost", "type": "chrome",
"request": "launch",
"name": "VS Code Custom Editor Tests",
"runtimeExecutable": "${execPath}",
"args": [
"${workspaceFolder}/extensions/vscode-custom-editor-tests/test-workspace",
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-custom-editor-tests",
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-custom-editor-tests/out/test"
],
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
"presentation": {
"group": "5_tests",
"order": 6
}
},
{
"type": "pwa-chrome",
"request": "attach", "request": "attach",
"name": "Attach to VS Code", "name": "Attach to VS Code",
"browserAttachLocation": "workspace", "browserAttachLocation": "workspace",
@ -217,7 +216,7 @@
"perScriptSourcemaps": "yes" "perScriptSourcemaps": "yes"
}, },
{ {
"type": "pwa-chrome", "type": "chrome",
"request": "launch", "request": "launch",
"name": "Launch VS Code Internal", "name": "Launch VS Code Internal",
"windows": { "windows": {
@ -259,7 +258,7 @@
} }
}, },
{ {
"type": "pwa-node", "type": "node",
"request": "launch", "request": "launch",
"name": "VS Code Server (Web)", "name": "VS Code Server (Web)",
"runtimeExecutable": "${workspaceFolder}/scripts/code-server.sh", "runtimeExecutable": "${workspaceFolder}/scripts/code-server.sh",
@ -275,7 +274,7 @@
} }
}, },
{ {
"type": "pwa-node", "type": "node",
"request": "launch", "request": "launch",
"name": "Main Process", "name": "Main Process",
"attachSimplePort": 5875, "attachSimplePort": 5875,
@ -296,7 +295,7 @@
} }
}, },
{ {
"type": "pwa-chrome", "type": "chrome",
"request": "launch", "request": "launch",
"outFiles": [], "outFiles": [],
"perScriptSourcemaps": "yes", "perScriptSourcemaps": "yes",
@ -309,7 +308,7 @@
} }
}, },
{ {
"type": "pwa-msedge", "type": "msedge",
"request": "launch", "request": "launch",
"outFiles": [], "outFiles": [],
"perScriptSourcemaps": "yes", "perScriptSourcemaps": "yes",
@ -404,7 +403,7 @@
} }
}, },
{ {
"type": "pwa-node", "type": "node",
"request": "launch", "request": "launch",
"name": "Run Unit Tests", "name": "Run Unit Tests",
"program": "${workspaceFolder}/test/unit/electron/index.js", "program": "${workspaceFolder}/test/unit/electron/index.js",
@ -434,7 +433,7 @@
} }
}, },
{ {
"type": "pwa-node", "type": "node",
"request": "launch", "request": "launch",
"name": "Run Unit Tests For Current File", "name": "Run Unit Tests For Current File",
"program": "${workspaceFolder}/test/unit/electron/index.js", "program": "${workspaceFolder}/test/unit/electron/index.js",

View file

@ -7,7 +7,7 @@
{ {
"kind": 2, "kind": 2,
"language": "github-issues", "language": "github-issues",
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"June 2022\"" "value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"August 2022\""
}, },
{ {
"kind": 1, "kind": 1,

View file

@ -7,7 +7,7 @@
{ {
"kind": 2, "kind": 2,
"language": "github-issues", "language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-unpkg\r\n\r\n$MILESTONE=milestone:\"May 2022\"" "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-unpkg\n\n$MILESTONE=milestone:\"July 2022\""
}, },
{ {
"kind": 1, "kind": 1,

View file

@ -7,7 +7,7 @@
{ {
"kind": 2, "kind": 2,
"language": "github-issues", "language": "github-issues",
"value": "$inbox -label:\"needs more info\" sort:created-desc" "value": "$inbox -label:\"info-needed\" sort:created-desc"
}, },
{ {
"kind": 2, "kind": 2,

View file

@ -7,7 +7,7 @@
{ {
"kind": 2, "kind": 2,
"language": "github-issues", "language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal\n\n$MILESTONE=milestone:\"May 2022\"\n\n$MINE=assignee:@me" "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal\n\n$MILESTONE=milestone:\"July 2022\"\n\n$MINE=assignee:@me"
}, },
{ {
"kind": 1, "kind": 1,
@ -147,7 +147,7 @@
{ {
"kind": 2, "kind": 2,
"language": "github-issues", "language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:needs-triage -label:verification-found" "value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:triage-needed -label:verification-found"
}, },
{ {
"kind": 1, "kind": 1,

File diff suppressed because one or more lines are too long

View file

@ -73,6 +73,7 @@
], ],
"git.branchProtectionPrompt": "alwaysCommitToNewBranch", "git.branchProtectionPrompt": "alwaysCommitToNewBranch",
"git.branchRandomName.enable": true, "git.branchRandomName.enable": true,
"git.mergeEditor": true,
"remote.extensionKind": { "remote.extensionKind": {
"msjsdiag.debugger-for-chrome": "workspace" "msjsdiag.debugger-for-chrome": "workspace"
}, },

View file

@ -1,4 +1,4 @@
disturl "https://electronjs.org/headers" disturl "https://electronjs.org/headers"
target "18.3.2" target "19.0.12"
runtime "electron" runtime "electron"
build_from_source "true" build_from_source "true"

View file

@ -7,7 +7,7 @@ This project incorporates components from the projects listed below. The origina
1. atom/language-clojure version 0.22.8 (https://github.com/atom/language-clojure) 1. atom/language-clojure version 0.22.8 (https://github.com/atom/language-clojure)
2. atom/language-coffee-script version 0.49.3 (https://github.com/atom/language-coffee-script) 2. atom/language-coffee-script version 0.49.3 (https://github.com/atom/language-coffee-script)
3. atom/language-css version 0.45.0 (https://github.com/atom/language-css) 3. atom/language-css version 0.45.1 (https://github.com/atom/language-css)
4. atom/language-java version 0.32.1 (https://github.com/atom/language-java) 4. atom/language-java version 0.32.1 (https://github.com/atom/language-java)
5. atom/language-sass version 0.62.1 (https://github.com/atom/language-sass) 5. atom/language-sass version 0.62.1 (https://github.com/atom/language-sass)
6. atom/language-shellscript version 0.28.2 (https://github.com/atom/language-shellscript) 6. atom/language-shellscript version 0.28.2 (https://github.com/atom/language-shellscript)
@ -30,50 +30,53 @@ This project incorporates components from the projects listed below. The origina
23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site) 23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) 24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
25. James-Yu/LaTeX-Workshop version 8.19.1 (https://github.com/James-Yu/LaTeX-Workshop) 25. James-Yu/LaTeX-Workshop version 8.19.1 (https://github.com/James-Yu/LaTeX-Workshop)
26. jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar) 26. jeff-hykin/better-c-syntax version 1.13.2 (https://github.com/jeff-hykin/better-c-syntax)
27. jeff-hykin/cpp-textmate-grammar version 1.15.6 (https://github.com/jeff-hykin/cpp-textmate-grammar) 27. jeff-hykin/better-cpp-syntax version 1.15.18 (https://github.com/jeff-hykin/better-cpp-syntax)
28. jlelong/vscode-latex-basics version 1.3.0 (https://github.com/jlelong/vscode-latex-basics) 28. jeff-hykin/better-objc-syntax version 0.2.0 (https://github.com/jeff-hykin/better-objc-syntax)
29. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify) 29. jeff-hykin/better-objcpp-syntax version 0.1.0 (https://github.com/jeff-hykin/better-objcpp-syntax)
30. JuliaEditorSupport/atom-language-julia version 0.22.1 (https://github.com/JuliaEditorSupport/atom-language-julia) 30. jlelong/vscode-latex-basics version 1.3.0 (https://github.com/jlelong/vscode-latex-basics)
31. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) 31. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
32. language-docker (https://github.com/moby/moby) 32. JuliaEditorSupport/atom-language-julia version 0.22.1 (https://github.com/JuliaEditorSupport/atom-language-julia)
33. language-less version 0.34.2 (https://github.com/atom/language-less) 33. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
34. language-php version 0.48.1 (https://github.com/atom/language-php) 34. language-docker (https://github.com/moby/moby)
35. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython) 35. language-less version 0.34.2 (https://github.com/atom/language-less)
36. marked version 4.0.16 (https://github.com/markedjs/marked) 36. language-php version 0.48.1 (https://github.com/atom/language-php)
37. mdn-data version 1.1.12 (https://github.com/mdn/data) 37. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
38. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage) 38. marked version 4.0.16 (https://github.com/markedjs/marked)
39. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage) 39. mdn-data version 1.1.12 (https://github.com/mdn/data)
40. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar) 40. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage)
41. microsoft/vscode-mssql version 1.10.1 (https://github.com/microsoft/vscode-mssql) 41. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage)
42. mmims/language-batchfile version 0.7.6 (https://github.com/mmims/language-batchfile) 42. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar)
43. NVIDIA/cuda-cpp-grammar (https://github.com/NVIDIA/cuda-cpp-grammar) 43. microsoft/vscode-mssql version 1.16.0 (https://github.com/microsoft/vscode-mssql)
44. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax) 44. mmims/language-batchfile version 0.7.6 (https://github.com/mmims/language-batchfile)
45. rust-syntax version 0.5.0 (https://github.com/dustypomerleau/rust-syntax) 45. NVIDIA/cuda-cpp-grammar (https://github.com/NVIDIA/cuda-cpp-grammar)
46. semver version 5.5.0 (https://github.com/npm/node-semver) 46. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax)
47. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui) 47. rust-syntax version 0.5.0 (https://github.com/dustypomerleau/rust-syntax)
48. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage) 48. semver version 5.5.0 (https://github.com/npm/node-semver)
49. sumneko/lua.tmbundle version 1.0.0 (https://github.com/sumneko/lua.tmbundle) 49. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
50. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle) 50. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
51. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle) 51. sumneko/lua.tmbundle version 1.0.0 (https://github.com/sumneko/lua.tmbundle)
52. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle) 52. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
53. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle) 53. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
54. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle) 54. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
55. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle) 55. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
56. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle) 56. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
57. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle) 57. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
58. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle) 58. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
59. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle) 59. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
60. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle) 60. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
61. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle) 61. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
62. trond-snekvik/vscode-rst version 1.5.1 (https://github.com/trond-snekvik/vscode-rst) 62. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
63. TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage) 63. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
64. TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage) 64. trond-snekvik/vscode-rst version 1.5.1 (https://github.com/trond-snekvik/vscode-rst)
65. Unicode version 12.0.0 (https://home.unicode.org/) 65. TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage)
66. vscode-codicons version 0.0.14 (https://github.com/microsoft/vscode-codicons) 66. TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage)
67. vscode-logfile-highlighter version 2.11.0 (https://github.com/emilast/vscode-logfile-highlighter) 67. Unicode version 12.0.0 (https://home.unicode.org/)
68. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift) 68. vscode-codicons version 0.0.14 (https://github.com/microsoft/vscode-codicons)
69. Web Background Synchronization (https://github.com/WICG/background-sync) 69. vscode-logfile-highlighter version 2.15.0 (https://github.com/emilast/vscode-logfile-highlighter)
70. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
71. vscode-win32-app-container-tokens (https://github.com/microsoft/vscode-win32-app-container-tokens)
72. Web Background Synchronization (https://github.com/WICG/background-sync)
%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE %% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
@ -1208,7 +1211,7 @@ SOFTWARE.
========================================= =========================================
END OF James-Yu/LaTeX-Workshop NOTICES AND INFORMATION END OF James-Yu/LaTeX-Workshop NOTICES AND INFORMATION
%% jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION BEGIN HERE %% jeff-hykin/better-c-syntax NOTICES AND INFORMATION BEGIN HERE
========================================= =========================================
MIT License MIT License
@ -1232,7 +1235,85 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
========================================= =========================================
END OF jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION END OF jeff-hykin/better-c-syntax NOTICES AND INFORMATION
%% jeff-hykin/better-cpp-syntax NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License
Copyright (c) 2019 Jeff Hykin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF jeff-hykin/better-cpp-syntax NOTICES AND INFORMATION
%% jeff-hykin/better-objc-syntax NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License
Copyright (c) 2019 Jeff Hykin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF jeff-hykin/better-objc-syntax NOTICES AND INFORMATION
%% jeff-hykin/better-objcpp-syntax NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License
Copyright (c) 2019 Jeff Hykin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF jeff-hykin/better-objcpp-syntax NOTICES AND INFORMATION
%% jlelong/vscode-latex-basics NOTICES AND INFORMATION BEGIN HERE %% jlelong/vscode-latex-basics NOTICES AND INFORMATION BEGIN HERE
========================================= =========================================
@ -3123,6 +3204,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SO
========================================= =========================================
END OF vscode-swift NOTICES AND INFORMATION END OF vscode-swift NOTICES AND INFORMATION
%% vscode-win32-app-container-tokens NOTICES AND INFORMATION BEGIN HERE
=========================================
MIT License
Copyright (c) Microsoft Corporation.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
=========================================
END OF vscode-win32-app-container-tokens NOTICES AND INFORMATION
%% Web Background Synchronization NOTICES AND INFORMATION BEGIN HERE %% Web Background Synchronization NOTICES AND INFORMATION BEGIN HERE
========================================= =========================================
Apache License Apache License

View file

@ -1 +1 @@
2022-06-10T10:20:54.664Z 2022-08-01T11:24:47.411Z

View file

@ -122,10 +122,6 @@ vscode-windows-ca-certs/**/*
node-addon-api/**/* node-addon-api/**/*
prebuild-install/**/* prebuild-install/**/*
@microsoft/applicationinsights*/**
@microsoft/dynamicproto-js/**
!@microsoft/applicationinsights-web/dist/applicationinsights-web.min.js
# other node modules # other node modules
**/docs/** **/docs/**

View file

@ -20,6 +20,9 @@ vscode-textmate/webpack.config.js
xterm/src/** xterm/src/**
xterm-addon-canvas/src/**
xterm-addon-canvas/out/**
xterm-addon-search/src/** xterm-addon-search/src/**
xterm-addon-search/out/** xterm-addon-search/out/**
xterm-addon-search/fixtures/** xterm-addon-search/fixtures/**
@ -33,6 +36,3 @@ xterm-addon-webgl/out/**
# This makes sure the model is included in the package # This makes sure the model is included in the package
!@vscode/vscode-languagedetection/model/** !@vscode/vscode-languagedetection/model/**
@microsoft/applicationinsights*/**
@microsoft/dynamicproto-js/**
!@microsoft/applicationinsights-web/dist/applicationinsights-web.min.js

View file

@ -0,0 +1,15 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../product.json'), 'utf8'));
const shasum = crypto.createHash('sha1');
for (const ext of productjson.builtInExtensions) {
shasum.update(`${ext.name}@${ext.version}`);
}
process.stdout.write(shasum.digest('hex'));

View file

@ -0,0 +1,17 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as fs from 'fs';
import * as path from 'path';
import * as crypto from 'crypto';
const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../product.json'), 'utf8'));
const shasum = crypto.createHash('sha1');
for (const ext of productjson.builtInExtensions) {
shasum.update(`${ext.name}@${ext.version}`);
}
process.stdout.write(shasum.digest('hex'));

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as fs from 'fs'; import * as fs from 'fs';
import * as path from 'path'; import * as path from 'path';
import * as crypto from 'crypto'; import * as crypto from 'crypto';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs"); const fs = require("fs");
const crypto = require("crypto"); const crypto = require("crypto");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as fs from 'fs'; import * as fs from 'fs';
import { Readable } from 'stream'; import { Readable } from 'stream';
import * as crypto from 'crypto'; import * as crypto from 'crypto';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const identity_1 = require("@azure/identity"); const identity_1 = require("@azure/identity");
const cosmos_1 = require("@azure/cosmos"); const cosmos_1 = require("@azure/cosmos");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import { ClientSecretCredential } from '@azure/identity'; import { ClientSecretCredential } from '@azure/identity';
import { CosmosClient } from '@azure/cosmos'; import { CosmosClient } from '@azure/cosmos';
import { retry } from './retry'; import { retry } from './retry';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as fs from 'fs'; import * as fs from 'fs';
import * as path from 'path'; import * as path from 'path';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const identity_1 = require("@azure/identity"); const identity_1 = require("@azure/identity");
const cosmos_1 = require("@azure/cosmos"); const cosmos_1 = require("@azure/cosmos");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import { ClientSecretCredential } from '@azure/identity'; import { ClientSecretCredential } from '@azure/identity';
import { CosmosClient } from '@azure/cosmos'; import { CosmosClient } from '@azure/cosmos';
import { retry } from './retry'; import { retry } from './retry';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.retry = void 0; exports.retry = void 0;
async function retry(fn) { async function retry(fn) {

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
export async function retry<T>(fn: () => Promise<T>): Promise<T> { export async function retry<T>(fn: () => Promise<T>): Promise<T> {
let lastError: Error | undefined; let lastError: Error | undefined;

View file

@ -1,7 +1,4 @@
steps: steps:
- checkout: self
fetchDepth: 1
- task: NodeTool@0 - task: NodeTool@0
inputs: inputs:
versionSpec: "16.x" versionSpec: "16.x"
@ -11,35 +8,107 @@ steps:
inputs: inputs:
azureSubscription: "vscode-builds-subscription" azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode KeyVaultName: vscode
SecretsFilter: "ESRP-PKI,esrp-aad-username,esrp-aad-password" SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
displayName: Prepare tooling
- script: |
set -e
git fetch https://github.com/$(VSCODE_MIXIN_REPO).git $VSCODE_DISTRO_REF
echo "##vso[task.setvariable variable=VSCODE_DISTRO_COMMIT;]$(git rev-parse FETCH_HEAD)"
git checkout FETCH_HEAD
condition: and(succeeded(), ne(variables.VSCODE_DISTRO_REF, ' '))
displayName: Checkout override commit
- script: |
set -e
git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
displayName: Merge distro
- script: |
mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js x64 $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
inputs: inputs:
key: "buildNodeModules | $(Agent.OS) | $(VSCODE_ARCH) | build/yarn.lock" key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: build/node_modules path: .build/node_modules_cache
cacheHitVar: BUILD_NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore build node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: |
set -e
tar -xzf .build/node_modules_cache/cache.tgz
displayName: Extract node_modules cache
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
npm install -g node-gyp@latest
node-gyp --version
displayName: Update node-gyp
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: | - script: |
set -e set -e
npx https://aka.ms/enablesecurefeed standAlone npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5 timeoutInMinutes: 5
retryCountOnTaskFailure: 3 retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['ENABLE_TERRAPIN'], 'true'), ne(variables.BUILD_NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages displayName: Switch to Terrapin packages
- script: | - script: |
set -e set -e
export npm_config_arch=$(VSCODE_ARCH)
export npm_config_node_gyp=$(which node-gyp)
for i in {1..3}; do # try 3 times, for Terrapin for i in {1..3}; do # try 3 times, for Terrapin
yarn --cwd build --frozen-lockfile --check-files && break yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2 echo "Yarn failed too many times" >&2
exit 1 exit 1
fi fi
echo "Yarn failed $i, trying again..." echo "Yarn failed $i, trying again..."
done done
displayName: Install build dependencies env:
condition: and(succeeded(), ne(variables.BUILD_NODE_MODULES_RESTORED, 'true')) ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: |
set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
mkdir -p .build/node_modules_cache
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Create node_modules archive
- download: current - download: current
artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive

View file

@ -1,4 +1,6 @@
parameters: parameters:
- name: VSCODE_QUALITY
type: string
- name: VSCODE_RUN_UNIT_TESTS - name: VSCODE_RUN_UNIT_TESTS
type: boolean type: boolean
- name: VSCODE_RUN_INTEGRATION_TESTS - name: VSCODE_RUN_INTEGRATION_TESTS
@ -14,30 +16,49 @@ steps:
displayName: Download Electron and Playwright displayName: Download Electron and Playwright
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- script: | - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
./scripts/test.sh --build --tfs "Unit Tests" set -e
displayName: Run unit tests (Electron) ./scripts/test.sh --tfs "Unit Tests"
timeoutInMinutes: 15 displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - script: |
- script: | set -e
set -e yarn test-node
yarn test-node --build displayName: Run unit tests (node.js)
displayName: Run unit tests (node.js) timeoutInMinutes: 15
timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - script: |
- script: | set -e
set -e DEBUG=*browser* yarn test-browser-no-install --sequential --browser chromium --browser webkit --tfs "Browser Unit Tests"
DEBUG=*browser* yarn test-browser-no-install --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests" displayName: Run unit tests (Browser, Chromium & Webkit)
displayName: Run unit tests (Browser, Chromium & Webkit) timeoutInMinutes: 30
timeoutInMinutes: 30
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- script: |
set -e
yarn test-node --build
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
- script: |
set -e
DEBUG=*browser* yarn test-browser-no-install --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser, Chromium & Webkit)
timeoutInMinutes: 30
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- script: | - script: |
set -e set -e
yarn gulp \ yarn gulp \
compile-extension:configuration-editing \
compile-extension:css-language-features-server \ compile-extension:css-language-features-server \
compile-extension:emmet \ compile-extension:emmet \
compile-extension:git \ compile-extension:git \
@ -45,49 +66,53 @@ steps:
compile-extension:html-language-features-server \ compile-extension:html-language-features-server \
compile-extension:ipynb \ compile-extension:ipynb \
compile-extension:json-language-features-server \ compile-extension:json-language-features-server \
compile-extension:markdown-language-features-server \
compile-extension:markdown-language-features \ compile-extension:markdown-language-features \
compile-extension-media \ compile-extension-media \
compile-extension:microsoft-authentication \ compile-extension:microsoft-authentication \
compile-extension:typescript-language-features \ compile-extension:typescript-language-features \
compile-extension:vscode-api-tests \ compile-extension:vscode-api-tests \
compile-extension:vscode-colorize-tests \ compile-extension:vscode-colorize-tests \
compile-extension:vscode-custom-editor-tests \
compile-extension:vscode-notebook-tests \ compile-extension:vscode-notebook-tests \
compile-extension:vscode-test-resolver compile-extension:vscode-test-resolver
displayName: Build integration tests displayName: Build integration tests
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
# Figure out the full absolute path of the product we just built ./scripts/test-integration.sh --tfs "Integration Tests"
# including the remote server and configure the integration tests displayName: Run integration tests (Electron)
# to run with these builds instead of running out of sources. timeoutInMinutes: 20
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
set -e # Figure out the full absolute path of the product we just built
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \ # including the remote server and configure the integration tests
./scripts/test-web-integration.sh --browser webkit # to run with these builds instead of running out of sources.
displayName: Run integration tests (Browser, Webkit) set -e
timeoutInMinutes: 20 APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - script: |
- script: | set -e
set -e VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) ./scripts/test-web-integration.sh --browser webkit
APP_NAME="`ls $APP_ROOT | head -n 1`" displayName: Run integration tests (Browser, Webkit)
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \ timeoutInMinutes: 20
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-remote-integration.sh - script: |
displayName: Run integration tests (Remote) set -e
timeoutInMinutes: 20 APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
./scripts/test-remote-integration.sh
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- script: | - script: |
@ -97,35 +122,44 @@ steps:
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
set -e set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \ yarn --cwd test/smoke compile
yarn smoketest-no-compile --web --tracing --headless displayName: Compile smoke tests
timeoutInMinutes: 20
displayName: Run smoke tests (Browser, Chromium)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - script: |
- script: | set -e
set -e yarn smoketest-no-compile --tracing
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) timeoutInMinutes: 20
APP_NAME="`ls $APP_ROOT | head -n 1`" displayName: Run smoke tests (Electron)
yarn smoketest-no-compile --tracing --build "$APP_ROOT/$APP_NAME"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
set -e set -e
yarn gulp compile-extension:vscode-test-resolver APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) APP_NAME="`ls $APP_ROOT | head -n 1`"
APP_NAME="`ls $APP_ROOT | head -n 1`" yarn smoketest-no-compile --tracing --build "$APP_ROOT/$APP_NAME"
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \ timeoutInMinutes: 20
yarn smoketest-no-compile --tracing --remote --build "$APP_ROOT/$APP_NAME" displayName: Run smoke tests (Electron)
timeoutInMinutes: 20
displayName: Run smoke tests (Remote) - script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --web --tracing --headless
timeoutInMinutes: 20
displayName: Run smoke tests (Browser, Chromium)
- script: |
set -e
yarn gulp compile-extension:vscode-test-resolver
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --tracing --remote --build "$APP_ROOT/$APP_NAME"
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- script: | - script: |
set -e set -e
ps -ef ps -ef
@ -147,7 +181,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
# In order to properly symbolify above crash reports # In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too # (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
@ -163,7 +196,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
inputs: inputs:
targetPath: .build/logs targetPath: .build/logs

View file

@ -38,6 +38,7 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js x64 $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js x64 $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
@ -47,10 +48,67 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: | - script: |
set -e set -e
tar -xzf .build/node_modules_cache/cache.tgz tar -xzf .build/node_modules_cache/cache.tgz
displayName: Extract node_modules cache displayName: Extract node_modules cache
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
npm install -g node-gyp@latest
node-gyp --version
displayName: Update node-gyp
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
export npm_config_arch=$(VSCODE_ARCH)
export npm_config_node_gyp=$(which node-gyp)
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: |
set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
mkdir -p .build/node_modules_cache
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Create node_modules archive
- script: | - script: |
set -e set -e

View file

@ -11,6 +11,11 @@ parameters:
type: boolean type: boolean
steps: steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- checkout: self
fetchDepth: 1
retryCountOnTaskFailure: 3
- task: NodeTool@0 - task: NodeTool@0
inputs: inputs:
versionSpec: "16.x" versionSpec: "16.x"
@ -23,16 +28,18 @@ steps:
KeyVaultName: vscode KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key" SecretsFilter: "github-distro-mixin-password,macos-developer-certificate,macos-developer-certificate-key"
- task: DownloadPipelineArtifact@2 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
inputs: - task: DownloadPipelineArtifact@2
artifact: Compilation inputs:
path: $(Build.ArtifactStagingDirectory) artifact: Compilation
displayName: Download compilation output path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz set -e
displayName: Extract compilation output tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
displayName: Extract compilation output
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
@ -65,6 +72,7 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
@ -74,19 +82,18 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: | - script: |
set -e set -e
tar -xzf .build/node_modules_cache/cache.tgz tar -xzf .build/node_modules_cache/cache.tgz
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Extract node_modules cache displayName: Extract node_modules cache
- script: |
set -e
npm install -g node-gyp@latest
node-gyp --version
displayName: Update node-gyp
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: | - script: |
set -e set -e
npx https://aka.ms/enablesecurefeed standAlone npx https://aka.ms/enablesecurefeed standAlone
@ -115,6 +122,13 @@ steps:
displayName: Install dependencies displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: | - script: |
set -e set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
@ -130,11 +144,12 @@ steps:
node build/azure-pipelines/mixin node build/azure-pipelines/mixin
displayName: Mix in quality displayName: Mix in quality
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ set -e
yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
displayName: Build client yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build client
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
@ -142,17 +157,26 @@ steps:
node build/azure-pipelines/mixin --server node build/azure-pipelines/mixin --server
displayName: Mix in server quality displayName: Mix in server quality
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ set -e
yarn gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ yarn gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci
yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
displayName: Build Server yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
displayName: Build Server
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp "transpile-client" "transpile-extensions"
displayName: Transpile
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}: - ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- template: product-build-darwin-test.yml - template: product-build-darwin-test.yml
parameters: parameters:
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }} VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }} VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }} VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}

View file

@ -58,6 +58,7 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js "alpine" $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js "alpine" $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
@ -67,6 +68,12 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: | - script: |
set -e set -e
tar -xzf .build/node_modules_cache/cache.tgz tar -xzf .build/node_modules_cache/cache.tgz
@ -98,6 +105,13 @@ steps:
displayName: Install dependencies displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: | - script: |
set -e set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt

View file

@ -1,4 +1,6 @@
parameters: parameters:
- name: VSCODE_QUALITY
type: string
- name: VSCODE_RUN_UNIT_TESTS - name: VSCODE_RUN_UNIT_TESTS
type: boolean type: boolean
- name: VSCODE_RUN_INTEGRATION_TESTS - name: VSCODE_RUN_INTEGRATION_TESTS
@ -13,43 +15,74 @@ steps:
yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install" yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
displayName: Download Electron and Playwright displayName: Download Electron and Playwright
- script: | - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
ELECTRON_ROOT=.build/electron
sudo chown root $APP_ROOT/chrome-sandbox
sudo chown root $ELECTRON_ROOT/chrome-sandbox
sudo chmod 4755 $APP_ROOT/chrome-sandbox
sudo chmod 4755 $ELECTRON_ROOT/chrome-sandbox
stat $APP_ROOT/chrome-sandbox
stat $ELECTRON_ROOT/chrome-sandbox
displayName: Change setuid helper binary permission
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- script: | - script: |
set -e set -e
./scripts/test.sh --build --tfs "Unit Tests" sudo apt-get update
displayName: Run unit tests (Electron) sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1
timeoutInMinutes: 15 sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
sudo chmod +x /etc/init.d/xvfb
sudo update-rc.d xvfb defaults
sudo service xvfb start
displayName: Setup build environment
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
set -e set -e
yarn test-node --build APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
displayName: Run unit tests (node.js) ELECTRON_ROOT=.build/electron
timeoutInMinutes: 15 sudo chown root $APP_ROOT/chrome-sandbox
sudo chown root $ELECTRON_ROOT/chrome-sandbox
sudo chmod 4755 $APP_ROOT/chrome-sandbox
sudo chmod 4755 $ELECTRON_ROOT/chrome-sandbox
stat $APP_ROOT/chrome-sandbox
stat $ELECTRON_ROOT/chrome-sandbox
displayName: Change setuid helper binary permission
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- script: | - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
DEBUG=*browser* yarn test-browser-no-install --build --browser chromium --tfs "Browser Unit Tests" set -e
displayName: Run unit tests (Browser, Chromium) DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
timeoutInMinutes: 15 displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- script: |
set -e
yarn test-node
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
- script: |
set -e
DEBUG=*browser* yarn test-browser-no-install --browser chromium --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser, Chromium)
timeoutInMinutes: 15
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- script: |
set -e
yarn test-node --build
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
- script: |
set -e
DEBUG=*browser* yarn test-browser-no-install --build --browser chromium --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser, Chromium)
timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- script: | - script: |
set -e set -e
yarn gulp \ yarn gulp \
compile-extension:configuration-editing \
compile-extension:css-language-features-server \ compile-extension:css-language-features-server \
compile-extension:emmet \ compile-extension:emmet \
compile-extension:git \ compile-extension:git \
@ -57,51 +90,69 @@ steps:
compile-extension:html-language-features-server \ compile-extension:html-language-features-server \
compile-extension:ipynb \ compile-extension:ipynb \
compile-extension:json-language-features-server \ compile-extension:json-language-features-server \
compile-extension:markdown-language-features-server \
compile-extension:markdown-language-features \ compile-extension:markdown-language-features \
compile-extension-media \ compile-extension-media \
compile-extension:microsoft-authentication \ compile-extension:microsoft-authentication \
compile-extension:typescript-language-features \ compile-extension:typescript-language-features \
compile-extension:vscode-api-tests \ compile-extension:vscode-api-tests \
compile-extension:vscode-colorize-tests \ compile-extension:vscode-colorize-tests \
compile-extension:vscode-custom-editor-tests \
compile-extension:vscode-notebook-tests \ compile-extension:vscode-notebook-tests \
compile-extension:vscode-test-resolver compile-extension:vscode-test-resolver
displayName: Build integration tests displayName: Build integration tests
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- script: | - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
# Figure out the full absolute path of the product we just built - script: |
# including the remote server and configure the integration tests set -e
# to run with these builds instead of running out of sources. DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
set -e displayName: Run integration tests (Electron)
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH) timeoutInMinutes: 20
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_APP_NAME="$APP_NAME" \
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - script: |
- script: | set -e
set -e ./scripts/test-web-integration.sh --browser chromium
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \ displayName: Run integration tests (Browser, Chromium)
./scripts/test-web-integration.sh --browser chromium timeoutInMinutes: 20
displayName: Run integration tests (Browser, Chromium)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - script: |
- script: | set -e
set -e ./scripts/test-remote-integration.sh
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH) displayName: Run integration tests (Remote)
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName") timeoutInMinutes: 20
INTEGRATION_TEST_APP_NAME="$APP_NAME" \
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \ - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \ - script: |
./scripts/test-remote-integration.sh # Figure out the full absolute path of the product we just built
displayName: Run integration tests (Remote) # including the remote server and configure the integration tests
timeoutInMinutes: 20 # to run with these builds instead of running out of sources.
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_APP_NAME="$APP_NAME" \
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
./scripts/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser, Chromium)
timeoutInMinutes: 20
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_APP_NAME="$APP_NAME" \
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
./scripts/test-remote-integration.sh
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- script: | - script: |
@ -113,33 +164,55 @@ steps:
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
set -e set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \ yarn --cwd test/smoke compile
yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage" displayName: Compile smoke tests
timeoutInMinutes: 20
displayName: Run smoke tests (Browser, Chromium)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - script: |
- script: | set -e
set -e yarn smoketest-no-compile --tracing
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH) timeoutInMinutes: 20
yarn smoketest-no-compile --tracing --build "$APP_PATH" displayName: Run smoke tests (Electron)
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - script: |
- script: | set -e
set -e yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
yarn gulp compile-extension:vscode-test-resolver timeoutInMinutes: 20
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH) displayName: Run smoke tests (Browser, Chromium)
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --tracing --remote --build "$APP_PATH" - script: |
timeoutInMinutes: 20 set -e
displayName: Run smoke tests (Remote) yarn gulp compile-extension:vscode-test-resolver
yarn smoketest-no-compile --remote --tracing
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
yarn smoketest-no-compile --tracing --build "$APP_PATH"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
timeoutInMinutes: 20
displayName: Run smoke tests (Browser, Chromium)
- script: |
set -e
yarn gulp compile-extension:vscode-test-resolver
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --tracing --remote --build "$APP_PATH"
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- script: | - script: |
set -e set -e
ps -ef ps -ef
@ -163,7 +236,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
# In order to properly symbolify above crash reports # In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too # (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
@ -179,7 +251,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
inputs: inputs:
targetPath: .build/logs targetPath: .build/logs

View file

@ -11,6 +11,11 @@ parameters:
type: boolean type: boolean
steps: steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- checkout: self
fetchDepth: 1
retryCountOnTaskFailure: 3
- task: NodeTool@0 - task: NodeTool@0
inputs: inputs:
versionSpec: "16.x" versionSpec: "16.x"
@ -23,33 +28,37 @@ steps:
KeyVaultName: vscode KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password" SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- task: DownloadPipelineArtifact@2 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
inputs: - task: DownloadPipelineArtifact@2
artifact: Compilation inputs:
path: $(Build.ArtifactStagingDirectory) artifact: Compilation
displayName: Download compilation output path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- task: DownloadPipelineArtifact@2 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
inputs: - task: DownloadPipelineArtifact@2
artifact: reh_node_modules-$(VSCODE_ARCH) inputs:
path: $(Build.ArtifactStagingDirectory) artifact: reh_node_modules-$(VSCODE_ARCH)
displayName: Download server build dependencies path: $(Build.ArtifactStagingDirectory)
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf')) displayName: Download server build dependencies
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
# Start X server set -e
/etc/init.d/xvfb start # Start X server
# Start dbus session /etc/init.d/xvfb start
DBUS_LAUNCH_RESULT=$(sudo dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address) # Start dbus session
echo "##vso[task.setvariable variable=DBUS_SESSION_BUS_ADDRESS]$DBUS_LAUNCH_RESULT" DBUS_LAUNCH_RESULT=$(sudo dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address)
displayName: Setup system services echo "##vso[task.setvariable variable=DBUS_SESSION_BUS_ADDRESS]$DBUS_LAUNCH_RESULT"
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64')) displayName: Setup system services
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz set -e
displayName: Extract compilation output tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
displayName: Extract compilation output
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
@ -82,14 +91,30 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- task: Cache@2
inputs:
key: "genericNodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- task: Cache@2
inputs:
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
- task: Cache@2 - task: Cache@2
inputs: inputs:
key: "nodeModules | $(Agent.OS) | .build/yarnlockhash" key: '"builtInDeps" | .build/builtindepshash'
path: .build/node_modules_cache path: .build/builtInExtensions
cacheHitVar: NODE_MODULES_RESTORED displayName: Restore built-in extensions
displayName: Restore node_modules cache
- script: | - script: |
set -e set -e
@ -171,10 +196,18 @@ steps:
- script: | - script: |
set -e set -e
rm -rf remote/node_modules node build/lib/builtInExtensions.js
tar -xzf $(Build.ArtifactStagingDirectory)/reh_node_modules-$(VSCODE_ARCH).tar.gz --directory $(Build.SourcesDirectory)/remote env:
displayName: Extract server node_modules output GITHUB_TOKEN: "$(github-distro-mixin-password)"
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf')) displayName: Download missing built-in extensions
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
rm -rf remote/node_modules
tar -xzf $(Build.ArtifactStagingDirectory)/reh_node_modules-$(VSCODE_ARCH).tar.gz --directory $(Build.SourcesDirectory)/remote
displayName: Extract server node_modules output
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'armhf'))
- script: | - script: |
set -e set -e
@ -190,11 +223,12 @@ steps:
node build/azure-pipelines/mixin node build/azure-pipelines/mixin
displayName: Mix in quality displayName: Mix in quality
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ set -e
yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
displayName: Build yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
displayName: Build
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |
@ -202,17 +236,26 @@ steps:
node build/azure-pipelines/mixin --server node build/azure-pipelines/mixin --server
displayName: Mix in server quality displayName: Mix in server quality
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ set -e
yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
displayName: Build Server yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
displayName: Build Server
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
yarn gulp "transpile-client" "transpile-extensions"
displayName: Transpile
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}: - ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- template: product-build-linux-client-test.yml - template: product-build-linux-client-test.yml
parameters: parameters:
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }} VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }} VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }} VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const json = require("gulp-json-editor"); const json = require("gulp-json-editor");
const buffer = require('gulp-buffer'); const buffer = require('gulp-buffer');

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as json from 'gulp-json-editor'; import * as json from 'gulp-json-editor';
const buffer = require('gulp-buffer'); const buffer = require('gulp-buffer');
import * as filter from 'gulp-filter'; import * as filter from 'gulp-filter';

View file

@ -0,0 +1,73 @@
steps:
- checkout: self
fetchDepth: 1
retryCountOnTaskFailure: 3
- task: NodeTool@0
inputs:
versionSpec: "16.x"
- script: |
mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags
- task: Cache@2
inputs:
key: "genericNodeModules | $(Agent.OS) | .build/yarnlockhash"
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: |
set -e
tar -xzf .build/node_modules_cache/cache.tgz
condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Extract node_modules cache
- script: |
set -e
npx https://aka.ms/enablesecurefeed standAlone
timeoutInMinutes: 5
retryCountOnTaskFailure: 3
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
displayName: Switch to Terrapin packages
- script: |
set -e
for i in {1..3}; do # try 3 times, for Terrapin
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: |
set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
mkdir -p .build/node_modules_cache
tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
displayName: Create node_modules archive

View file

@ -6,15 +6,6 @@ pr:
branches: branches:
include: ["main", "release/*"] include: ["main", "release/*"]
resources:
containers:
- container: centos7-devtoolset8-x64
image: vscodehub.azurecr.io/vscode-linux-build-agent:centos7-devtoolset8-x64
options: --user 0:0 --cap-add SYS_ADMIN
- container: vscode-bionic-x64
image: vscodehub.azurecr.io/vscode-linux-build-agent:bionic-x64
options: --user 0:0 --cap-add SYS_ADMIN
variables: variables:
- name: Codeql.SkipTaskAutoInjection - name: Codeql.SkipTaskAutoInjection
value: true value: true
@ -22,6 +13,8 @@ variables:
value: true value: true
- name: ENABLE_TERRAPIN - name: ENABLE_TERRAPIN
value: false value: false
- name: VSCODE_CIBUILD
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
- name: VSCODE_PUBLISH - name: VSCODE_PUBLISH
value: false value: false
- name: VSCODE_QUALITY - name: VSCODE_QUALITY
@ -29,173 +22,168 @@ variables:
- name: VSCODE_STEP_ON_IT - name: VSCODE_STEP_ON_IT
value: false value: false
stages: jobs:
- stage: Compile - ${{ if ne(variables['VSCODE_CIBUILD'], true) }}:
jobs: - job: Compile
- job: Compile displayName: Compile & Hygiene
pool: vscode-1es-vscode-linux-18.04 pool: vscode-1es-vscode-linux-20.04
variables: timeoutInMinutes: 30
VSCODE_ARCH: x64 variables:
steps: VSCODE_ARCH: x64
- template: product-compile.yml steps:
parameters: - template: product-compile.yml
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- stage: LinuxServerDependencies - job: Linuxx64UnitTest
dependsOn: [] displayName: Linux (Unit Tests)
pool: vscode-1es-vscode-linux-18.04 pool: vscode-1es-vscode-linux-20.04
jobs: timeoutInMinutes: 30
- job: x64 variables:
container: centos7-devtoolset8-x64 VSCODE_ARCH: x64
variables: NPM_ARCH: x64
VSCODE_ARCH: x64 DISPLAY: ":10"
NPM_ARCH: x64 steps:
steps: - template: linux/product-build-linux-client.yml
- template: linux/product-build-linux-server.yml parameters:
parameters: VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- stage: Windows - job: Linuxx64IntegrationTest
dependsOn: displayName: Linux (Integration Tests)
- Compile pool: vscode-1es-vscode-linux-20.04
pool: vscode-1es-vscode-windows-2019 timeoutInMinutes: 30
jobs: variables:
- job: WindowsUnitTests VSCODE_ARCH: x64
displayName: Unit Tests NPM_ARCH: x64
timeoutInMinutes: 120 DISPLAY: ":10"
variables: steps:
VSCODE_ARCH: x64 - template: linux/product-build-linux-client.yml
steps: parameters:
- template: win32/product-build-win32.yml VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
parameters: VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_RUN_UNIT_TESTS: false
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_UNIT_TESTS: true VSCODE_RUN_SMOKE_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- job: WindowsIntegrationTests
displayName: Integration Tests
timeoutInMinutes: 120
variables:
VSCODE_ARCH: x64
steps:
- template: win32/product-build-win32.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false
- job: WindowsSmokeTests
displayName: Smoke Tests
timeoutInMinutes: 120
variables:
VSCODE_ARCH: x64
steps:
- template: win32/product-build-win32.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true
- stage: Linux - job: Linuxx64SmokeTest
dependsOn: displayName: Linux (Smoke Tests)
- Compile pool: vscode-1es-vscode-linux-20.04
- LinuxServerDependencies timeoutInMinutes: 30
pool: vscode-1es-vscode-linux-18.04 variables:
jobs: VSCODE_ARCH: x64
- job: Linuxx64UnitTest NPM_ARCH: x64
displayName: Unit Tests DISPLAY: ":10"
container: vscode-bionic-x64 steps:
variables: - template: linux/product-build-linux-client.yml
VSCODE_ARCH: x64 parameters:
NPM_ARCH: x64 VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
DISPLAY: ":10" VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
steps: VSCODE_RUN_UNIT_TESTS: false
- template: linux/product-build-linux-client.yml VSCODE_RUN_INTEGRATION_TESTS: false
parameters: VSCODE_RUN_SMOKE_TESTS: true
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- job: Linuxx64IntegrationTest
displayName: Integration Tests
container: vscode-bionic-x64
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
DISPLAY: ":10"
steps:
- template: linux/product-build-linux-client.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false
- job: Linuxx64SmokeTest
displayName: Smoke Tests
container: vscode-bionic-x64
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
DISPLAY: ":10"
steps:
- template: linux/product-build-linux-client.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true
- stage: macOS - ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
dependsOn: - job: Linuxx64MaintainNodeModulesCache
- Compile displayName: Linux (Maintain node_modules cache)
pool: pool: vscode-1es-vscode-linux-20.04
vmImage: macOS-latest timeoutInMinutes: 30
variables: variables:
BUILDSECMON_OPT_IN: true VSCODE_ARCH: x64
jobs: steps:
- job: macOSUnitTest - template: product-build-pr-cache.yml
displayName: Unit Tests
timeoutInMinutes: 90 # - job: macOSUnitTest
variables: # displayName: macOS (Unit Tests)
VSCODE_ARCH: x64 # pool:
steps: # vmImage: macOS-latest
- template: darwin/product-build-darwin.yml # timeoutInMinutes: 60
parameters: # variables:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} # BUILDSECMON_OPT_IN: true
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} # VSCODE_ARCH: x64
VSCODE_RUN_UNIT_TESTS: true # steps:
VSCODE_RUN_INTEGRATION_TESTS: false # - template: darwin/product-build-darwin.yml
VSCODE_RUN_SMOKE_TESTS: false # parameters:
- job: macOSIntegrationTest # VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
displayName: Integration Tests # VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
timeoutInMinutes: 90 # VSCODE_RUN_UNIT_TESTS: true
variables: # VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_ARCH: x64 # VSCODE_RUN_SMOKE_TESTS: false
steps: # - job: macOSIntegrationTest
- template: darwin/product-build-darwin.yml # displayName: macOS (Integration Tests)
parameters: # pool:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} # vmImage: macOS-latest
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} # timeoutInMinutes: 60
VSCODE_RUN_UNIT_TESTS: false # variables:
VSCODE_RUN_INTEGRATION_TESTS: true # BUILDSECMON_OPT_IN: true
VSCODE_RUN_SMOKE_TESTS: false # VSCODE_ARCH: x64
- job: macOSSmokeTest # steps:
displayName: Smoke Tests # - template: darwin/product-build-darwin.yml
timeoutInMinutes: 90 # parameters:
variables: # VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_ARCH: x64 # VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
steps: # VSCODE_RUN_UNIT_TESTS: false
- template: darwin/product-build-darwin.yml # VSCODE_RUN_INTEGRATION_TESTS: true
parameters: # VSCODE_RUN_SMOKE_TESTS: false
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} # - job: macOSSmokeTest
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} # displayName: macOS (Smoke Tests)
VSCODE_RUN_UNIT_TESTS: false # pool:
VSCODE_RUN_INTEGRATION_TESTS: false # vmImage: macOS-latest
VSCODE_RUN_SMOKE_TESTS: true # timeoutInMinutes: 60
# variables:
# BUILDSECMON_OPT_IN: true
# VSCODE_ARCH: x64
# steps:
# - template: darwin/product-build-darwin.yml
# parameters:
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
# VSCODE_RUN_UNIT_TESTS: false
# VSCODE_RUN_INTEGRATION_TESTS: false
# VSCODE_RUN_SMOKE_TESTS: true
# - job: WindowsUnitTests
# displayName: Windows (Unit Tests)
# pool: vscode-1es-vscode-windows-2019
# timeoutInMinutes: 60
# variables:
# VSCODE_ARCH: x64
# steps:
# - template: win32/product-build-win32.yml
# parameters:
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
# VSCODE_RUN_UNIT_TESTS: true
# VSCODE_RUN_INTEGRATION_TESTS: false
# VSCODE_RUN_SMOKE_TESTS: false
# - job: WindowsIntegrationTests
# displayName: Windows (Integration Tests)
# pool: vscode-1es-vscode-windows-2019
# timeoutInMinutes: 60
# variables:
# VSCODE_ARCH: x64
# steps:
# - template: win32/product-build-win32.yml
# parameters:
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
# VSCODE_RUN_UNIT_TESTS: false
# VSCODE_RUN_INTEGRATION_TESTS: true
# VSCODE_RUN_SMOKE_TESTS: false
# - job: WindowsSmokeTests
# displayName: Windows (Smoke Tests)
# pool: vscode-1es-vscode-windows-2019
# timeoutInMinutes: 60
# variables:
# VSCODE_ARCH: x64
# steps:
# - template: win32/product-build-win32.yml
# parameters:
# VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
# VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
# VSCODE_RUN_UNIT_TESTS: false
# VSCODE_RUN_INTEGRATION_TESTS: false
# VSCODE_RUN_SMOKE_TESTS: true

View file

@ -108,9 +108,11 @@ variables:
- name: VSCODE_BUILD_STAGE_WINDOWS - name: VSCODE_BUILD_STAGE_WINDOWS
value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }} value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}
- name: VSCODE_BUILD_STAGE_LINUX - name: VSCODE_BUILD_STAGE_LINUX
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true), eq(parameters.VSCODE_BUILD_WEB, true)) }} value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true)) }}
- name: VSCODE_BUILD_STAGE_MACOS - name: VSCODE_BUILD_STAGE_MACOS
value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }} value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
- name: VSCODE_BUILD_STAGE_WEB
value: ${{ eq(parameters.VSCODE_BUILD_WEB, true) }}
- name: VSCODE_CIBUILD - name: VSCODE_CIBUILD
value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }} value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
- name: VSCODE_PUBLISH - name: VSCODE_PUBLISH
@ -176,45 +178,45 @@ stages:
pool: vscode-1es-windows pool: vscode-1es-windows
jobs: jobs:
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}: - ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
- job: WindowsUnitTests - job: WindowsUnitTests
displayName: Unit Tests displayName: Unit Tests
timeoutInMinutes: 60 timeoutInMinutes: 60
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
steps: steps:
- template: win32/product-build-win32.yml - template: win32/product-build-win32.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: true VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false VSCODE_RUN_SMOKE_TESTS: false
- job: WindowsIntegrationTests - job: WindowsIntegrationTests
displayName: Integration Tests displayName: Integration Tests
timeoutInMinutes: 60 timeoutInMinutes: 60
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
steps: steps:
- template: win32/product-build-win32.yml - template: win32/product-build-win32.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false VSCODE_RUN_SMOKE_TESTS: false
- job: WindowsSmokeTests - job: WindowsSmokeTests
displayName: Smoke Tests displayName: Smoke Tests
timeoutInMinutes: 60 timeoutInMinutes: 60
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
steps: steps:
- template: win32/product-build-win32.yml - template: win32/product-build-win32.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true VSCODE_RUN_SMOKE_TESTS: true
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32, true)) }}: - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32, true)) }}:
- job: Windows - job: Windows
@ -291,51 +293,51 @@ stages:
pool: vscode-1es-linux pool: vscode-1es-linux
jobs: jobs:
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}: - ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
- job: Linuxx64UnitTest - job: Linuxx64UnitTest
displayName: Unit Tests displayName: Unit Tests
container: vscode-bionic-x64 container: vscode-bionic-x64
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
NPM_ARCH: x64 NPM_ARCH: x64
DISPLAY: ":10" DISPLAY: ":10"
steps: steps:
- template: linux/product-build-linux-client.yml - template: linux/product-build-linux-client.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: true VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false VSCODE_RUN_SMOKE_TESTS: false
- job: Linuxx64IntegrationTest - job: Linuxx64IntegrationTest
displayName: Integration Tests displayName: Integration Tests
container: vscode-bionic-x64 container: vscode-bionic-x64
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
NPM_ARCH: x64 NPM_ARCH: x64
DISPLAY: ":10" DISPLAY: ":10"
steps: steps:
- template: linux/product-build-linux-client.yml - template: linux/product-build-linux-client.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false VSCODE_RUN_SMOKE_TESTS: false
- job: Linuxx64SmokeTest - job: Linuxx64SmokeTest
displayName: Smoke Tests displayName: Smoke Tests
container: vscode-bionic-x64 container: vscode-bionic-x64
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
NPM_ARCH: x64 NPM_ARCH: x64
DISPLAY: ":10" DISPLAY: ":10"
steps: steps:
- template: linux/product-build-linux-client.yml - template: linux/product-build-linux-client.yml
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true VSCODE_RUN_SMOKE_TESTS: true
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}: - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}:
- job: Linuxx64 - job: Linuxx64
@ -430,13 +432,6 @@ stages:
steps: steps:
- template: linux/product-build-alpine.yml - template: linux/product-build-alpine.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WEB, true)) }}:
- job: LinuxWeb
variables:
VSCODE_ARCH: x64
steps:
- template: web/product-build-web.yml
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_MACOS'], true)) }}: - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_MACOS'], true)) }}:
- stage: macOS - stage: macOS
dependsOn: dependsOn:
@ -447,62 +442,8 @@ stages:
BUILDSECMON_OPT_IN: true BUILDSECMON_OPT_IN: true
jobs: jobs:
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}: - ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
- job: macOSUnitTest - job: macOSUnitTest
displayName: Unit Tests displayName: Unit Tests
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- job: macOSIntegrationTest
displayName: Integration Tests
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false
- job: macOSSmokeTest
displayName: Smoke Tests
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS, true)) }}:
- job: macOS
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- ${{ if eq(parameters.VSCODE_STEP_ON_IT, false) }}:
- job: macOSTest
timeoutInMinutes: 90 timeoutInMinutes: 90
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
@ -511,19 +452,73 @@ stages:
parameters: parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }} VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }} VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }} VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }} VSCODE_RUN_SMOKE_TESTS: false
- job: macOSIntegrationTest
- ${{ if eq(variables['VSCODE_PUBLISH'], true) }}: displayName: Integration Tests
- job: macOSSign
dependsOn:
- macOS
timeoutInMinutes: 90 timeoutInMinutes: 90
variables: variables:
VSCODE_ARCH: x64 VSCODE_ARCH: x64
steps: steps:
- template: darwin/product-build-darwin-sign.yml - template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
VSCODE_RUN_SMOKE_TESTS: false
- job: macOSSmokeTest
displayName: Smoke Tests
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: true
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS, true)) }}:
- job: macOS
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
VSCODE_RUN_SMOKE_TESTS: false
- ${{ if eq(parameters.VSCODE_STEP_ON_IT, false) }}:
- job: macOSTest
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin.yml
parameters:
VSCODE_PUBLISH: ${{ variables.VSCODE_PUBLISH }}
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
VSCODE_RUN_SMOKE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
- ${{ if eq(variables['VSCODE_PUBLISH'], true) }}:
- job: macOSSign
dependsOn:
- macOS
timeoutInMinutes: 90
variables:
VSCODE_ARCH: x64
steps:
- template: darwin/product-build-darwin-sign.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}: - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}:
- job: macOSARM64 - job: macOSARM64
@ -570,6 +565,19 @@ stages:
steps: steps:
- template: darwin/product-build-darwin-sign.yml - template: darwin/product-build-darwin-sign.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WEB'], true)) }}:
- stage: Web
dependsOn:
- Compile
pool: vscode-1es-linux
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_WEB, true) }}:
- job: Web
variables:
VSCODE_ARCH: x64
steps:
- template: web/product-build-web.yml
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}: - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
- stage: Publish - stage: Publish
dependsOn: dependsOn:

View file

@ -46,6 +46,7 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
# using `genericNodeModules` instead of `nodeModules` here to avoid sharing the cache with builds running inside containers # using `genericNodeModules` instead of `nodeModules` here to avoid sharing the cache with builds running inside containers
@ -56,6 +57,13 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
# Cache built-in extensions to avoid GH rate limits.
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: | - script: |
set -e set -e
tar -xzf .build/node_modules_cache/cache.tgz tar -xzf .build/node_modules_cache/cache.tgz
@ -94,6 +102,13 @@ steps:
displayName: Install dependencies displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: | - script: |
set -e set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
@ -116,12 +131,13 @@ steps:
GITHUB_TOKEN: "$(github-distro-mixin-password)" GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Compile & Hygiene displayName: Compile & Hygiene
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
yarn --cwd test/smoke compile set -e
yarn --cwd test/integration/browser compile yarn --cwd test/smoke compile
displayName: Compile test suites yarn --cwd test/integration/browser compile
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false')) displayName: Compile test suites
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- task: AzureCLI@2 - task: AzureCLI@2
@ -151,16 +167,18 @@ steps:
./build/azure-pipelines/common/extract-telemetry.sh ./build/azure-pipelines/common/extract-telemetry.sh
displayName: Extract Telemetry displayName: Extract Telemetry
- script: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
set -e - script: |
tar -cz --ignore-failed-read -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz .build out-* test/integration/browser/out test/smoke/out test/automation/out set -e
displayName: Compress compilation artifact tar -cz --ignore-failed-read -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz .build out-* test/integration/browser/out test/smoke/out test/automation/out
displayName: Compress compilation artifact
- task: PublishPipelineArtifact@1 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
inputs: - task: PublishPipelineArtifact@1
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz inputs:
artifactName: Compilation targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
displayName: Publish compilation artifact artifactName: Compilation
displayName: Publish compilation artifact
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: | - script: |

View file

@ -46,6 +46,7 @@ $stages = @(
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' } if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' } if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' } if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
if ($env:VSCODE_BUILD_STAGE_WEB -eq 'True') { 'Web' }
) )
do { do {

View file

@ -109,6 +109,7 @@ steps:
if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' } if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' } if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' } if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
if ($env:VSCODE_BUILD_STAGE_WEB -eq 'True') { 'Web' }
) )
Write-Host "Stages to check: $stages" Write-Host "Stages to check: $stages"

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const cp = require("child_process"); const cp = require("child_process");
let tag = ''; let tag = '';

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as cp from 'child_process'; import * as cp from 'child_process';
let tag = ''; let tag = '';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs"); const fs = require("fs");
const cp = require("child_process"); const cp = require("child_process");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as fs from 'fs'; import * as fs from 'fs';
import * as cp from 'child_process'; import * as cp from 'child_process';
import * as path from 'path'; import * as path from 'path';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const es = require("event-stream"); const es = require("event-stream");
const Vinyl = require("vinyl"); const Vinyl = require("vinyl");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as es from 'event-stream'; import * as es from 'event-stream';
import * as Vinyl from 'vinyl'; import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs'; import * as vfs from 'vinyl-fs';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0; exports.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0;
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path'; import * as path from 'path';
import * as os from 'os'; import * as os from 'os';
import * as cp from 'child_process'; import * as cp from 'child_process';

View file

@ -1,14 +1,16 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const es = require("event-stream"); const es = require("event-stream");
const vfs = require("vinyl-fs"); const vfs = require("vinyl-fs");
const merge = require("gulp-merge-json"); const merge = require("gulp-merge-json");
const gzip = require("gulp-gzip"); const gzip = require("gulp-gzip");
const identity_1 = require("@azure/identity"); const identity_1 = require("@azure/identity");
const path = require("path");
const fs_1 = require("fs");
const azure = require('gulp-azure-storage'); const azure = require('gulp-azure-storage');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION']; const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']); const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
@ -18,6 +20,7 @@ function main() {
.pipe(merge({ .pipe(merge({
fileName: 'combined.nls.metadata.json', fileName: 'combined.nls.metadata.json',
jsonSpace: '', jsonSpace: '',
concatArrays: true,
edit: (parsedJson, file) => { edit: (parsedJson, file) => {
if (file.base === 'out-vscode-web-min') { if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson }; return { vscode: parsedJson };
@ -62,7 +65,11 @@ function main() {
break; break;
} }
} }
const key = 'vscode.' + file.relative.split('/')[0]; // Get extension id and use that as the key
const folderPath = path.join(file.base, file.relative.split('/')[0]);
const manifest = (0, fs_1.readFileSync)(path.join(folderPath, 'package.json'), 'utf-8');
const manifestJson = JSON.parse(manifest);
const key = manifestJson.publisher + '.' + manifestJson.name;
return { [key]: parsedJson }; return { [key]: parsedJson };
}, },
})) }))

View file

@ -3,14 +3,14 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as es from 'event-stream'; import * as es from 'event-stream';
import * as Vinyl from 'vinyl'; import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs'; import * as vfs from 'vinyl-fs';
import * as merge from 'gulp-merge-json'; import * as merge from 'gulp-merge-json';
import * as gzip from 'gulp-gzip'; import * as gzip from 'gulp-gzip';
import { ClientSecretCredential } from '@azure/identity'; import { ClientSecretCredential } from '@azure/identity';
import path = require('path');
import { readFileSync } from 'fs';
const azure = require('gulp-azure-storage'); const azure = require('gulp-azure-storage');
const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION']; const commit = process.env['VSCODE_DISTRO_COMMIT'] || process.env['BUILD_SOURCEVERSION'];
@ -33,6 +33,7 @@ function main(): Promise<void> {
.pipe(merge({ .pipe(merge({
fileName: 'combined.nls.metadata.json', fileName: 'combined.nls.metadata.json',
jsonSpace: '', jsonSpace: '',
concatArrays: true,
edit: (parsedJson, file) => { edit: (parsedJson, file) => {
if (file.base === 'out-vscode-web-min') { if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson }; return { vscode: parsedJson };
@ -81,7 +82,12 @@ function main(): Promise<void> {
break; break;
} }
} }
const key = 'vscode.' + file.relative.split('/')[0];
// Get extension id and use that as the key
const folderPath = path.join(file.base, file.relative.split('/')[0]);
const manifest = readFileSync(path.join(folderPath, 'package.json'), 'utf-8');
const manifestJson = JSON.parse(manifest);
const key = manifestJson.publisher + '.' + manifestJson.name;
return { [key]: parsedJson }; return { [key]: parsedJson };
}, },
})) }))

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path"); const path = require("path");
const es = require("event-stream"); const es = require("event-stream");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path'; import * as path from 'path';
import * as es from 'event-stream'; import * as es from 'event-stream';
import * as Vinyl from 'vinyl'; import * as Vinyl from 'vinyl';

View file

@ -49,6 +49,7 @@ steps:
- script: | - script: |
mkdir -p .build mkdir -p .build
node build/azure-pipelines/common/computeNodeModulesCacheKey.js "web" $ENABLE_TERRAPIN > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js "web" $ENABLE_TERRAPIN > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
@ -58,6 +59,12 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- script: | - script: |
set -e set -e
tar -xzf .build/node_modules_cache/cache.tgz tar -xzf .build/node_modules_cache/cache.tgz
@ -89,6 +96,13 @@ steps:
displayName: Install dependencies displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: |
set -e
node build/lib/builtInExtensions.js
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- script: | - script: |
set -e set -e
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt

View file

@ -1,4 +1,6 @@
parameters: parameters:
- name: VSCODE_QUALITY
type: string
- name: VSCODE_RUN_UNIT_TESTS - name: VSCODE_RUN_UNIT_TESTS
type: boolean type: boolean
- name: VSCODE_RUN_INTEGRATION_TESTS - name: VSCODE_RUN_INTEGRATION_TESTS
@ -15,35 +17,58 @@ steps:
displayName: Download Electron and Playwright displayName: Download Electron and Playwright
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- powershell: | - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
. build/azure-pipelines/win32/exec.ps1 - powershell: |
$ErrorActionPreference = "Stop" . build/azure-pipelines/win32/exec.ps1
exec { yarn electron $(VSCODE_ARCH) } $ErrorActionPreference = "Stop"
exec { .\scripts\test.bat --build --tfs "Unit Tests" } exec { yarn electron $(VSCODE_ARCH) }
displayName: Run unit tests (Electron) exec { .\scripts\test.bat --tfs "Unit Tests" }
timeoutInMinutes: 15 displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - powershell: |
- powershell: | . build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop"
$ErrorActionPreference = "Stop" exec { yarn test-node }
exec { yarn test-node --build } displayName: Run unit tests (node.js)
displayName: Run unit tests (node.js) timeoutInMinutes: 15
timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}: - powershell: |
- powershell: | . build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop"
$ErrorActionPreference = "Stop" exec { node test/unit/browser/index.js --sequential --browser chromium --tfs "Browser Unit Tests" }
exec { yarn test-browser-no-install --sequential --build --browser chromium --browser firefox --tfs "Browser Unit Tests" } displayName: Run unit tests (Browser, Chromium)
displayName: Run unit tests (Browser, Chromium & Firefox) timeoutInMinutes: 20
timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn electron $(VSCODE_ARCH) }
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
displayName: Run unit tests (Electron)
timeoutInMinutes: 15
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn test-node --build }
displayName: Run unit tests (node.js)
timeoutInMinutes: 15
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn test-browser-no-install --sequential --build --browser chromium --tfs "Browser Unit Tests" }
displayName: Run unit tests (Browser, Chromium)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
exec { yarn gulp ` exec { yarn gulp `
compile-extension:configuration-editing `
compile-extension:css-language-features-server ` compile-extension:css-language-features-server `
compile-extension:emmet ` compile-extension:emmet `
compile-extension:git ` compile-extension:git `
@ -51,50 +76,70 @@ steps:
compile-extension:html-language-features-server ` compile-extension:html-language-features-server `
compile-extension:ipynb ` compile-extension:ipynb `
compile-extension:json-language-features-server ` compile-extension:json-language-features-server `
compile-extension:markdown-language-features-server `
compile-extension:markdown-language-features ` compile-extension:markdown-language-features `
compile-extension-media ` compile-extension-media `
compile-extension:microsoft-authentication ` compile-extension:microsoft-authentication `
compile-extension:typescript-language-features ` compile-extension:typescript-language-features `
compile-extension:vscode-api-tests ` compile-extension:vscode-api-tests `
compile-extension:vscode-colorize-tests ` compile-extension:vscode-colorize-tests `
compile-extension:vscode-custom-editor-tests `
compile-extension:vscode-notebook-tests ` compile-extension:vscode-notebook-tests `
compile-extension:vscode-test-resolver ` compile-extension:vscode-test-resolver `
} }
displayName: Build integration tests displayName: Build integration tests
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: | - powershell: |
# Figure out the full absolute path of the product we just built . build/azure-pipelines/win32/exec.ps1
# including the remote server and configure the integration tests $ErrorActionPreference = "Stop"
# to run with these builds instead of running out of sources. exec { .\scripts\test-integration.bat --tfs "Integration Tests" }
. build/azure-pipelines/win32/exec.ps1 displayName: Run integration tests (Electron)
$ErrorActionPreference = "Stop" timeoutInMinutes: 20
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - powershell: |
- powershell: | . build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop"
$ErrorActionPreference = "Stop" exec { .\scripts\test-web-integration.bat --browser firefox }
exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\scripts\test-web-integration.bat --browser firefox } displayName: Run integration tests (Browser, Firefox)
displayName: Run integration tests (Browser, Firefox) timeoutInMinutes: 20
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}: - powershell: |
- powershell: | . build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop"
$ErrorActionPreference = "Stop" exec { .\scripts\test-remote-integration.bat }
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" displayName: Run integration tests (Remote)
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json timeoutInMinutes: 20
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-remote-integration.bat } - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
displayName: Run integration tests (Remote) - powershell: |
timeoutInMinutes: 20 # Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests (Electron)
timeoutInMinutes: 20
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\scripts\test-web-integration.bat --browser firefox }
displayName: Run integration tests (Browser, Firefox)
timeoutInMinutes: 20
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-remote-integration.bat }
displayName: Run integration tests (Remote)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- powershell: | - powershell: |
@ -104,36 +149,47 @@ steps:
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)" exec { yarn --cwd test/smoke compile }
exec { yarn smoketest-no-compile --web --tracing --headless } displayName: Compile smoke tests
displayName: Run smoke tests (Browser, Chromium)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - powershell: |
- powershell: | . build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/exec.ps1 $ErrorActionPreference = "Stop"
$ErrorActionPreference = "Stop" exec { yarn smoketest-no-compile --tracing }
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" displayName: Run smoke tests (Electron)
exec { yarn smoketest-no-compile --tracing --build "$AppRoot" } timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)" $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)" exec { yarn smoketest-no-compile --tracing --build "$AppRoot" }
exec { yarn gulp compile-extension:vscode-test-resolver } displayName: Run smoke tests (Electron)
exec { yarn smoketest-no-compile --tracing --remote --build "$AppRoot" } timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
timeoutInMinutes: 20 - powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --web --tracing --headless }
displayName: Run smoke tests (Browser, Chromium)
timeoutInMinutes: 20
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
exec { yarn gulp compile-extension:vscode-test-resolver }
exec { yarn smoketest-no-compile --tracing --remote --build "$AppRoot" }
displayName: Run smoke tests (Remote)
timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_SMOKE_TESTS, true) }}:
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
exec {.\build\azure-pipelines\win32\listprocesses.bat } exec {.\build\azure-pipelines\win32\listprocesses.bat }
@ -155,7 +211,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
# In order to properly symbolify above crash reports # In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too # (if any), we need the compiled native modules too
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
@ -171,7 +226,6 @@ steps:
continueOnError: true continueOnError: true
condition: failed() condition: failed()
- ${{ if or(eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- task: PublishPipelineArtifact@0 - task: PublishPipelineArtifact@0
inputs: inputs:
targetPath: .build\logs targetPath: .build\logs

View file

@ -11,6 +11,11 @@ parameters:
type: boolean type: boolean
steps: steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- checkout: self
fetchDepth: 1
retryCountOnTaskFailure: 3
- task: NodeTool@0 - task: NodeTool@0
inputs: inputs:
versionSpec: "16.x" versionSpec: "16.x"
@ -28,17 +33,19 @@ steps:
KeyVaultName: vscode KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password" SecretsFilter: "github-distro-mixin-password,ESRP-PKI,esrp-aad-username,esrp-aad-password"
- task: DownloadPipelineArtifact@2 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
inputs: - task: DownloadPipelineArtifact@2
artifact: Compilation inputs:
path: $(Build.ArtifactStagingDirectory) artifact: Compilation
displayName: Download compilation output path: $(Build.ArtifactStagingDirectory)
displayName: Download compilation output
- task: ExtractFiles@1 - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
displayName: Extract compilation output - task: ExtractFiles@1
inputs: displayName: Extract compilation output
archiveFilePatterns: "$(Build.ArtifactStagingDirectory)/compilation.tar.gz" inputs:
cleanDestinationFolder: false archiveFilePatterns: "$(Build.ArtifactStagingDirectory)/compilation.tar.gz"
cleanDestinationFolder: false
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}: - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: | - powershell: |
@ -69,9 +76,11 @@ steps:
displayName: Merge distro displayName: Merge distro
- powershell: | - powershell: |
if (!(Test-Path ".build")) { New-Item -Path ".build" -ItemType Directory }
"$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
"$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin "$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash
node build/azure-pipelines/common/computeBuiltInDepsCacheKey.js > .build/builtindepshash
displayName: Prepare yarn cache flags displayName: Prepare yarn cache flags
- task: Cache@2 - task: Cache@2
@ -81,6 +90,12 @@ steps:
cacheHitVar: NODE_MODULES_RESTORED cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache displayName: Restore node_modules cache
- task: Cache@2
inputs:
key: '"builtInDeps" | .build/builtindepshash'
path: .build/builtInExtensions
displayName: Restore built-in extensions
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@ -111,6 +126,14 @@ steps:
displayName: Install dependencies displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { node build/lib/builtInExtensions.js }
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download missing built-in extensions
- powershell: | - powershell: |
. build/azure-pipelines/win32/exec.ps1 . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@ -127,13 +150,29 @@ steps:
exec { node build/azure-pipelines/mixin } exec { node build/azure-pipelines/mixin }
displayName: Mix in quality displayName: Mix in quality
- powershell: | - ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
. build/azure-pipelines/win32/exec.ps1 - powershell: |
$ErrorActionPreference = "Stop" . build/azure-pipelines/win32/exec.ps1
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" $ErrorActionPreference = "Stop"
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" } exec { node build\lib\policies }
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)" displayName: Generate Group Policy definitions
displayName: Build
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn gulp "transpile-client" "transpile-extensions" }
displayName: Transpile
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
displayName: Build
- ${{ if eq(parameters.VSCODE_PUBLISH, true) }}: - ${{ if eq(parameters.VSCODE_PUBLISH, true) }}:
- powershell: | - powershell: |
@ -151,19 +190,21 @@ steps:
displayName: Mix in quality displayName: Mix in quality
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64')) condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: | - ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
. build/azure-pipelines/win32/exec.ps1 - powershell: |
$ErrorActionPreference = "Stop" . build/azure-pipelines/win32/exec.ps1
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" $ErrorActionPreference = "Stop"
exec { yarn gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" } $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" } exec { yarn gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" }
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)" exec { yarn gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" }
displayName: Build Server echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)"
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64')) displayName: Build Server
condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}: - ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- template: product-build-win32-test.yml - template: product-build-win32-test.yml
parameters: parameters:
VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }} VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }} VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }} VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const vscode_universal_bundler_1 = require("vscode-universal-bundler"); const vscode_universal_bundler_1 = require("vscode-universal-bundler");
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise"); const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import { makeUniversalApp } from 'vscode-universal-bundler'; import { makeUniversalApp } from 'vscode-universal-bundler';
import { spawn } from '@malept/cross-spawn-promise'; import { spawn } from '@malept/cross-spawn-promise';
import * as fs from 'fs-extra'; import * as fs from 'fs-extra';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const codesign = require("electron-osx-sign"); const codesign = require("electron-osx-sign");
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as codesign from 'electron-osx-sign'; import * as codesign from 'electron-osx-sign';
import * as path from 'path'; import * as path from 'path';
import * as util from '../lib/util'; import * as util from '../lib/util';

View file

@ -48,7 +48,6 @@ module.exports.unicodeFilter = [
'!extensions/typescript-language-features/test-workspace/**', '!extensions/typescript-language-features/test-workspace/**',
'!extensions/vscode-api-tests/testWorkspace/**', '!extensions/vscode-api-tests/testWorkspace/**',
'!extensions/vscode-api-tests/testWorkspace2/**', '!extensions/vscode-api-tests/testWorkspace2/**',
'!extensions/vscode-custom-editor-tests/test-workspace/**',
'!extensions/**/dist/**', '!extensions/**/dist/**',
'!extensions/**/out/**', '!extensions/**/out/**',
'!extensions/**/snippets/**', '!extensions/**/snippets/**',
@ -66,10 +65,6 @@ module.exports.indentationFilter = [
'!**/LICENSE.{txt,rtf}', '!**/LICENSE.{txt,rtf}',
'!LICENSES.chromium.html', '!LICENSES.chromium.html',
'!**/LICENSE', '!**/LICENSE',
'!src/vs/nls.js',
'!src/vs/nls.build.js',
'!src/vs/css.js',
'!src/vs/css.build.js',
'!src/vs/loader.js', '!src/vs/loader.js',
'!src/vs/base/browser/dompurify/*', '!src/vs/base/browser/dompurify/*',
'!src/vs/base/common/marked/marked.js', '!src/vs/base/common/marked/marked.js',
@ -88,7 +83,6 @@ module.exports.indentationFilter = [
'!extensions/markdown-math/notebook-out/**', '!extensions/markdown-math/notebook-out/**',
'!extensions/vscode-api-tests/testWorkspace/**', '!extensions/vscode-api-tests/testWorkspace/**',
'!extensions/vscode-api-tests/testWorkspace2/**', '!extensions/vscode-api-tests/testWorkspace2/**',
'!extensions/vscode-custom-editor-tests/test-workspace/**',
'!build/monaco/**', '!build/monaco/**',
'!build/win32/**', '!build/win32/**',
@ -145,6 +139,7 @@ module.exports.copyrightFilter = [
'!**/*.xml', '!**/*.xml',
'!**/*.sh', '!**/*.sh',
'!**/*.zsh', '!**/*.zsh',
'!**/*.fish',
'!**/*.txt', '!**/*.txt',
'!**/*.xpm', '!**/*.xpm',
'!**/*.opts', '!**/*.opts',

View file

@ -29,13 +29,20 @@ const editorEntryPoints = [
name: 'vs/editor/editor.main', name: 'vs/editor/editor.main',
include: [], include: [],
exclude: ['vs/css', 'vs/nls'], exclude: ['vs/css', 'vs/nls'],
prepend: ['out-editor-build/vs/css.js', 'out-editor-build/vs/nls.js'], prepend: [
{ path: 'out-editor-build/vs/css.js', amdModuleId: 'vs/css' },
{ path: 'out-editor-build/vs/nls.js', amdModuleId: 'vs/nls' }
],
}, },
{ {
name: 'vs/base/common/worker/simpleWorker', name: 'vs/base/common/worker/simpleWorker',
include: ['vs/editor/common/services/editorSimpleWorker'], include: ['vs/editor/common/services/editorSimpleWorker'],
prepend: ['vs/loader.js'], exclude: ['vs/nls'],
append: ['vs/base/worker/workerMain'], prepend: [
{ path: 'vs/loader.js' },
{ path: 'vs/nls.js', amdModuleId: 'vs/nls' },
{ path: 'vs/base/worker/workerMain.js' }
],
dest: 'vs/base/worker/workerMain.js' dest: 'vs/base/worker/workerMain.js'
} }
]; ];
@ -109,12 +116,6 @@ const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () =>
'inlineEntryPoint:0.ts', 'inlineEntryPoint:0.ts',
'inlineEntryPoint:1.ts', 'inlineEntryPoint:1.ts',
'vs/loader.js', 'vs/loader.js',
'vs/nls.ts',
'vs/nls.build.js',
'vs/nls.d.ts',
'vs/css.js',
'vs/css.build.js',
'vs/css.d.ts',
'vs/base/worker/workerMain.ts', 'vs/base/worker/workerMain.ts',
], ],
renames: { renames: {

View file

@ -53,6 +53,7 @@ const compilations = [
'json-language-features/client/tsconfig.json', 'json-language-features/client/tsconfig.json',
'json-language-features/server/tsconfig.json', 'json-language-features/server/tsconfig.json',
'markdown-language-features/preview-src/tsconfig.json', 'markdown-language-features/preview-src/tsconfig.json',
'markdown-language-features/server/tsconfig.json',
'markdown-language-features/tsconfig.json', 'markdown-language-features/tsconfig.json',
'markdown-math/tsconfig.json', 'markdown-math/tsconfig.json',
'merge-conflict/tsconfig.json', 'merge-conflict/tsconfig.json',
@ -66,7 +67,6 @@ const compilations = [
'typescript-language-features/tsconfig.json', 'typescript-language-features/tsconfig.json',
'vscode-api-tests/tsconfig.json', 'vscode-api-tests/tsconfig.json',
'vscode-colorize-tests/tsconfig.json', 'vscode-colorize-tests/tsconfig.json',
'vscode-custom-editor-tests/tsconfig.json',
'vscode-notebook-tests/tsconfig.json', 'vscode-notebook-tests/tsconfig.json',
'vscode-test-resolver/tsconfig.json' 'vscode-test-resolver/tsconfig.json'
]; ];
@ -100,7 +100,7 @@ const tasks = compilations.map(function (tsconfigFile) {
headerOut = relativeDirname.substr(index + 1) + '/out'; headerOut = relativeDirname.substr(index + 1) + '/out';
} }
function createPipeline(build, emitError) { function createPipeline(build, emitError, transpileOnly) {
const nlsDev = require('vscode-nls-dev'); const nlsDev = require('vscode-nls-dev');
const tsb = require('./lib/tsb'); const tsb = require('./lib/tsb');
const sourcemaps = require('gulp-sourcemaps'); const sourcemaps = require('gulp-sourcemaps');
@ -110,7 +110,7 @@ const tasks = compilations.map(function (tsconfigFile) {
overrideOptions.inlineSources = Boolean(build); overrideOptions.inlineSources = Boolean(build);
overrideOptions.base = path.dirname(absolutePath); overrideOptions.base = path.dirname(absolutePath);
const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false }, err => reporter(err.toString())); const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly }, err => reporter(err.toString()));
const pipeline = function () { const pipeline = function () {
const input = es.through(); const input = es.through();
@ -152,6 +152,16 @@ const tasks = compilations.map(function (tsconfigFile) {
const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out)); const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
const transpileTask = task.define(`transpile-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false, true, true);
const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
const input = es.merge(nonts, pipeline.tsProjectSrc());
return input
.pipe(pipeline())
.pipe(gulp.dest(out));
}));
const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => { const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false, true); const pipeline = createPipeline(false, true);
const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts'])); const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
@ -184,12 +194,16 @@ const tasks = compilations.map(function (tsconfigFile) {
})); }));
// Tasks // Tasks
gulp.task(transpileTask);
gulp.task(compileTask); gulp.task(compileTask);
gulp.task(watchTask); gulp.task(watchTask);
return { compileTask, watchTask, compileBuildTask }; return { transpileTask, compileTask, watchTask, compileBuildTask };
}); });
const transpileExtensionsTask = task.define('transpile-extensions', task.parallel(...tasks.map(t => t.transpileTask)));
gulp.task(transpileExtensionsTask);
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask))); const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
gulp.task(compileExtensionsTask); gulp.task(compileExtensionsTask);
exports.compileExtensionsTask = compileExtensionsTask; exports.compileExtensionsTask = compileExtensionsTask;
@ -222,8 +236,8 @@ exports.compileExtensionMediaBuildTask = compileExtensionMediaBuildTask;
const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions')); const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series( const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
cleanExtensionsBuildTask, cleanExtensionsBuildTask,
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))), task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))),
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false, product.extensionsGallery?.serviceUrl).pipe(gulp.dest('.build'))),
)); ));
gulp.task(compileExtensionsBuildTask); gulp.task(compileExtensionsBuildTask);

View file

@ -11,7 +11,7 @@ require('events').EventEmitter.defaultMaxListeners = 100;
const gulp = require('gulp'); const gulp = require('gulp');
const util = require('./lib/util'); const util = require('./lib/util');
const task = require('./lib/task'); const task = require('./lib/task');
const { compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation'); const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation');
const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor'); const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions'); const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
@ -19,6 +19,10 @@ const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask }
gulp.task(compileApiProposalNamesTask); gulp.task(compileApiProposalNamesTask);
gulp.task(watchApiProposalNamesTask); gulp.task(watchApiProposalNamesTask);
// Transpile only
const transpileClientTask = task.define('transpile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileTask('src', 'out')));
gulp.task(transpileClientTask);
// Fast compile for development time // Fast compile for development time
const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), compileApiProposalNamesTask, compileTask('src', 'out', false))); const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), compileApiProposalNamesTask, compileTask('src', 'out', false)));
gulp.task(compileClientTask); gulp.task(compileClientTask);

View file

@ -76,12 +76,14 @@ const serverResources = [
'out-build/vs/base/node/ps.sh', 'out-build/vs/base/node/ps.sh',
// Terminal shell integration // Terminal shell integration
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration.fish',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-env.zsh', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-env.zsh',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-profile.zsh', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-profile.zsh',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-login.zsh', 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-login.zsh',
'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration.fish',
'!**/test/**' '!**/test/**'
]; ];

View file

@ -6,6 +6,7 @@
'use strict'; 'use strict';
const gulp = require('gulp'); const gulp = require('gulp');
const merge = require('gulp-merge-json');
const fs = require('fs'); const fs = require('fs');
const os = require('os'); const os = require('os');
const cp = require('child_process'); const cp = require('child_process');
@ -68,6 +69,7 @@ const vscodeResources = [
'out-build/vs/workbench/browser/media/*-theme.css', 'out-build/vs/workbench/browser/media/*-theme.css',
'out-build/vs/workbench/contrib/debug/**/*.json', 'out-build/vs/workbench/contrib/debug/**/*.json',
'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt', 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
'out-build/vs/workbench/contrib/terminal/browser/media/*.fish',
'out-build/vs/workbench/contrib/terminal/browser/media/*.ps1', 'out-build/vs/workbench/contrib/terminal/browser/media/*.ps1',
'out-build/vs/workbench/contrib/terminal/browser/media/*.sh', 'out-build/vs/workbench/contrib/terminal/browser/media/*.sh',
'out-build/vs/workbench/contrib/terminal/browser/media/*.zsh', 'out-build/vs/workbench/contrib/terminal/browser/media/*.zsh',
@ -76,7 +78,7 @@ const vscodeResources = [
'out-build/vs/workbench/contrib/tasks/**/*.json', 'out-build/vs/workbench/contrib/tasks/**/*.json',
'out-build/vs/platform/files/**/*.exe', 'out-build/vs/platform/files/**/*.exe',
'out-build/vs/platform/files/**/*.md', 'out-build/vs/platform/files/**/*.md',
'out-build/vs/code/electron-browser/workbench/**', 'out-build/vs/code/electron-sandbox/workbench/**',
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js', 'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
'out-build/vs/code/electron-sandbox/issue/issueReporter.js', 'out-build/vs/code/electron-sandbox/issue/issueReporter.js',
'out-build/vs/code/electron-sandbox/processExplorer/processExplorer.js', 'out-build/vs/code/electron-sandbox/processExplorer/processExplorer.js',
@ -165,8 +167,8 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
'vs/workbench/workbench.desktop.main.js', 'vs/workbench/workbench.desktop.main.js',
'vs/workbench/workbench.desktop.main.css', 'vs/workbench/workbench.desktop.main.css',
'vs/workbench/api/node/extensionHostProcess.js', 'vs/workbench/api/node/extensionHostProcess.js',
'vs/code/electron-browser/workbench/workbench.html', 'vs/code/electron-sandbox/workbench/workbench.html',
'vs/code/electron-browser/workbench/workbench.js' 'vs/code/electron-sandbox/workbench/workbench.js'
]); ]);
const src = gulp.src(out + '/**', { base: '.' }) const src = gulp.src(out + '/**', { base: '.' })
@ -331,6 +333,9 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' }) result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
.pipe(rename(product.nameShort + '.VisualElementsManifest.xml'))); .pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
result = es.merge(result, gulp.src('.build/policies/win32/**', { base: '.build/policies/win32' })
.pipe(rename(f => f.dirname = `policies/${f.dirname}`)));
} else if (platform === 'linux') { } else if (platform === 'linux') {
result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' }) result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
.pipe(replace('@@PRODNAME@@', product.nameLong)) .pipe(replace('@@PRODNAME@@', product.nameLong))
@ -389,6 +394,8 @@ BUILD_TARGETS.forEach(buildTarget => {
} }
}); });
// #region nls
const innoSetupConfig = { const innoSetupConfig = {
'zh-cn': { codePage: 'CP936', defaultInfo: { name: 'Simplified Chinese', id: '$0804', } }, 'zh-cn': { codePage: 'CP936', defaultInfo: { name: 'Simplified Chinese', id: '$0804', } },
'zh-tw': { codePage: 'CP950', defaultInfo: { name: 'Traditional Chinese', id: '$0404' } }, 'zh-tw': { codePage: 'CP950', defaultInfo: { name: 'Traditional Chinese', id: '$0404' } },
@ -404,46 +411,23 @@ const innoSetupConfig = {
'tr': { codePage: 'CP1254' } 'tr': { codePage: 'CP1254' }
}; };
// Transifex Localizations
const apiHostname = process.env.TRANSIFEX_API_URL;
const apiName = process.env.TRANSIFEX_API_NAME;
const apiToken = process.env.TRANSIFEX_API_TOKEN;
gulp.task(task.define(
'vscode-translations-push',
task.series(
compileBuildTask,
compileExtensionsBuildTask,
optimizeVSCodeTask,
function () {
const pathToMetadata = './out-vscode/nls.metadata.json';
const pathToExtensions = '.build/extensions/*';
const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
return es.merge(
gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
).pipe(i18n.findObsoleteResources(apiHostname, apiName, apiToken)
).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken));
}
)
));
gulp.task(task.define( gulp.task(task.define(
'vscode-translations-export', 'vscode-translations-export',
task.series( task.series(
compileBuildTask, core,
compileExtensionsBuildTask, compileExtensionsBuildTask,
optimizeVSCodeTask,
function () { function () {
const pathToMetadata = './out-vscode/nls.metadata.json'; const pathToMetadata = './out-vscode/nls.metadata.json';
const pathToRehWebMetadata = './out-vscode-reh-web/nls.metadata.json';
const pathToExtensions = '.build/extensions/*'; const pathToExtensions = '.build/extensions/*';
const pathToSetup = 'build/win32/i18n/messages.en.isl'; const pathToSetup = 'build/win32/i18n/messages.en.isl';
return es.merge( return es.merge(
gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()), gulp.src([pathToMetadata, pathToRehWebMetadata]).pipe(merge({
fileName: 'nls.metadata.json',
jsonSpace: '',
concatArrays: true
})).pipe(i18n.createXlfFilesForCoreBundle()),
gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()), gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions()) gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
).pipe(vfs.dest('../vscode-translations-export')); ).pipe(vfs.dest('../vscode-translations-export'));
@ -451,13 +435,6 @@ gulp.task(task.define(
) )
)); ));
gulp.task('vscode-translations-pull', function () {
return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
const includeDefault = !!innoSetupConfig[language.id].defaultInfo;
return i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-translations-import/${language.id}/setup`));
}));
});
gulp.task('vscode-translations-import', function () { gulp.task('vscode-translations-import', function () {
const options = minimist(process.argv.slice(2), { const options = minimist(process.argv.slice(2), {
string: 'location', string: 'location',
@ -472,3 +449,5 @@ gulp.task('vscode-translations-import', function () {
.pipe(vfs.dest(`./build/win32/i18n`)); .pipe(vfs.dest(`./build/win32/i18n`));
})); }));
}); });
// #endregion

View file

@ -15,13 +15,18 @@ const util = require('./lib/util');
const task = require('./lib/task'); const task = require('./lib/task');
const packageJson = require('../package.json'); const packageJson = require('../package.json');
const product = require('../product.json'); const product = require('../product.json');
const rpmDependenciesGenerator = require('./linux/rpm/dependencies-generator'); const dependenciesGenerator = require('./linux/dependencies-generator');
const sysrootInstaller = require('./linux/debian/install-sysroot');
const debianRecommendedDependencies = require('./linux/debian/dep-lists').recommendedDeps;
const path = require('path'); const path = require('path');
const root = path.dirname(__dirname); const root = path.dirname(__dirname);
const commit = util.getVersion(root); const commit = util.getVersion(root);
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000); const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
/**
* @param {string} arch
*/
function getDebPackageArch(arch) { function getDebPackageArch(arch) {
return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64' }[arch]; return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64' }[arch];
} }
@ -74,12 +79,16 @@ function prepareDebPackage(arch) {
let size = 0; let size = 0;
const control = code.pipe(es.through( const control = code.pipe(es.through(
function (f) { size += f.isDirectory() ? 4096 : f.contents.length; }, function (f) { size += f.isDirectory() ? 4096 : f.contents.length; },
function () { async function () {
const that = this; const that = this;
const sysroot = await sysrootInstaller.getSysroot(debArch);
const dependencies = dependenciesGenerator.getDependencies('deb', binaryDir, product.applicationName, debArch, sysroot);
gulp.src('resources/linux/debian/control.template', { base: '.' }) gulp.src('resources/linux/debian/control.template', { base: '.' })
.pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision)) .pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
.pipe(replace('@@ARCHITECTURE@@', debArch)) .pipe(replace('@@ARCHITECTURE@@', debArch))
.pipe(replace('@@DEPENDS@@', dependencies.join(', ')))
.pipe(replace('@@RECOMMENDS@@', debianRecommendedDependencies.join(', ')))
.pipe(replace('@@INSTALLEDSIZE@@', Math.ceil(size / 1024))) .pipe(replace('@@INSTALLEDSIZE@@', Math.ceil(size / 1024)))
.pipe(rename('DEBIAN/control')) .pipe(rename('DEBIAN/control'))
.pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); })); .pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); }));
@ -176,7 +185,7 @@ function prepareRpmPackage(arch) {
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir }) const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; })); .pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; }));
const dependencies = rpmDependenciesGenerator.getDependencies(binaryDir, product.applicationName, rpmArch); const dependencies = dependenciesGenerator.getDependencies('rpm', binaryDir, product.applicationName, rpmArch);
const spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' }) const spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' })
.pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME_LONG@@', product.nameLong))
@ -210,7 +219,7 @@ function buildRpmPackage(arch) {
return shell.task([ return shell.task([
'mkdir -p ' + destination, 'mkdir -p ' + destination,
'HOME="$(pwd)/' + destination + '" fakeroot rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch, 'HOME="$(pwd)/' + destination + '" rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch,
'cp "' + rpmOut + '/$(ls ' + rpmOut + ')" ' + destination + '/' 'cp "' + rpmOut + '/$(ls ' + rpmOut + ')" ' + destination + '/'
]); ]);
} }

View file

@ -229,7 +229,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
const compileWebExtensionsBuildTask = task.define('compile-web-extensions-build', task.series( const compileWebExtensionsBuildTask = task.define('compile-web-extensions-build', task.series(
task.define('clean-web-extensions-build', util.rimraf('.build/web/extensions')), task.define('clean-web-extensions-build', util.rimraf('.build/web/extensions')),
task.define('bundle-web-extensions-build', () => extensions.packageLocalExtensionsStream(true).pipe(gulp.dest('.build/web'))), task.define('bundle-web-extensions-build', () => extensions.packageLocalExtensionsStream(true).pipe(gulp.dest('.build/web'))),
task.define('bundle-marketplace-web-extensions-build', () => extensions.packageMarketplaceExtensionsStream(true, product.extensionsGallery?.serviceUrl).pipe(gulp.dest('.build/web'))), task.define('bundle-marketplace-web-extensions-build', () => extensions.packageMarketplaceExtensionsStream(true).pipe(gulp.dest('.build/web'))),
task.define('bundle-web-extension-media-build', () => extensions.buildExtensionMedia(false, '.build/web/extensions')), task.define('bundle-web-extension-media-build', () => extensions.buildExtensionMedia(false, '.build/web/extensions')),
)); ));
gulp.task(compileWebExtensionsBuildTask); gulp.task(compileWebExtensionsBuildTask);

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.createAsar = void 0; exports.createAsar = void 0;
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path'; import * as path from 'path';
import * as es from 'event-stream'; import * as es from 'event-stream';
const pickle = require('chromium-pickle-js'); const pickle = require('chromium-pickle-js');

View file

@ -4,7 +4,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getBuiltInExtensions = void 0; exports.getBuiltInExtensions = exports.getExtensionStream = void 0;
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");
const os = require("os"); const os = require("os");
@ -44,6 +44,21 @@ function isUpToDate(extension) {
return false; return false;
} }
} }
function getExtensionDownloadStream(extension) {
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
}
function getExtensionStream(extension) {
// if the extension exists on disk, use those files instead of downloading anew
if (isUpToDate(extension)) {
log('[extensions]', `${extension.name}@${extension.version} up to date`, ansiColors.green('✔︎'));
return vfs.src(['**'], { cwd: getExtensionPath(extension), dot: true })
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
}
return getExtensionDownloadStream(extension);
}
exports.getExtensionStream = getExtensionStream;
function syncMarketplaceExtension(extension) { function syncMarketplaceExtension(extension) {
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl; const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
const source = ansiColors.blue(galleryServiceUrl ? '[marketplace]' : '[github]'); const source = ansiColors.blue(galleryServiceUrl ? '[marketplace]' : '[github]');
@ -52,8 +67,7 @@ function syncMarketplaceExtension(extension) {
return es.readArray([]); return es.readArray([]);
} }
rimraf.sync(getExtensionPath(extension)); rimraf.sync(getExtensionPath(extension));
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension)) return getExtensionDownloadStream(extension)
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
.pipe(vfs.dest('.build/builtInExtensions')) .pipe(vfs.dest('.build/builtInExtensions'))
.on('end', () => log(source, extension.name, ansiColors.green('✔︎'))); .on('end', () => log(source, extension.name, ansiColors.green('✔︎')));
} }

View file

@ -68,10 +68,26 @@ function isUpToDate(extension: IExtensionDefinition): boolean {
} }
} }
function getExtensionDownloadStream(extension: IExtensionDefinition) {
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
}
export function getExtensionStream(extension: IExtensionDefinition) {
// if the extension exists on disk, use those files instead of downloading anew
if (isUpToDate(extension)) {
log('[extensions]', `${extension.name}@${extension.version} up to date`, ansiColors.green('✔︎'));
return vfs.src(['**'], { cwd: getExtensionPath(extension), dot: true })
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
}
return getExtensionDownloadStream(extension);
}
function syncMarketplaceExtension(extension: IExtensionDefinition): Stream { function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl; const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
const source = ansiColors.blue(galleryServiceUrl ? '[marketplace]' : '[github]'); const source = ansiColors.blue(galleryServiceUrl ? '[marketplace]' : '[github]');
if (isUpToDate(extension)) { if (isUpToDate(extension)) {
log(source, `${extension.name}@${extension.version}`, ansiColors.green('✔︎')); log(source, `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
return es.readArray([]); return es.readArray([]);
@ -79,8 +95,7 @@ function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
rimraf.sync(getExtensionPath(extension)); rimraf.sync(getExtensionPath(extension));
return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension)) return getExtensionDownloadStream(extension)
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
.pipe(vfs.dest('.build/builtInExtensions')) .pipe(vfs.dest('.build/builtInExtensions'))
.on('end', () => log(source, extension.name, ansiColors.green('✔︎'))); .on('end', () => log(source, extension.name, ansiColors.green('✔︎')));
} }

View file

@ -42,14 +42,20 @@ function bundle(entryPoints, config, callback) {
if (!config.paths['vs/css']) { if (!config.paths['vs/css']) {
config.paths['vs/css'] = 'out-build/vs/css.build'; config.paths['vs/css'] = 'out-build/vs/css.build';
} }
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
config.buildForceInvokeFactory['vs/nls'] = true;
config.buildForceInvokeFactory['vs/css'] = true;
loader.config(config); loader.config(config);
loader(['require'], (localRequire) => { loader(['require'], (localRequire) => {
const resolvePath = (path) => { const resolvePath = (entry) => {
const r = localRequire.toUrl(path); let r = localRequire.toUrl(entry.path);
if (!/\.js/.test(r)) { if (!r.endsWith('.js')) {
return r + '.js'; r += '.js';
} }
return r; // avoid packaging the build version of plugins:
r = r.replace('vs/nls.build.js', 'vs/nls.js');
r = r.replace('vs/css.build.js', 'vs/css.js');
return { path: r, amdModuleId: entry.amdModuleId };
}; };
for (const moduleId in entryPointsMap) { for (const moduleId in entryPointsMap) {
const entryPoint = entryPointsMap[moduleId]; const entryPoint = entryPointsMap[moduleId];
@ -298,9 +304,18 @@ function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend,
if (module.shim) { if (module.shim) {
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents)); mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
} }
else { else if (module.defineLocation) {
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents)); mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
} }
else {
const moduleCopy = {
id: module.id,
path: module.path,
defineLocation: module.defineLocation,
dependencies: module.dependencies
};
throw new Error(`Cannot bundle module '${module.id}' for entry point '${entryPoint}' because it has no shim and it lacks a defineLocation: ${JSON.stringify(moduleCopy)}`);
}
}); });
Object.keys(usedPlugins).forEach((pluginName) => { Object.keys(usedPlugins).forEach((pluginName) => {
const plugin = usedPlugins[pluginName]; const plugin = usedPlugins[pluginName];
@ -321,10 +336,13 @@ function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend,
plugin.writeFile(pluginName, entryPoint, req, write, {}); plugin.writeFile(pluginName, entryPoint, req, write, {});
} }
}); });
const toIFile = (path) => { const toIFile = (entry) => {
const contents = readFileAndRemoveBOM(path); let contents = readFileAndRemoveBOM(entry.path);
if (entry.amdModuleId) {
contents = contents.replace(/^define\(/m, `define("${entry.amdModuleId}",`);
}
return { return {
path: path, path: entry.path,
contents: contents contents: contents
}; };
}; };

View file

@ -15,7 +15,7 @@ interface IPosition {
interface IBuildModuleInfo { interface IBuildModuleInfo {
id: string; id: string;
path: string; path: string;
defineLocation: IPosition; defineLocation: IPosition | null;
dependencies: string[]; dependencies: string[];
shim: string; shim: string;
exports: any; exports: any;
@ -42,12 +42,17 @@ interface ILoaderPluginReqFunc {
toUrl(something: string): string; toUrl(something: string): string;
} }
export interface IExtraFile {
path: string;
amdModuleId?: string;
}
export interface IEntryPoint { export interface IEntryPoint {
name: string; name: string;
include?: string[]; include?: string[];
exclude?: string[]; exclude?: string[];
prepend?: string[]; prepend?: IExtraFile[];
append?: string[]; append?: IExtraFile[];
dest?: string; dest?: string;
} }
@ -92,6 +97,13 @@ interface IPartialBundleResult {
export interface ILoaderConfig { export interface ILoaderConfig {
isBuild?: boolean; isBuild?: boolean;
paths?: { [path: string]: any }; paths?: { [path: string]: any };
/*
* Normally, during a build, no module factories are invoked. This can be used
* to forcefully execute a module's factory.
*/
buildForceInvokeFactory: {
[moduleId: string]: boolean;
};
} }
/** /**
@ -132,15 +144,21 @@ export function bundle(entryPoints: IEntryPoint[], config: ILoaderConfig, callba
if (!config.paths['vs/css']) { if (!config.paths['vs/css']) {
config.paths['vs/css'] = 'out-build/vs/css.build'; config.paths['vs/css'] = 'out-build/vs/css.build';
} }
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
config.buildForceInvokeFactory['vs/nls'] = true;
config.buildForceInvokeFactory['vs/css'] = true;
loader.config(config); loader.config(config);
loader(['require'], (localRequire: any) => { loader(['require'], (localRequire: any) => {
const resolvePath = (path: string) => { const resolvePath = (entry: IExtraFile) => {
const r = localRequire.toUrl(path); let r = localRequire.toUrl(entry.path);
if (!/\.js/.test(r)) { if (!r.endsWith('.js')) {
return r + '.js'; r += '.js';
} }
return r; // avoid packaging the build version of plugins:
r = r.replace('vs/nls.build.js', 'vs/nls.js');
r = r.replace('vs/css.build.js', 'vs/css.js');
return { path: r, amdModuleId: entry.amdModuleId };
}; };
for (const moduleId in entryPointsMap) { for (const moduleId in entryPointsMap) {
const entryPoint = entryPointsMap[moduleId]; const entryPoint = entryPointsMap[moduleId];
@ -403,8 +421,8 @@ function emitEntryPoint(
deps: IGraph, deps: IGraph,
entryPoint: string, entryPoint: string,
includedModules: string[], includedModules: string[],
prepend: string[], prepend: IExtraFile[],
append: string[], append: IExtraFile[],
dest: string | undefined dest: string | undefined
): IEmitEntryPointResult { ): IEmitEntryPointResult {
if (!dest) { if (!dest) {
@ -444,8 +462,16 @@ function emitEntryPoint(
if (module.shim) { if (module.shim) {
mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents)); mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
} else { } else if (module.defineLocation) {
mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents)); mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
} else {
const moduleCopy = {
id: module.id,
path: module.path,
defineLocation: module.defineLocation,
dependencies: module.dependencies
};
throw new Error(`Cannot bundle module '${module.id}' for entry point '${entryPoint}' because it has no shim and it lacks a defineLocation: ${JSON.stringify(moduleCopy)}`);
} }
}); });
@ -470,10 +496,13 @@ function emitEntryPoint(
} }
}); });
const toIFile = (path: string): IFile => { const toIFile = (entry: IExtraFile): IFile => {
const contents = readFileAndRemoveBOM(path); let contents = readFileAndRemoveBOM(entry.path);
if (entry.amdModuleId) {
contents = contents.replace(/^define\(/m, `define("${entry.amdModuleId}",`);
}
return { return {
path: path, path: entry.path,
contents: contents contents: contents
}; };
}; };

View file

@ -1,10 +1,10 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = void 0; exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = void 0;
const es = require("event-stream"); const es = require("event-stream");
const fs = require("fs"); const fs = require("fs");
const gulp = require("gulp"); const gulp = require("gulp");
@ -34,7 +34,7 @@ function getTypeScriptCompilerOptions(src) {
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1; options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
return options; return options;
} }
function createCompile(src, build, emitError) { function createCompile(src, build, emitError, transpileOnly) {
const tsb = require('./tsb'); const tsb = require('./tsb');
const sourcemaps = require('gulp-sourcemaps'); const sourcemaps = require('gulp-sourcemaps');
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json'); const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
@ -42,7 +42,7 @@ function createCompile(src, build, emitError) {
if (!build) { if (!build) {
overrideOptions.inlineSourceMap = true; overrideOptions.inlineSourceMap = true;
} }
const compilation = tsb.create(projectPath, overrideOptions, { verbose: false }, err => reporter(err)); const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
function pipeline(token) { function pipeline(token) {
const bom = require('gulp-bom'); const bom = require('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path)); const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
@ -59,7 +59,7 @@ function createCompile(src, build, emitError) {
.pipe(noDeclarationsFilter) .pipe(noDeclarationsFilter)
.pipe(build ? nls.nls() : es.through()) .pipe(build ? nls.nls() : es.through())
.pipe(noDeclarationsFilter.restore) .pipe(noDeclarationsFilter.restore)
.pipe(sourcemaps.write('.', { .pipe(transpileOnly ? es.through() : sourcemaps.write('.', {
addComment: false, addComment: false,
includeContent: !!build, includeContent: !!build,
sourceRoot: overrideOptions.sourceRoot sourceRoot: overrideOptions.sourceRoot
@ -73,12 +73,22 @@ function createCompile(src, build, emitError) {
}; };
return pipeline; return pipeline;
} }
function transpileTask(src, out) {
return function () {
const transpile = createCompile(src, false, true, true);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
.pipe(transpile())
.pipe(gulp.dest(out));
};
}
exports.transpileTask = transpileTask;
function compileTask(src, out, build) { function compileTask(src, out, build) {
return function () { return function () {
if (os.totalmem() < 4000000000) { if (os.totalmem() < 4000000000) {
throw new Error('compilation requires 4GB of RAM'); throw new Error('compilation requires 4GB of RAM');
} }
const compile = createCompile(src, build, true); const compile = createCompile(src, build, true, false);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` }); const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
const generator = new MonacoGenerator(false); const generator = new MonacoGenerator(false);
if (src === 'src') { if (src === 'src') {
@ -93,7 +103,7 @@ function compileTask(src, out, build) {
exports.compileTask = compileTask; exports.compileTask = compileTask;
function watchTask(out, build) { function watchTask(out, build) {
return function () { return function () {
const compile = createCompile('src', build); const compile = createCompile('src', build, false, false);
const src = gulp.src('src/**', { base: 'src' }); const src = gulp.src('src/**', { base: 'src' });
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 }); const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
const generator = new MonacoGenerator(true); const generator = new MonacoGenerator(true);
@ -178,6 +188,15 @@ class MonacoGenerator {
} }
} }
function generateApiProposalNames() { function generateApiProposalNames() {
let eol;
try {
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
const match = /\r?\n/m.exec(src);
eol = match ? match[0] : os.EOL;
}
catch {
eol = os.EOL;
}
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/; const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
const proposalNames = new Set(); const proposalNames = new Set();
const input = es.through(); const input = es.through();
@ -204,7 +223,7 @@ function generateApiProposalNames() {
'});', '});',
'export type ApiProposalName = keyof typeof allApiProposals;', 'export type ApiProposalName = keyof typeof allApiProposals;',
'', '',
].join(os.EOL); ].join(eol);
this.emit('data', new File({ this.emit('data', new File({
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts', path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',
contents: Buffer.from(contents) contents: Buffer.from(contents)

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as es from 'event-stream'; import * as es from 'event-stream';
import * as fs from 'fs'; import * as fs from 'fs';
import * as gulp from 'gulp'; import * as gulp from 'gulp';
@ -39,7 +37,7 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
return options; return options;
} }
function createCompile(src: string, build: boolean, emitError?: boolean) { function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean) {
const tsb = require('./tsb') as typeof import('./tsb'); const tsb = require('./tsb') as typeof import('./tsb');
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps'); const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
@ -50,7 +48,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
overrideOptions.inlineSourceMap = true; overrideOptions.inlineSourceMap = true;
} }
const compilation = tsb.create(projectPath, overrideOptions, { verbose: false }, err => reporter(err)); const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
function pipeline(token?: util.ICancellationToken) { function pipeline(token?: util.ICancellationToken) {
const bom = require('gulp-bom') as typeof import('gulp-bom'); const bom = require('gulp-bom') as typeof import('gulp-bom');
@ -70,7 +68,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
.pipe(noDeclarationsFilter) .pipe(noDeclarationsFilter)
.pipe(build ? nls.nls() : es.through()) .pipe(build ? nls.nls() : es.through())
.pipe(noDeclarationsFilter.restore) .pipe(noDeclarationsFilter.restore)
.pipe(sourcemaps.write('.', { .pipe(transpileOnly ? es.through() : sourcemaps.write('.', {
addComment: false, addComment: false,
includeContent: !!build, includeContent: !!build,
sourceRoot: overrideOptions.sourceRoot sourceRoot: overrideOptions.sourceRoot
@ -86,6 +84,19 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
return pipeline; return pipeline;
} }
export function transpileTask(src: string, out: string): () => NodeJS.ReadWriteStream {
return function () {
const transpile = createCompile(src, false, true, true);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
.pipe(transpile())
.pipe(gulp.dest(out));
};
}
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream { export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
return function () { return function () {
@ -94,7 +105,7 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
throw new Error('compilation requires 4GB of RAM'); throw new Error('compilation requires 4GB of RAM');
} }
const compile = createCompile(src, build, true); const compile = createCompile(src, build, true, false);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` }); const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
const generator = new MonacoGenerator(false); const generator = new MonacoGenerator(false);
if (src === 'src') { if (src === 'src') {
@ -111,7 +122,7 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream { export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream {
return function () { return function () {
const compile = createCompile('src', build); const compile = createCompile('src', build, false, false);
const src = gulp.src('src/**', { base: 'src' }); const src = gulp.src('src/**', { base: 'src' });
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 }); const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
@ -215,6 +226,16 @@ class MonacoGenerator {
} }
function generateApiProposalNames() { function generateApiProposalNames() {
let eol: string;
try {
const src = fs.readFileSync('src/vs/workbench/services/extensions/common/extensionsApiProposals.ts', 'utf-8');
const match = /\r?\n/m.exec(src);
eol = match ? match[0] : os.EOL;
} catch {
eol = os.EOL;
}
const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/; const pattern = /vscode\.proposed\.([a-zA-Z]+)\.d\.ts$/;
const proposalNames = new Set<string>(); const proposalNames = new Set<string>();
@ -243,7 +264,7 @@ function generateApiProposalNames() {
'});', '});',
'export type ApiProposalName = keyof typeof allApiProposals;', 'export type ApiProposalName = keyof typeof allApiProposals;',
'', '',
].join(os.EOL); ].join(eol);
this.emit('data', new File({ this.emit('data', new File({
path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts', path: 'vs/workbench/services/extensions/common/extensionsApiProposals.ts',

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getProductionDependencies = void 0; exports.getProductionDependencies = void 0;
const path = require("path"); const path = require("path");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path'; import * as path from 'path';
import * as cp from 'child_process'; import * as cp from 'child_process';
import * as _ from 'underscore'; import * as _ from 'underscore';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0; exports.config = void 0;
const fs = require("fs"); const fs = require("fs");

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as fs from 'fs'; import * as fs from 'fs';
import * as path from 'path'; import * as path from 'path';
import * as vfs from 'vinyl-fs'; import * as vfs from 'vinyl-fs';

View file

@ -1,8 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Rule Definition // Rule Definition

View file

@ -3,8 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
'use strict';
import * as eslint from 'eslint'; import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/experimental-utils'; import { TSESTree } from '@typescript-eslint/experimental-utils';
import * as ESTree from 'estree'; import * as ESTree from 'estree';

View file

@ -1,14 +1,8 @@
"use strict";
/*--------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * 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 MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
/**
* @fileoverview Flag expressions in statement position that do not side effect
* @author Michael Ficarra
*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Rule Definition // Rule Definition

View file

@ -11,8 +11,6 @@
* @author Michael Ficarra * @author Michael Ficarra
*/ */
'use strict';
import * as eslint from 'eslint'; import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/experimental-utils'; import { TSESTree } from '@typescript-eslint/experimental-utils';
import * as ESTree from 'estree'; import * as ESTree from 'estree';

Some files were not shown because too many files have changed in this diff Show more