name: Tests

on:
  push:
    #paths:
    #  - "**/*.go"

  workflow_dispatch:

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.18', '1.19', '1.20' ]
    env:
      MUREX_BUILD_FLAGS: --no-colour
      MUREX_TEST_SKIP_EXISTS: true
      MUREX_TEST_NO_EXEC_DEPS: true
      MUREX_TEST_SKIP_MAN: true

    steps:
      - uses: actions/checkout@v3
      - name: Setup Go ${{ matrix.go-version }}
        uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go-version }}

      - name: Display Go version
        run: |
          go version

      - name: Enable all optional builtins
        run: |
          rm -vf builtins/imports_build/*
          cp -vf builtins/imports_src/* builtins/imports_build/

      - name: Go Test
        run: |
          go test ./... -count 1 -race

      - name: Build native target
        run: |
          go build -v github.com/lmorg/murex

      - name: Behavioural tests
        run: |
          ./murex -c 'g: behavioural/* -> foreach: f { source $f }; try {test: run *}'

      - name: Build cross-compiled targets
        run: |
          ./murex ./test/build_all_platforms.mx --no-colour

      - name: Build web assembly target
        run: |
          GOOS=js GOARCH=wasm go build -o murex.wasm .