| # Copyright 2023 The Bazel Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| "" |
| |
| load("@rules_testing//lib:test_suite.bzl", "test_suite") |
| load("//python/private:whl_target_platforms.bzl", "whl_target_platforms") # buildifier: disable=bzl-visibility |
| |
| _tests = [] |
| |
| def _test_simple(env): |
| tests = { |
| "macosx_10_9_arm64": [ |
| struct(os = "osx", cpu = "aarch64", abi = None, target_platform = "osx_aarch64"), |
| ], |
| "macosx_10_9_universal2": [ |
| struct(os = "osx", cpu = "x86_64", abi = None, target_platform = "osx_x86_64"), |
| struct(os = "osx", cpu = "aarch64", abi = None, target_platform = "osx_aarch64"), |
| ], |
| "manylinux1_i686.manylinux_2_17_i686": [ |
| struct(os = "linux", cpu = "x86_32", abi = None, target_platform = "linux_x86_32"), |
| ], |
| "musllinux_1_1_ppc64le": [ |
| struct(os = "linux", cpu = "ppc", abi = None, target_platform = "linux_ppc"), |
| ], |
| "win_amd64": [ |
| struct(os = "windows", cpu = "x86_64", abi = None, target_platform = "windows_x86_64"), |
| ], |
| } |
| |
| for give, want in tests.items(): |
| for abi in ["", "abi3", "none"]: |
| got = whl_target_platforms(give, abi) |
| env.expect.that_collection(got).contains_exactly(want) |
| |
| _tests.append(_test_simple) |
| |
| def _test_with_abi(env): |
| tests = { |
| "macosx_10_9_arm64": [ |
| struct(os = "osx", cpu = "aarch64", abi = "cp39", target_platform = "cp39_osx_aarch64"), |
| ], |
| "macosx_10_9_universal2": [ |
| struct(os = "osx", cpu = "x86_64", abi = "cp310", target_platform = "cp310_osx_x86_64"), |
| struct(os = "osx", cpu = "aarch64", abi = "cp310", target_platform = "cp310_osx_aarch64"), |
| ], |
| "manylinux1_i686.manylinux_2_17_i686": [ |
| struct(os = "linux", cpu = "x86_32", abi = "cp38", target_platform = "cp38_linux_x86_32"), |
| ], |
| "musllinux_1_1_ppc64le": [ |
| struct(os = "linux", cpu = "ppc", abi = "cp311", target_platform = "cp311_linux_ppc"), |
| ], |
| "win_amd64": [ |
| struct(os = "windows", cpu = "x86_64", abi = "cp311", target_platform = "cp311_windows_x86_64"), |
| ], |
| } |
| |
| for give, want in tests.items(): |
| got = whl_target_platforms(give, want[0].abi) |
| env.expect.that_collection(got).contains_exactly(want) |
| |
| _tests.append(_test_with_abi) |
| |
| def _can_parse_existing_tags(env): |
| examples = { |
| "linux_armv6l": 1, |
| "linux_armv7l": 1, |
| "macosx_11_12_arm64": 1, |
| "macosx_11_12_i386": 1, |
| "macosx_11_12_intel": 1, |
| "macosx_11_12_universal": 2, |
| "macosx_11_12_universal2": 2, |
| "macosx_11_12_x86_64": 1, |
| "manylinux1_i686": 1, |
| "manylinux1_x86_64": 1, |
| "manylinux2010_i686": 1, |
| "manylinux2010_x86_64": 1, |
| "manylinux2014_aarch64": 1, |
| "manylinux2014_armv7l": 1, |
| "manylinux2014_i686": 1, |
| "manylinux2014_ppc64": 1, |
| "manylinux2014_ppc64le": 1, |
| "manylinux2014_s390x": 1, |
| "manylinux2014_x86_64": 1, |
| "manylinux_11_12_aarch64": 1, |
| "manylinux_11_12_armv7l": 1, |
| "manylinux_11_12_i686": 1, |
| "manylinux_11_12_ppc64": 1, |
| "manylinux_11_12_ppc64le": 1, |
| "manylinux_11_12_s390x": 1, |
| "manylinux_11_12_x86_64": 1, |
| "manylinux_1_2_aarch64": 1, |
| "manylinux_1_2_x86_64": 1, |
| "musllinux_11_12_aarch64": 1, |
| "musllinux_11_12_armv7l": 1, |
| "musllinux_11_12_i686": 1, |
| "musllinux_11_12_ppc64le": 1, |
| "musllinux_11_12_s390x": 1, |
| "musllinux_11_12_x86_64": 1, |
| "win32": 1, |
| "win_amd64": 1, |
| "win_arm64": 1, |
| "win_ia64": 0, |
| } |
| |
| for major_version in [2, 10, 13]: |
| for minor_version in [0, 1, 2, 10, 45]: |
| for give, want_size in examples.items(): |
| give = give.replace("_11_", "_{}_".format(major_version)) |
| give = give.replace("_12_", "_{}_".format(minor_version)) |
| got = whl_target_platforms(give) |
| env.expect.that_str("{}: {}".format(give, len(got))).equals("{}: {}".format(give, want_size)) |
| |
| _tests.append(_can_parse_existing_tags) |
| |
| def whl_target_platforms_test_suite(name): |
| """create the test suite. |
| |
| args: |
| name: the name of the test suite |
| """ |
| test_suite(name = name, basic_tests = _tests) |