From b8e47894b04ad580631656e81f049670734a0e38 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 28 Sep 2022 23:39:46 +0100 Subject: [PATCH] Add skip for missing ARM64 tools --- test/test_windows.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/test/test_windows.py b/test/test_windows.py index 4b74873e..cd98a9c1 100644 --- a/test/test_windows.py +++ b/test/test_windows.py @@ -1,5 +1,7 @@ from __future__ import annotations +import os +import subprocess import textwrap import pytest @@ -9,11 +11,38 @@ from . import test_projects, utils basic_project = test_projects.new_c_project() +def skip_if_no_msvc(arm64=False): + programfiles = os.getenv("ProgramFiles(x86)") or os.getenv("ProgramFiles") + if not programfiles: + pytest.skip("Requires %ProgramFiles(x86)% variable to be set") + + vswhere = os.path.join(programfiles, "Microsoft Visual Studio", "Installer", "vswhere.exe") + if not os.path.isfile(vswhere): + pytest.skip("Requires Visual Studio installation") + + require = "Microsoft.VisualStudio.Component.VC.Tools.x86.x64" + if arm64: + require = "Microsoft.VisualStudio.Component.VC.Tools.ARM64" + + if not subprocess.check_output( + [ + vswhere, + "-latest", + "-prerelease", + "-property", "installationPath", + "-requires", require, + ] + ): + pytest.skip("Requires ARM64 compiler to be installed") + + @pytest.mark.parametrize("use_pyproject_toml", [True, False]) def test_wheel_tag_is_correct_when_using_windows_cross_compile(tmp_path, use_pyproject_toml): if utils.platform != "windows": pytest.skip("This test is only relevant to Windows") + skip_if_no_msvc(arm64=True) + if use_pyproject_toml: basic_project.files["pyproject.toml"] = textwrap.dedent( """