# Copyright 2024 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

name: PkgCI Unit Test
on:
  workflow_call:
    inputs:
      artifact_run_id:
        type: string
        default: ""
  workflow_dispatch:
    inputs:
      artifact_run_id:
        type: string
        default: ""

jobs:
  linux_x86_64:
    name: Linux (x86_64)
    runs-on: ubuntu-20.04
    env:
      PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
      VENV_DIR: ${{ github.workspace }}/.venv
    steps:
      - name: Checking out repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          submodules: false
      - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
        with:
          # Must match the subset of versions built in pkgci_build_packages.
          python-version: "3.11"
      - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
        with:
          name: linux_x86_64_release_packages
          path: ${{ env.PACKAGE_DOWNLOAD_DIR }}
      - name: Setup base venv
        run: |
          ./build_tools/pkgci/setup_venv.py ${VENV_DIR} \
            --artifact-path=${PACKAGE_DOWNLOAD_DIR} \
            --fetch-gh-workflow=${{ inputs.artifact_run_id }}
          source ${VENV_DIR}/bin/activate
          pip install -r runtime/bindings/python/iree/runtime/build_requirements.txt
      - name: Validate runtime wheel
        run: |
          source ${VENV_DIR}/bin/activate
          echo "Testing default runtime package:"
          python -m iree.runtime._package_test
          echo "Testing tracy runtime package:"
          # GH runners don't expose the TSC but we want to make sure the basic packaging
          # works, so override the check with TRACY_NO_INVARIANT_CHECK=1 (per instructions
          # if this is left off).
          TRACY_NO_INVARIANT_CHECK=1 IREE_PY_RUNTIME=tracy \
            python -m iree.runtime._package_test
      - name: Validate compiler wheel
        run: |
          source ${VENV_DIR}/bin/activate
          echo "Testing compiler package:"
          python -m iree.compiler._package_test

      # Test tools and importers that require additional deps.
      - name: Test ONNX importer
        run: |
          source ${VENV_DIR}/bin/activate
          python -m pip install onnx>=1.16.0
          python compiler/bindings/python/test/tools/import_onnx_test.py
          python compiler/bindings/python/test/extras/onnx_importer_test.py
      - name: Test FX (PyTorch) importer
        run: |
          source ${VENV_DIR}/bin/activate
          python -m pip install torch>=2.3.0
          python compiler/bindings/python/test/extras/fx_importer_test.py
      - name: Test TensorFlow importer
        run: |
          source ${VENV_DIR}/bin/activate
          bash ./build_tools/scripts/setup_tf_python.sh
          python compiler/bindings/python/test/tools/compiler_tflite_test.py
          python compiler/bindings/python/test/tools/compiler_tf_test.py
