# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: ppc64le-qemu

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:

  test:
    strategy:
      matrix:
        go-version: [1.19.x]
        arch: [ppc64le]
        ppc64: [power8]
    runs-on: ubuntu-latest
    steps:
    - name: Set up Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}

    - name: Set up QEMU
      uses: docker/setup-qemu-action@v3

    - name: Check out code
      uses: actions/checkout@v4

    - name: Test internal
      run: go test -v ./internal/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}

    - name: Test bn256
      run: go test -v ./sm9/bn256/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}

    - name: Test ZUC
      run: go test -v ./zuc/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}

    - name: Test SM3
      run: go test -v ./sm3/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}

    - name: Test SM4
      run: go test -v -short ./sm4/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}

    - name: Test Cipher
      run: go test -v -short ./cipher/...
      env:
        GOARCH: ${{ matrix.arch }}
        GOPPC64: ${{ matrix.ppc64 }}
