# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

parameters:
  rvc_test_suites: []

jobs:
  - job: riscv_compliance_tests_${{ join('_', parameters.rvc_test_suites) }}
    displayName: Execute RISC-V compliance tests for ${{ join(' ', parameters.rvc_test_suites) }}
    pool:
      vmImage: ubuntu-16.04
    dependsOn:
      - top_earlgrey_verilator
      - sw_build
    steps:
    - template: install-package-dependencies.yml
    - template: download-artifacts-template.yml
    - bash: |
        set -x
        sudo util/get-toolchain.py \
          --target-dir="${TOOLCHAIN_PATH}" \
          --release-version="${TOOLCHAIN_VERSION}" \
          --update
      displayName: Install toolchain
    - ${{ each test_suite in parameters.rvc_test_suites }}:
      - bash: |
          set -e
          ci/run_riscv_compliance.sh ${{ test_suite }}
        displayName: Execute ${{ test_suite }}
