name: test

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

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
        deno:
          - "1.x"
          - "2.x"
          - "1.33.1"
          - "canary"
          - "~1.32"
          - "b290fd01f3f5d32f9d010fc719ced0240759c049"
          - "rc"

    steps:
      - uses: actions/checkout@v3

      - name: Setup Deno
        uses: ./
        with:
          deno-version: ${{ matrix.deno }}

      - name: Test Deno
        run: deno run https://deno.land/std@0.198.0/examples/welcome.ts

      - name: Test `deno install -g` (2.0)
        if: matrix.deno == 'canary' || matrix.deno == 'latest'
        run: |
          deno install -g --allow-net -n deno_curl https://deno.land/std@0.198.0/examples/curl.ts
          deno_curl https://deno.land/std@0.198.0/examples/curl.ts

      - name: Test `deno install (1.0)
        if: matrix.deno == '1.x' || matrix.deno == '1.33.1' || matrix.deno == '~1.32' || matrix.deno == 'b290fd01f3f5d32f9d010fc719ced0240759c049'
        run: |
          deno install --allow-net -n deno_curl https://deno.land/std@0.198.0/examples/curl.ts
          deno_curl https://deno.land/std@0.198.0/examples/curl.ts

  test-version-file:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        deno-version-file: [.dvmrc, .tool-versions]
    steps:
      - uses: actions/checkout@v3

      - name: Setup Deno
        uses: ./
        with:
          deno-version-file: ${{ matrix.deno-version-file }}

      - name: Check version
        run: deno -V | grep -q "deno 1\.43\.1"

  test-binary-name:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    steps:
      - uses: actions/checkout@v3

      - name: Setup Deno
        uses: ./
        with:
          deno-binary-name: deno_foo

      - name: Check binary exists
        run: deno_foo -V

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Deno
        uses: ./
        with:
          deno-version: "rc"

      - name: Lint
        run: deno lint

      - name: Format
        run: deno fmt --check

      - name: Check types
        run: deno check main.mjs
