diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 7c0efc783edb2f..b5538d22fb2ace 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -485,7 +485,9 @@ def _is_gui_available(): if hasattr(_is_gui_available, 'result'): return _is_gui_available.result reason = None - if sys.platform.startswith('win'): + if sys.platform.startswith('win') and platform.win32_is_iot(): + reason = "gui is not available on Windows IoT Core" + elif sys.platform.startswith('win'): # if Python is running as a service (such as the buildbot service), # gui interaction may be disallowed import ctypes diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index fa690441be43ce..362d09370d4522 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -468,6 +468,8 @@ def testCos(self): self.assertRaises(ValueError, math.cos, NINF) self.assertTrue(math.isnan(math.cos(NAN))) + @unittest.skipIf(sys.platform == 'win32' and platform.machine() in ('ARM', 'ARM64'), + "Windows UCRT is off by 2 ULP this test requires accuracy within 1 ULP") def testCosh(self): self.assertRaises(TypeError, math.cosh) self.ftest('cosh(0)', math.cosh(0), 1) diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py index 92fffc45f30a96..082d85a3d2b945 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -3,6 +3,7 @@ from io import BytesIO import os +import platform import sys import sysconfig import unittest @@ -465,7 +466,7 @@ def test_exception(self): "pyexpat.c", "StartElement") self.check_traceback_entry(entries[2], "test_pyexpat.py", "StartElementHandler") - if sysconfig.is_python_build(): + if sysconfig.is_python_build() and not (sys.platform == 'win32' and platform.machine() == 'ARM'): self.assertIn('call_with_frame("StartElement"', entries[1][3]) diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index 904b326d0e2049..0a009255cb9b56 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -618,6 +618,8 @@ def test_tools_buildbot_test(self): test_args = ['--testdir=%s' % self.tmptestdir] if platform.machine() == 'ARM64': test_args.append('-arm64') # ARM 64-bit build + elif platform.machine() == 'ARM': + test_args.append('-arm32') # 32-bit ARM build elif platform.architecture()[0] == '64bit': test_args.append('-x64') # 64-bit build if not Py_DEBUG: @@ -633,6 +635,8 @@ def test_pcbuild_rt(self): rt_args = ["-q"] # Quick, don't run tests twice if platform.machine() == 'ARM64': rt_args.append('-arm64') # ARM 64-bit build + elif platform.machine() == 'ARM': + rt_args.append('-arm32') # 32-bit ARM build elif platform.architecture()[0] == '64bit': rt_args.append('-x64') # 64-bit build if Py_DEBUG: diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 7ba8156eef5da8..c72a85710d5cb8 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -28,6 +28,9 @@ from ssl import TLSVersion, _TLSContentType, _TLSMessageType, _TLSAlertType +Py_DEBUG = hasattr(sys, 'gettotalrefcount') +Py_DEBUG_WIN32 = Py_DEBUG and sys.platform == 'win32' + PROTOCOLS = sorted(ssl._PROTOCOL_NAMES) HOST = support.HOST IS_LIBRESSL = ssl.OPENSSL_VERSION.startswith('LibreSSL') @@ -1347,6 +1350,7 @@ def test_load_verify_cadata(self): ctx.load_verify_locations(cadata=b"broken") + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_load_dh_params(self): ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) ctx.load_dh_params(DHFILE) @@ -1665,6 +1669,7 @@ def test_str(self): self.assertEqual(str(e), "foo") self.assertEqual(e.errno, 1) + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_lib_reason(self): # Test the library and reason attributes ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) @@ -3845,6 +3850,7 @@ def test_compression_disabled(self): sni_name=hostname) self.assertIs(stats['compression'], None) + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_dh_params(self): # Check we can get a connection with ephemeral Diffie-Hellman client_context, server_context, hostname = testing_context() @@ -4440,6 +4446,7 @@ def keylog_lines(self, fname=support.TESTFN): return len(list(f)) @requires_keylog + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_keylog_defaults(self): self.addCleanup(support.unlink, support.TESTFN) ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) @@ -4463,6 +4470,7 @@ def test_keylog_defaults(self): ctx.keylog_filename = 1 @requires_keylog + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_keylog_filename(self): self.addCleanup(support.unlink, support.TESTFN) client_context, server_context, hostname = testing_context() @@ -4500,6 +4508,7 @@ def test_keylog_filename(self): @requires_keylog @unittest.skipIf(sys.flags.ignore_environment, "test is not compatible with ignore_environment") + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") def test_keylog_env(self): self.addCleanup(support.unlink, support.TESTFN) with unittest.mock.patch.dict(os.environ): diff --git a/Tools/buildbot/remoteDeploy.bat b/Tools/buildbot/remoteDeploy.bat new file mode 100644 index 00000000000000..ac1e38b9617c94 --- /dev/null +++ b/Tools/buildbot/remoteDeploy.bat @@ -0,0 +1,48 @@ +@echo off +rem Used by the buildbot "remotedeploy" step. +setlocal + +set here=%~dp0 +set arm32_ssh= + +:CheckOpts +if "%1"=="-arm32" (set arm32_ssh=true) & shift & goto CheckOpts +if NOT "%1"=="" (echo unrecognized option %1) & goto Arm32SshHelp + +if "%arm32_ssh%"=="true" goto :Arm32Ssh + +:Arm32Ssh +if "%SSH_SERVER%"=="" goto :Arm32SshHelp +if "%SSH%"=="" if EXIST %WINDIR%\System32\OpenSSH\ssh.exe (set SSH=%WINDIR%\System32\OpenSSH\ssh.exe) +if "%SCP%"=="" if EXIST %WINDIR%\System32\OpenSSH\scp.exe (set SCP=%WINDIR%\System32\OpenSSH\scp.exe) +echo SSH = %SSH% +echo SCP = %SCP% +if "%PYTHON_SOURCE%"=="" (set PYTHON_SOURCE=%here%..\..\) +if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\) +if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\) +%SSH% %SSH_SERVER% "if EXIST %REMOTE_PYTHON_DIR% (rd %REMOTE_PYTHON_DIR% /s/q)" +%SSH% %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PCBuild\arm32" +%SSH% %SSH_SERVER% "md %REMOTE_PYTHON_DIR%temp" +%SSH% %SSH_SERVER% "md %REMOTE_PYTHON_DIR%Modules" +%SSH% %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PC" +for /f "USEBACKQ" %%i in (`dir PCbuild\*.bat /b`) do @%SCP% PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild" +for /f "USEBACKQ" %%i in (`dir PCbuild\*.py /b`) do @%SCP% PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild" +for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.exe /b`) do @%SCP% PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" +for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.pyd /b`) do @%SCP% PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" +for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.dll /b`) do @%SCP% PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" +%SCP% -r "%PYTHON_SOURCE%Include" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Include" +%SCP% -r "%PYTHON_SOURCE%Lib" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Lib" +%SCP% -r "%PYTHON_SOURCE%Tools" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Tools" +%SCP% "%PYTHON_SOURCE%Modules\Setup" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Modules" +%SCP% "%PYTHON_SOURCE%PC\pyconfig.h" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PC" + +exit /b %ERRORLEVEL% + +:Arm32SshHelp +echo SSH_SERVER environment variable must be set to administrator@[ip address] +echo where [ip address] is the address of a Windows IoT Core ARM32 device. +echo. +echo The test worker should have the SSH agent running. +echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine +echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh +exit /b 127 diff --git a/Tools/buildbot/remotePythonInfo.bat b/Tools/buildbot/remotePythonInfo.bat new file mode 100644 index 00000000000000..263808cfddfd40 --- /dev/null +++ b/Tools/buildbot/remotePythonInfo.bat @@ -0,0 +1,34 @@ +@echo off +rem Used by the buildbot "remotedeploy" step. +setlocal + +set here=%~dp0 +set arm32_ssh= +set suffix=_d +if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\) +if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\) + +:CheckOpts +if "%1"=="-arm32" (set arm32_ssh=true) & (set prefix=%REMOTE_PYTHON_DIR%pcbuild\arm32) & shift & goto CheckOpts +if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts +if "%1"=="+d" (set suffix=) & shift & goto CheckOpts +if NOT "%1"=="" (echo unrecognized option %1) & goto Arm32SshHelp + +if "%arm32_ssh%"=="true" goto :Arm32Ssh + +:Arm32Ssh +if "%SSH_SERVER%"=="" goto :Arm32SshHelp +if "%SSH%"=="" if EXIST %WINDIR%\System32\OpenSSH\ssh.exe (set SSH=%WINDIR%\System32\OpenSSH\ssh.exe) +set PYTHON_EXE=%prefix%\python%suffix%.exe +echo on +%SSH% %SSH_SERVER% %PYTHON_EXE% -m test.pythoninfo +exit /b %ERRORLEVEL% + +:Arm32SshHelp +echo SSH_SERVER environment variable must be set to administrator@[ip address] +echo where [ip address] is the address of a Windows IoT Core ARM32 device. +echo. +echo The test worker should have the SSH agent running. +echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine +echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh +exit /b 127 diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat index 1566f46c534f75..685f73d41edc4f 100644 --- a/Tools/buildbot/test.bat +++ b/Tools/buildbot/test.bat @@ -18,8 +18,10 @@ if "%1"=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts if "%1"=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts if NOT "%1"=="" (set regrtest_args=%regrtest_args% %1) & shift & goto CheckOpts +if "%PROCESSOR_ARCHITECTURE%"=="ARM" if "%arm32_ssh%"=="true" goto NativeExecution if "%arm32_ssh%"=="true" goto :Arm32Ssh +:NativeExecution call "%here%..\..\PCbuild\rt.bat" %rt_opts% -uall -rwW --slowest --timeout=1200 --fail-env-changed %regrtest_args% exit /b %ERRORLEVEL% @@ -28,20 +30,12 @@ set dashU=-unetwork,decimal,subprocess,urlfetch,tzdata if "%SSH_SERVER%"=="" goto :Arm32SshHelp if "%PYTHON_SOURCE%"=="" (set PYTHON_SOURCE=%here%..\..\) if "%REMOTE_PYTHON_DIR%"=="" (set REMOTE_PYTHON_DIR=C:\python\) +if NOT "%REMOTE_PYTHON_DIR:~-1,1%"=="\" (set REMOTE_PYTHON_DIR=%REMOTE_PYTHON_DIR%\) +if "%SSH%"=="" if EXIST %WINDIR%\System32\OpenSSH\ssh.exe (set SSH=%WINDIR%\System32\OpenSSH\ssh.exe) set TEMP_ARGS=--temp %REMOTE_PYTHON_DIR%temp -ssh %SSH_SERVER% "if EXIST %REMOTE_PYTHON_DIR% (rd %REMOTE_PYTHON_DIR% /s/q)" -ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%PCBuild\arm32" -ssh %SSH_SERVER% "md %REMOTE_PYTHON_DIR%temp" -for /f "USEBACKQ" %%i in (`dir PCbuild\*.bat /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild" -for /f "USEBACKQ" %%i in (`dir PCbuild\*.py /b`) do @scp PCBuild\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild" -for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.exe /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" -for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.pyd /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" -for /f "USEBACKQ" %%i in (`dir PCbuild\arm32\*.dll /b`) do @scp PCBuild\arm32\%%i "%SSH_SERVER%:%REMOTE_PYTHON_DIR%PCBuild\arm32" -scp -r "%PYTHON_SOURCE%Include" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Include" -scp -r "%PYTHON_SOURCE%Lib" "%SSH_SERVER%:%REMOTE_PYTHON_DIR%Lib" set rt_args=%rt_opts% %dashU% -rwW --slowest --timeout=1200 --fail-env-changed %regrtest_args% %TEMP_ARGS% -ssh %SSH_SERVER% "set TEMP=%REMOTE_PYTHON_DIR%temp& %REMOTE_PYTHON_DIR%PCbuild\rt.bat" %rt_args% +%SSH% %SSH_SERVER% "set TEMP=%REMOTE_PYTHON_DIR%temp& %REMOTE_PYTHON_DIR%PCbuild\rt.bat" %rt_args% exit /b %ERRORLEVEL% :Arm32SshHelp pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy