Skip to content

Commit

Permalink
Merge master into ds custom (#10261)
Browse files Browse the repository at this point in the history
* fixing a typo in CONTRIBUTING.md (#10044)

* fix for button backgrounds (#10234)

* add kernel connection sys info string (#10236)

* Fix to return env variables of interpreter that is not current interpreter (#10251)

For #10250
* Bug fix

* Support jupyter output in the remote scenario too (#10241)

* Add some output for remote situations

* Add news entry

* Skip flaky FS test (#10244)

Merely disables test for #10240

* Switch experiments settings scope to machine (#10237)

* Switch experiments settings scope to machine

* Add news item

* Show quickfixes for launch.json (#10245)

* Added implementation

* Added tests

* Moved into providers

* Add code actions vscode mock and convert .test.ts into unit.test.ts

* Rename folders

* Dispose registered services

* News entry

* Added unit tests

* Rename core service

* Reduce the number of build agents used by CI. (#10221)

* Drop extra jobs from the PR-validation pipeline.

This reduces the number of build agents we are using most frequently,
without sacrificing much coverage.  Note that this relies on 2 things:

* sufficient unit test coverage
* manual "full CI" runs when there may be OS-specific concerns

With this change:

* all tests get run on 3.x on linux (including smoke)
* for 2.7 only the unit and functional tests are run (and only on linux)
* on Windows and OSX, only functional and "single workspace" tests are run

The total number of test jobs (and hence agents) drops from 13 to 8.

* Drop extra jobs from the PR-merge pipeline.

This change relies on the nightly CI run covering the full matrix.

The total number of test jobs (and hence agents) drops from 39 to 24.

* Limit # of parallel jobs in each job matrix in the PR-merge and nightly pipelines.

This reduces the max number of agents used by the PR-merge pipeline to 8
(from 24).  For the nightly pipeline it goes down from 84 to 12.  Both
will take longer to complete, but that shouldn't be a major problem.

* Add a "manual build" CI pipeline for faster turnaround.

* Do not test internal tools on lower than Python 3.7.

* Drop the temporary workaround jobs.

* (again) Do not test internal tools on lower than Python 3.7.

* Improve the perf of functional tests running with real jupyter (#10242)

* Improve the perf of subsequent tests by caching interpreters

* Add back the nightly flake

* Remove coverage

* Add news entry

* Use a static map to allow promise to be cleared on new interpreters (as it was before)

Co-authored-by: Panpan Lin <panpanli@ie.ibm.com>
Co-authored-by: Ian Huff <ian.huff@gmail.com>
Co-authored-by: Rich Chiodo <rchiodo@users.noreply.github.com>
Co-authored-by: Karthik Nadig <kanadig@microsoft.com>
Co-authored-by: Kartik Raj <karraj@microsoft.com>
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
  • Loading branch information
7 people authored Feb 24, 2020
1 parent 93cf440 commit eea3f1c
Show file tree
Hide file tree
Showing 46 changed files with 1,082 additions and 259 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ From there use the ```Extension + Debugger``` launch option.
Information on our coding standards can be found [here](https://github.com/Microsoft/vscode-python/blob/master/CODING_STANDARDS.md).
We have CI tests to ensure the code committed will adhere to the above coding standards. *You can run this locally by executing the command `npx gulp precommit` or use the `precommit` Task.

Messages displayed to the user must ve localized using/created constants from/in the [localize.ts](https://github.com/Microsoft/vscode-python/blob/master/src/client/common/utils/localize.ts) file.
Messages displayed to the user must be localized using/created constants from/in the [localize.ts](https://github.com/Microsoft/vscode-python/blob/master/src/client/common/utils/localize.ts) file.

## Development process

Expand Down
9 changes: 9 additions & 0 deletions build/.mocha.functional.perf.opts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
./out/test/**/*.functional.test.js
--require=out/test/unittests.js
--exclude=out/**/*.jsx
--ui=tdd
--recursive
--colors
--exit
--timeout=180000
--reporter spec
296 changes: 296 additions & 0 deletions build/ci/vscode-python-ci-manual.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
# manual CI build

name: '$(Year:yyyy).$(Month).0.$(BuildID)-manual'

trigger: none
pr: none

# Variables that are available for the entire pipeline.
variables:
- template: templates/globals.yml

stages:
- stage: Build
jobs:
- template: templates/jobs/build_compile.yml

# Each item in each matrix has a number of possible values it may
# define. They are detailed in templates/test_phases.yml. The only
# required value is "TestsToRun".

- stage: Linux
dependsOn: []
jobs:
- job: 'Py3x'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
# with mocks
# focused on small units (i.e. functions)
# and tightly controlled dependencies
TestsToRun: 'testUnitTests, pythonUnitTests, pythonInternalTools, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
# no mocks, no vscode
# focused on integration
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
# no mocks, with vscode
# focused on integration
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Multi Workspace':
# no mocks, with vscode
# focused on integration
TestsToRun: 'testMultiWorkspace'
NeedsPythonTestReqs: true
'Venv':
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
# This is for the venvTests to use, not needed if you don't run venv tests...
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
'Smoke':
TestsToRun: 'testSmoke'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
#maxParallel: 3
pool:
vmImage: 'ubuntu-16.04'
steps:
- template: templates/test_phases.yml

# This is the oldest Python 3 version we support.
- job: 'Py36'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
PythonVersion: '3.6'
# Note: "pythonInternalTools" tests are 3.7+.
TestsToRun: 'testUnitTests, pythonUnitTests, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
PythonVersion: '3.6'
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
PythonVersion: '3.6'
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
#maxParallel: 3
pool:
vmImage: 'ubuntu-16.04'
steps:
- template: templates/test_phases.yml

# This is the oldest Python 3 version we support.
- job: 'Py35'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
PythonVersion: '3.5'
# Note: "pythonInternalTools" tests are 3.7+.
TestsToRun: 'testUnitTests, pythonUnitTests, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
PythonVersion: '3.5'
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
PythonVersion: '3.5'
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Venv':
PythonVersion: '3.5'
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
PythonVersion: '3.5'
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
#maxParallel: 3
pool:
vmImage: 'ubuntu-16.04'
steps:
- template: templates/test_phases.yml

- stage: Mac
dependsOn: []
jobs:
- job: 'Py3x'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
TestsToRun: 'testUnitTests, pythonUnitTests, pythonInternalTools, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Multi Workspace':
TestsToRun: 'testMultiWorkspace'
NeedsPythonTestReqs: true
'Venv':
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
'Smoke':
TestsToRun: 'testSmoke'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
#maxParallel: 3
pool:
vmImage: 'macos-10.13'
steps:
- template: templates/test_phases.yml

# This is the oldest Python 3 version we support.
- job: 'Py35'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
PythonVersion: '3.5'
# Note: "pythonInternalTools" tests are 3.7+.
TestsToRun: 'testUnitTests, pythonUnitTests, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
PythonVersion: '3.5'
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
PythonVersion: '3.5'
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Venv':
PythonVersion: '3.5'
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
PythonVersion: '3.5'
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
#maxParallel: 3
pool:
vmImage: 'macos-10.13'
steps:
- template: templates/test_phases.yml

- stage: Windows
dependsOn: []
jobs:
- job: 'Py3x'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
TestsToRun: 'testUnitTests, pythonUnitTests, pythonInternalTools, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Multi Workspace':
TestsToRun: 'testMultiWorkspace'
NeedsPythonTestReqs: true
'Venv':
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
'Smoke':
TestsToRun: 'testSmoke'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
#maxParallel: 3
pool:
vmImage: 'vs2017-win2016'
steps:
- template: templates/test_phases.yml

# This is the oldest Python 3 version we support.
- job: 'Py35'
dependsOn: []
timeoutInMinutes: 120
strategy:
matrix:
'Unit':
PythonVersion: '3.5'
# Note: "pythonInternalTools" tests are 3.7+.
TestsToRun: 'testUnitTests, pythonUnitTests, pythonIPythonTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
'Functional':
PythonVersion: '3.5'
TestsToRun: 'testfunctional'
NeedsPythonTestReqs: true
NeedsPythonFunctionalReqs: true
'Single Workspace':
PythonVersion: '3.5'
TestsToRun: 'testSingleWorkspace'
NeedsPythonTestReqs: true
'Venv':
PythonVersion: '3.5'
TestsToRun: 'venvTests'
NeedsPythonTestReqs: true
NeedsIPythonReqs: true
PYTHON_VIRTUAL_ENVS_LOCATION: './src/tmp/envPaths.json'
'Debugger':
PythonVersion: '3.5'
TestsToRun: 'testDebugger'
NeedsPythonTestReqs: true
#maxParallel: 3
pool:
vmImage: 'vs2017-win2016'
steps:
- template: templates/test_phases.yml

- stage: Reports
dependsOn:
- Linux
- Mac
- Windows
condition: always()
jobs:
- template: templates/jobs/coverage.yml
Loading

0 comments on commit eea3f1c

Please sign in to comment.