# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. """Post-install checks for a built TVM wheel. These live in ``tests/python/all-platform-minimal-test`` so the standard suite and the cibuildwheel ``test-command`` run a single pytest invocation. The assertions here are wheel-specific things the rest of the suite cannot check -- that LLVM is enabled (the other LLVM test merely *skips* when LLVM is absent) and that the CUDA runtime library got bundled -- so each is gated behind a ``TVM_WHEEL_EXPECT_*`` env var and SKIPS unless that var is set. cibuildwheel sets the vars (see ``CIBW_TEST_ENVIRONMENT`` in ``.github/actions/build-wheel-for-publish``); ordinary source-build CI (e.g. ``main.yml``) leaves them unset, so these tests skip there and never fail a non-wheel / non-LLVM / non-CUDA build. """ import glob import os from pathlib import Path import pytest import tvm def test_llvm_enabled(): """Every published TVM wheel ships with LLVM enabled. Only assert this when validating a wheel (``TVM_WHEEL_EXPECT_LLVM=1``); skip otherwise so source builds with LLVM off do not fail.""" if os.environ.get("TVM_WHEEL_EXPECT_LLVM") != "1": pytest.skip("LLVM enablement only asserted during wheel validation") assert tvm.runtime.enabled("llvm"), "wheel was not built with LLVM enabled" def test_cuda_runtime_present(): """The bundled CUDA runtime library must be present in tvm/lib.""" if os.environ.get("TVM_WHEEL_EXPECT_CUDA_RUNTIME") != "1": pytest.skip("CUDA runtime not expected in this wheel") libdir = Path(tvm.__file__).resolve().parent / "lib" present = glob.glob(str(libdir / "libtvm_runtime_cuda.*")) or glob.glob( str(libdir / "tvm_runtime_cuda.*") ) assert present, "CUDA runtime expected but not bundled in tvm/lib"