name: Test Template

on:
  workflow_call:
    inputs:
      arch:
        type: string
        required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          submodules: "recursive"

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: test
          cache-targets: false

      - uses: arceos-org/setup-musl@v1
        with:
          arch: ${{ inputs.arch }}

      - name: Build
        run: make ARCH=${{ inputs.arch }} build

      - uses: actions/upload-artifact@v5
        with:
          name: starry-${{ inputs.arch }}
          path: |
            *.bin
            *.elf

  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v6
        with:
          submodules: "recursive"

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: test
          cache-targets: false

      - name: Setup QEMU
        uses: arceos-org/setup-qemu@v1
        with:
          version: 10.1.0
          arch_list: ${{ inputs.arch }}

      - name: Download build artifact
        uses: actions/download-artifact@v6
        with:
          name: starry-${{ inputs.arch }}

      - name: Prepare rootfs
        run: |
          make ARCH=${{ inputs.arch }} img

      - name: Test
        run: scripts/ci-test.py ${{ inputs.arch }}