osdir.com

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] [Python-checkins] bpo-33522: Enable CI builds on Visual Studio Team Services (GH-6865) (GH-6925)


Why did this commit modify .py files, unittests, and test.support?

That is inappropriate for something claiming to merely enable a CI platform.

-gps

On Thu, May 17, 2018 at 6:50 AM Steve Dower <webhook-mailer at python.org>
wrote:

>
> https://github.com/python/cpython/commit/0d8f83f59c8f4cc7fe125434ca4ecdcac111810f
> commit: 0d8f83f59c8f4cc7fe125434ca4ecdcac111810f
> branch: 3.6
> author: Steve Dower <steve.dower at microsoft.com>
> committer: GitHub <noreply at github.com>
> date: 2018-05-17T09:46:00-04:00
> summary:
>
> bpo-33522: Enable CI builds on Visual Studio Team Services (GH-6865)
> (GH-6925)
>
> files:
> A .vsts/docs-release.yml
> A .vsts/docs.yml
> A .vsts/linux-buildbot.yml
> A .vsts/linux-coverage.yml
> A .vsts/linux-deps.yml
> A .vsts/linux-pr.yml
> A .vsts/macos-buildbot.yml
> A .vsts/macos-pr.yml
> A .vsts/windows-buildbot.yml
> A .vsts/windows-pr.yml
> A Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst
> A Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst
> M Doc/make.bat
> M Lib/tempfile.py
> M Lib/test/support/__init__.py
> M Lib/test/test_asyncio/test_base_events.py
> M Lib/test/test_bdb.py
> M Lib/test/test_pathlib.py
> M Lib/test/test_poplib.py
> M Lib/test/test_selectors.py
> M PCbuild/rt.bat
> M Tools/ssl/multissltests.py
>
> diff --git a/.vsts/docs-release.yml b/.vsts/docs-release.yml
> new file mode 100644
> index 000000000000..e90428a42494
> --- /dev/null
> +++ b/.vsts/docs-release.yml
> @@ -0,0 +1,43 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted Linux Preview
> +
> +#variables:
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- script: sudo apt-get update && sudo apt-get install -qy --force-yes
> texlive-full
> +  displayName: 'Install LaTeX'
> +
> +- task: UsePythonVersion at 0
> +  displayName: 'Use Python 3.6 or later'
> +  inputs:
> +    versionSpec: '>=3.6'
> +
> +- script: python -m pip install sphinx blurb python-docs-theme
> +  displayName: 'Install build dependencies'
> +
> +- script: make dist PYTHON=python SPHINXBUILD='python -m sphinx'
> BLURB='python -m blurb'
> +  workingDirectory: '$(build.sourcesDirectory)/Doc'
> +  displayName: 'Build documentation'
> +
> +- task: PublishBuildArtifacts at 1
> +  displayName: 'Publish build'
> +  inputs:
> +    PathToPublish: '$(build.sourcesDirectory)/Doc/build'
> +    ArtifactName: build
> +    publishLocation: Container
> +
> +- task: PublishBuildArtifacts at 1
> +  displayName: 'Publish dist'
> +  inputs:
> +    PathToPublish: '$(build.sourcesDirectory)/Doc/dist'
> +    ArtifactName: dist
> +    publishLocation: Container
> diff --git a/.vsts/docs.yml b/.vsts/docs.yml
> new file mode 100644
> index 000000000000..efa1e871656d
> --- /dev/null
> +++ b/.vsts/docs.yml
> @@ -0,0 +1,43 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted Linux Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    include:
> +    - Doc/*
> +
> +#variables:
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- task: UsePythonVersion at 0
> +  displayName: 'Use Python 3.6 or later'
> +  inputs:
> +    versionSpec: '>=3.6'
> +
> +- script: python -m pip install sphinx~=1.6.1 blurb python-docs-theme
> +  displayName: 'Install build dependencies'
> +
> +- script: make check suspicious html PYTHON=python
> +  workingDirectory: '$(build.sourcesDirectory)/Doc'
> +  displayName: 'Build documentation'
> +
> +- task: PublishBuildArtifacts at 1
> +  displayName: 'Publish build'
> +  inputs:
> +    PathToPublish: '$(build.sourcesDirectory)/Doc/build'
> +    ArtifactName: build
> +    publishLocation: Container
> diff --git a/.vsts/linux-buildbot.yml b/.vsts/linux-buildbot.yml
> new file mode 100644
> index 000000000000..d75d7f57650e
> --- /dev/null
> +++ b/.vsts/linux-buildbot.yml
> @@ -0,0 +1,71 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted Linux Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +variables:
> +  # Copy-pasted from linux-deps.yml until template support arrives
> +  OPENSSL: 1.1.0g
> +  OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
> +
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +#- template: linux-deps.yml
> +
> +# See
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
> +# For now, we copy/paste the steps
> +- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" >
> /etc/apt/sources.list.d/python.list && sudo apt-get update
> +  displayName: 'Update apt-get lists'
> +
> +- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
> +  displayName: 'Add $(OPENSSL_DIR) to PATH'
> +- script: >
> +    sudo apt-get -yq install
> +    build-essential
> +    zlib1g-dev
> +    libbz2-dev
> +    liblzma-dev
> +    libncurses5-dev
> +    libreadline6-dev
> +    libsqlite3-dev
> +    libssl-dev
> +    libgdbm-dev
> +    tk-dev
> +    lzma
> +    lzma-dev
> +    liblzma-dev
> +    libffi-dev
> +    uuid-dev
> +  displayName: 'Install dependencies'
> +- script: python3 Tools/ssl/multissltests.py --steps=library
> --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL)
> --system Linux
> +  displayName: 'python multissltests.py'
> +
> +- script: ./configure --with-pydebug
> +  displayName: 'Configure CPython (debug)'
> +
> +- script: make -s -j4
> +  displayName: 'Build CPython'
> +
> +- script: make pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: make buildbottest TESTOPTS="-j4 -uall,-cpu"
> +  displayName: 'Tests'
> diff --git a/.vsts/linux-coverage.yml b/.vsts/linux-coverage.yml
> new file mode 100644
> index 000000000000..3657b1720ee2
> --- /dev/null
> +++ b/.vsts/linux-coverage.yml
> @@ -0,0 +1,77 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted Linux Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +variables:
> +  # Copy-pasted from linux-deps.yml until template support arrives
> +  OPENSSL: 1.1.0g
> +  OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +#- template: linux-deps.yml
> +
> +# See
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
> +# For now, we copy/paste the steps
> +- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" >
> /etc/apt/sources.list.d/python.list && sudo apt-get update
> +  displayName: 'Update apt-get lists'
> +
> +- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
> +  displayName: 'Add $(OPENSSL_DIR) to PATH'
> +- script: >
> +    sudo apt-get -yq install
> +    build-essential
> +    zlib1g-dev
> +    libbz2-dev
> +    liblzma-dev
> +    libncurses5-dev
> +    libreadline6-dev
> +    libsqlite3-dev
> +    libssl-dev
> +    libgdbm-dev
> +    tk-dev
> +    lzma
> +    lzma-dev
> +    liblzma-dev
> +    libffi-dev
> +    uuid-dev
> +  displayName: 'Install dependencies'
> +- script: python3 Tools/ssl/multissltests.py --steps=library
> --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL)
> --system Linux
> +  displayName: 'python multissltests.py'
> +
> +
> +- script: ./configure --with-pydebug
> +  displayName: 'Configure CPython (debug)'
> +
> +- script: make -s -j4
> +  displayName: 'Build CPython'
> +
> +- script: ./python -m venv venv && ./venv/bin/python -m pip install -U
> coverage
> +  displayName: 'Set up virtual environment'
> +
> +- script: ./venv/bin/python -m test.pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: ./venv/bin/python -m coverage run --pylib -m test
> --fail-env-changed -uall,-cpu -x test_multiprocessing_fork -x
> test_multiprocessing_forkserver -x test_multiprocessing_spawn -x
> test_concurrent_futures
> +  displayName: 'Tests with coverage'
> +
> +- script: source ./venv/bin/activate && bash <(curl -s
> https://codecov.io/bash)
> +  displayName: 'Publish code coverage results'
> diff --git a/.vsts/linux-deps.yml b/.vsts/linux-deps.yml
> new file mode 100644
> index 000000000000..b6c8a3690ea1
> --- /dev/null
> +++ b/.vsts/linux-deps.yml
> @@ -0,0 +1,36 @@
> +# Note: this file is not currently used, but when template support comes
> to VSTS it
> +# will be referenced from the other scripts..
> +
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +parameters:
> +  OPENSSL: 1.1.0g
> +  OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
> +
> +steps:
> +- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" >
> /etc/apt/sources.list.d/python.list && sudo apt-get update
> +  displayName: 'Update apt-get lists'
> +
> +- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
> +  displayName: 'Add $(OPENSSL_DIR) to PATH'
> +- script: >
> +    sudo apt-get -yq install
> +    build-essential
> +    zlib1g-dev
> +    libbz2-dev
> +    liblzma-dev
> +    libncurses5-dev
> +    libreadline6-dev
> +    libsqlite3-dev
> +    libssl-dev
> +    libgdbm-dev
> +    tk-dev
> +    lzma
> +    lzma-dev
> +    liblzma-dev
> +    libffi-dev
> +    uuid-dev
> +  displayName: 'Install dependencies'
> +- script: python3 Tools/ssl/multissltests.py --steps=library
> --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL)
> --system Linux
> +  displayName: 'python multissltests.py'
> diff --git a/.vsts/linux-pr.yml b/.vsts/linux-pr.yml
> new file mode 100644
> index 000000000000..7f4d458f5a7c
> --- /dev/null
> +++ b/.vsts/linux-pr.yml
> @@ -0,0 +1,75 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted Linux Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +variables:
> +  # Copy-pasted from linux-deps.yml until template support arrives
> +  OPENSSL: 1.1.0g
> +  OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +#- template: linux-deps.yml
> +
> +# See
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
> +# For now, we copy/paste the steps
> +- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" >
> /etc/apt/sources.list.d/python.list && sudo apt-get update
> +  displayName: 'Update apt-get lists'
> +
> +- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
> +  displayName: 'Add $(OPENSSL_DIR) to PATH'
> +- script: >
> +    sudo apt-get -yq install
> +    build-essential
> +    zlib1g-dev
> +    libbz2-dev
> +    liblzma-dev
> +    libncurses5-dev
> +    libreadline6-dev
> +    libsqlite3-dev
> +    libssl-dev
> +    libgdbm-dev
> +    tk-dev
> +    lzma
> +    lzma-dev
> +    liblzma-dev
> +    libffi-dev
> +    uuid-dev
> +  displayName: 'Install dependencies'
> +- script: python3 Tools/ssl/multissltests.py --steps=library
> --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL)
> --system Linux
> +  displayName: 'python multissltests.py'
> +
> +
> +- script: ./configure --with-pydebug
> +  displayName: 'Configure CPython (debug)'
> +
> +- script: make -s -j4
> +  displayName: 'Build CPython'
> +
> +- script: make pythoninfo
> +  displayName: 'Display build info'
> +
> +# Run patchcheck and fail if anything is discovered
> +- script: ./python Tools/scripts/patchcheck.py --travis true
> +  displayName: 'Run patchcheck.py'
> +
> +- script: make buildbottest TESTOPTS="-j4 -uall,-cpu"
> +  displayName: 'Tests'
> diff --git a/.vsts/macos-buildbot.yml b/.vsts/macos-buildbot.yml
> new file mode 100644
> index 000000000000..8a4f6ba8cb8b
> --- /dev/null
> +++ b/.vsts/macos-buildbot.yml
> @@ -0,0 +1,37 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted macOS Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +#variables:
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl
> +  displayName: 'Configure CPython (debug)'
> +
> +- script: make -s -j4
> +  displayName: 'Build CPython'
> +
> +- script: make pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: make buildbottest TESTOPTS="-j4 -uall,-cpu"
> +  displayName: 'Tests'
> diff --git a/.vsts/macos-pr.yml b/.vsts/macos-pr.yml
> new file mode 100644
> index 000000000000..8a4f6ba8cb8b
> --- /dev/null
> +++ b/.vsts/macos-pr.yml
> @@ -0,0 +1,37 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted macOS Preview
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +#variables:
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl
> +  displayName: 'Configure CPython (debug)'
> +
> +- script: make -s -j4
> +  displayName: 'Build CPython'
> +
> +- script: make pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: make buildbottest TESTOPTS="-j4 -uall,-cpu"
> +  displayName: 'Tests'
> diff --git a/.vsts/windows-buildbot.yml b/.vsts/windows-buildbot.yml
> new file mode 100644
> index 000000000000..5ec4522796ce
> --- /dev/null
> +++ b/.vsts/windows-buildbot.yml
> @@ -0,0 +1,49 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted VS2017
> +  parallel: 2
> +  matrix:
> +    amd64:
> +      buildOpt: -p x64
> +      outDirSuffix: amd64
> +    win32:
> +      buildOpt:
> +      outDirSuffix: win32
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +variables:
> +  # Relocate build outputs outside of source directory to make cleaning
> faster
> +  Py_IntDir: $(Build.BinariesDirectory)\obj
> +  # UNDONE: Do not build to a different directory because of broken tests
> +  Py_OutDir: $(Build.SourcesDirectory)\PCbuild
> +  EXTERNAL_DIR: $(Build.BinariesDirectory)\externals
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- script: PCbuild\build.bat -e $(buildOpt)
> +  displayName: 'Build CPython'
> +
> +- script: python.bat -m test.pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
> +  displayName: 'Tests'
> +  env:
> +    PREFIX: $(Py_OutDir)\$(outDirSuffix)
> diff --git a/.vsts/windows-pr.yml b/.vsts/windows-pr.yml
> new file mode 100644
> index 000000000000..5ec4522796ce
> --- /dev/null
> +++ b/.vsts/windows-pr.yml
> @@ -0,0 +1,49 @@
> +# Current docs for the syntax of this file are at:
> +#
> https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md
> +
> +name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)
> +
> +queue:
> +  name: Hosted VS2017
> +  parallel: 2
> +  matrix:
> +    amd64:
> +      buildOpt: -p x64
> +      outDirSuffix: amd64
> +    win32:
> +      buildOpt:
> +      outDirSuffix: win32
> +
> +trigger:
> +  branches:
> +    include:
> +    - master
> +    - 3.7
> +    - 3.6
> +  paths:
> +    exclude:
> +    - Doc/*
> +    - Tools/*
> +
> +variables:
> +  # Relocate build outputs outside of source directory to make cleaning
> faster
> +  Py_IntDir: $(Build.BinariesDirectory)\obj
> +  # UNDONE: Do not build to a different directory because of broken tests
> +  Py_OutDir: $(Build.SourcesDirectory)\PCbuild
> +  EXTERNAL_DIR: $(Build.BinariesDirectory)\externals
> +
> +steps:
> +- checkout: self
> +  clean: true
> +  fetchDepth: 5
> +
> +- script: PCbuild\build.bat -e $(buildOpt)
> +  displayName: 'Build CPython'
> +
> +- script: python.bat -m test.pythoninfo
> +  displayName: 'Display build info'
> +
> +- script: PCbuild\rt.bat -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0
> +  displayName: 'Tests'
> +  env:
> +    PREFIX: $(Py_OutDir)\$(outDirSuffix)
> diff --git a/Doc/make.bat b/Doc/make.bat
> index 6cb315fda405..c69cfae31941 100644
> --- a/Doc/make.bat
> +++ b/Doc/make.bat
> @@ -5,18 +5,21 @@ pushd %~dp0
>
>  set this=%~n0
>
> -call ..\PCBuild\find_python.bat %PYTHON%
> -if not defined SPHINXBUILD if defined PYTHON (
> +call ..\PCbuild\find_python.bat %PYTHON%
> +
> +if not defined PYTHON set PYTHON=py
> +
> +if not defined SPHINXBUILD (
>      %PYTHON% -c "import sphinx" > nul 2> nul
>      if errorlevel 1 (
>          echo Installing sphinx with %PYTHON%
> -        %PYTHON% -m pip install sphinx
> +        %PYTHON% -m pip install sphinx python-docs-theme
>          if errorlevel 1 exit /B
>      )
>      set SPHINXBUILD=%PYTHON% -c "import sphinx, sys; sys.argv[0] =
> 'sphinx-build'; sphinx.main()"
>  )
>
> -if not defined BLURB if defined PYTHON (
> +if not defined BLURB (
>      %PYTHON% -c "import blurb" > nul 2> nul
>      if errorlevel 1 (
>          echo Installing blurb with %PYTHON%
> @@ -26,7 +29,6 @@ if not defined BLURB if defined PYTHON (
>      set BLURB=%PYTHON% -m blurb
>  )
>
> -if not defined PYTHON set PYTHON=py
>  if not defined SPHINXBUILD set SPHINXBUILD=sphinx-build
>  if not defined BLURB set BLURB=blurb
>
> diff --git a/Lib/tempfile.py b/Lib/tempfile.py
> index 38738082b996..2cb5434ba7b5 100644
> --- a/Lib/tempfile.py
> +++ b/Lib/tempfile.py
> @@ -173,7 +173,9 @@ def _candidate_tempdir_list():
>
>      # Failing that, try OS-specific locations.
>      if _os.name == 'nt':
> -        dirlist.extend([ r'c:\temp', r'c:\tmp', r'\temp', r'\tmp' ])
> +        dirlist.extend([ _os.path.expanduser(r'~\AppData\Local\Temp'),
> +                         _os.path.expandvars(r'%SYSTEMROOT%\Temp'),
> +                         r'c:\temp', r'c:\tmp', r'\temp', r'\tmp' ])
>      else:
>          dirlist.extend([ '/tmp', '/var/tmp', '/usr/tmp' ])
>
> diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
> index 867124b63e24..e46394e89d1f 100644
> --- a/Lib/test/support/__init__.py
> +++ b/Lib/test/support/__init__.py
> @@ -366,6 +366,20 @@ def _rmtree_inner(path):
>                      _force_run(fullname, os.unlink, fullname)
>          _waitfor(_rmtree_inner, path, waitall=True)
>          _waitfor(lambda p: _force_run(p, os.rmdir, p), path)
> +
> +    def _longpath(path):
> +        try:
> +            import ctypes
> +        except ImportError:
> +            # No ctypes means we can't expands paths.
> +            pass
> +        else:
> +            buffer = ctypes.create_unicode_buffer(len(path) * 2)
> +            length = ctypes.windll.kernel32.GetLongPathNameW(path, buffer,
> +                                                             len(buffer))
> +            if length:
> +                return buffer[:length]
> +        return path
>  else:
>      _unlink = os.unlink
>      _rmdir = os.rmdir
> @@ -392,6 +406,9 @@ def _rmtree_inner(path):
>          _rmtree_inner(path)
>          os.rmdir(path)
>
> +    def _longpath(path):
> +        return path
> +
>  def unlink(filename):
>      try:
>          _unlink(filename)
> @@ -2333,13 +2350,15 @@ def can_xattr():
>      if not hasattr(os, "setxattr"):
>          can = False
>      else:
> -        tmp_fp, tmp_name = tempfile.mkstemp()
> +        tmp_dir = tempfile.mkdtemp()
> +        tmp_fp, tmp_name = tempfile.mkstemp(dir=tmp_dir)
>          try:
>              with open(TESTFN, "wb") as fp:
>                  try:
>                      # TESTFN & tempfile may use different file systems
> with
>                      # different capabilities
>                      os.setxattr(tmp_fp, b"user.test", b"")
> +                    os.setxattr(tmp_name, b"trusted.foo", b"42")
>                      os.setxattr(fp.fileno(), b"user.test", b"")
>                      # Kernels < 2.6.39 don't respect setxattr flags.
>                      kernel_version = platform.release()
> @@ -2350,6 +2369,7 @@ def can_xattr():
>          finally:
>              unlink(TESTFN)
>              unlink(tmp_name)
> +            rmdir(tmp_dir)
>      _can_xattr = can
>      return can
>
> diff --git a/Lib/test/test_asyncio/test_base_events.py
> b/Lib/test/test_asyncio/test_base_events.py
> index 830f0d84a9d4..42c0707e8f21 100644
> --- a/Lib/test/test_asyncio/test_base_events.py
> +++ b/Lib/test/test_asyncio/test_base_events.py
> @@ -1750,5 +1750,6 @@ def runner(loop):
>              outer_loop.close()
>
>
> +
>  if __name__ == '__main__':
>      unittest.main()
> diff --git a/Lib/test/test_bdb.py b/Lib/test/test_bdb.py
> index abefe6c4e57a..a36667869718 100644
> --- a/Lib/test/test_bdb.py
> +++ b/Lib/test/test_bdb.py
> @@ -417,15 +417,17 @@ def __init__(self, test_case, skip=None):
>          self.dry_run = test_case.dry_run
>          self.tracer = Tracer(test_case.expect_set, skip=skip,
>                               dry_run=self.dry_run, test_case=test_case.id
> ())
> +        self._original_tracer = None
>
>      def __enter__(self):
>          # test_pdb does not reset Breakpoint class attributes on exit :-(
>          reset_Breakpoint()
> +        self._original_tracer = sys.gettrace()
>          return self.tracer
>
>      def __exit__(self, type_=None, value=None, traceback=None):
>          reset_Breakpoint()
> -        sys.settrace(None)
> +        sys.settrace(self._original_tracer)
>
>          not_empty = ''
>          if self.tracer.set_list:
> diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
> index db53a8f202dc..bf9467e96e09 100644
> --- a/Lib/test/test_pathlib.py
> +++ b/Lib/test/test_pathlib.py
> @@ -1531,7 +1531,7 @@ def test_resolve_common(self):
>              # resolves to 'dirB/..' first before resolving to parent of
> dirB.
>              self._check_resolve_relative(p, P(BASE, 'foo', 'in', 'spam'),
> False)
>          # Now create absolute symlinks
> -        d = tempfile.mkdtemp(suffix='-dirD')
> +        d = support._longpath(tempfile.mkdtemp(suffix='-dirD'))
>          self.addCleanup(support.rmtree, d)
>          os.symlink(os.path.join(d), join('dirA', 'linkX'))
>          os.symlink(join('dirB'), os.path.join(d, 'linkY'))
> diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py
> index ca9bc6217509..234c855545c2 100644
> --- a/Lib/test/test_poplib.py
> +++ b/Lib/test/test_poplib.py
> @@ -217,11 +217,12 @@ def start(self):
>      def run(self):
>          self.active = True
>          self.__flag.set()
> -        while self.active and asyncore.socket_map:
> -            self.active_lock.acquire()
> -            asyncore.loop(timeout=0.1, count=1)
> -            self.active_lock.release()
> -        asyncore.close_all(ignore_all=True)
> +        try:
> +            while self.active and asyncore.socket_map:
> +                with self.active_lock:
> +                    asyncore.loop(timeout=0.1, count=1)
> +        finally:
> +            asyncore.close_all(ignore_all=True)
>
>      def stop(self):
>          assert self.active
> diff --git a/Lib/test/test_selectors.py b/Lib/test/test_selectors.py
> index 852b2feb45fd..14ce91f3768c 100644
> --- a/Lib/test/test_selectors.py
> +++ b/Lib/test/test_selectors.py
> @@ -450,7 +450,14 @@ def test_above_fd_setsize(self):
>                      self.skipTest("FD limit reached")
>                  raise
>
> -        self.assertEqual(NUM_FDS // 2, len(s.select()))
> +        try:
> +            fds = s.select()
> +        except OSError as e:
> +            if e.errno == errno.EINVAL and sys.platform == 'darwin':
> +                # unexplainable errors on macOS don't need to fail the
> test
> +                self.skipTest("Invalid argument error calling poll()")
> +            raise
> +        self.assertEqual(NUM_FDS // 2, len(fds))
>
>
>  class DefaultSelectorTestCase(BaseSelectorTestCase):
> diff --git
> a/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst
> b/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst
> new file mode 100644
> index 000000000000..f44862f0c454
> --- /dev/null
> +++ b/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst
> @@ -0,0 +1,2 @@
> +Enable CI builds on Visual Studio Team Services at
> +https://python.visualstudio.com/cpython
> diff --git
> a/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst
> b/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst
> new file mode 100644
> index 000000000000..65585c152987
> --- /dev/null
> +++ b/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst
> @@ -0,0 +1 @@
> +tempfile._candidate_tempdir_list should consider common TEMP locations
> diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat
> index 808102f826d3..212befc95b06 100644
> --- a/PCbuild/rt.bat
> +++ b/PCbuild/rt.bat
> @@ -7,7 +7,7 @@ rem -q   "quick" -- normally the tests are run twice, the
> first time
>  rem      after deleting all the .pyc files reachable from Lib/.
>  rem      -q runs the tests just once, and without deleting .pyc files.
>  rem -x64 Run the 64-bit build of python (or python_d if -d was specified)
> -rem      from the 'amd64' dir instead of the 32-bit build in this dir.
> +rem      When omitted, uses %PREFIX% if set or the 32-bit build
>  rem All leading instances of these switches are shifted off, and
>  rem whatever remains (up to 9 arguments) is passed to regrtest.py.
>  rem For example,
> @@ -28,28 +28,29 @@ rem     rt -u "network,largefile"
>  setlocal
>
>  set pcbuild=%~dp0
> -set prefix=%pcbuild%win32\
>  set suffix=
>  set qmode=
>  set dashO=
>  set regrtestargs=
> +set exe=
>
>  :CheckOpts
>  if "%1"=="-O" (set dashO=-O)     & shift & goto CheckOpts
>  if "%1"=="-q" (set qmode=yes)    & shift & goto CheckOpts
>  if "%1"=="-d" (set suffix=_d)    & shift & goto CheckOpts
> -if "%1"=="-x64" (set prefix=%pcbuild%amd64\) & shift & goto CheckOpts
> +if "%1"=="-x64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts
>  if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto
> CheckOpts
>
> -set exe=%prefix%python%suffix%.exe
> -set cmd="%exe%" %dashO% -Wd -E -bb -m test %regrtestargs%
> +if not defined prefix set prefix=%pcbuild%win32
> +set exe=%prefix%\python%suffix%.exe
> +set cmd="%exe%" %dashO% -u -Wd -E -bb -m test %regrtestargs%
>  if defined qmode goto Qmode
>
>  echo Deleting .pyc files ...
>  "%exe%" "%pcbuild%rmpyc.py"
>
>  echo Cleaning _pth files ...
> -if exist %prefix%*._pth del %prefix%*._pth
> +if exist %prefix%\*._pth del %prefix%\*._pth
>
>  echo on
>  %cmd%
> diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
> index ba4529ae0611..f3241cd6071c 100755
> --- a/Tools/ssl/multissltests.py
> +++ b/Tools/ssl/multissltests.py
> @@ -123,6 +123,11 @@
>      action='store_true',
>      help="Don't run tests, only compile _ssl.c and _hashopenssl.c."
>  )
> +parser.add_argument(
> +    '--system',
> +    default='',
> +    help="Override the automatic system type detection."
> +)
>
>
>  class AbstractBuilder(object):
> @@ -150,6 +155,7 @@ def __init__(self, version, compile_args=(),
>          # build directory (removed after install)
>          self.build_dir = os.path.join(
>              self.src_dir, self.build_template.format(version))
> +        self.system = args.system
>
>      def __str__(self):
>          return "<{0.__class__.__name__} for {0.version}>".format(self)
> @@ -254,9 +260,13 @@ def _build_src(self):
>          cwd = self.build_dir
>          cmd = ["./config", "shared",
> "--prefix={}".format(self.install_dir)]
>          cmd.extend(self.compile_args)
> -        self._subprocess_call(cmd, cwd=cwd)
> +        env = None
> +        if self.system:
> +            env = os.environ.copy()
> +            env['SYSTEM'] = self.system
> +        self._subprocess_call(cmd, cwd=cwd, env=env)
>          # Old OpenSSL versions do not support parallel builds.
> -        self._subprocess_call(["make", "-j1"], cwd=cwd)
> +        self._subprocess_call(["make", "-j1"], cwd=cwd, env=env)
>
>      def _make_install(self, remove=True):
>          self._subprocess_call(["make", "-j1", "install"],
> cwd=self.build_dir)
>
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> https://mail.python.org/mailman/listinfo/python-checkins
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180517/5fca457e/attachment-0001.html>