name: test-windows
on:
  pull_request:
    branches:
      - main
      - release/**
    paths-ignore:
      - 'README.md'
      - 'CHANGELOG.md'
      - '.changelog/**'
      - '.tours/**'
      - 'contributing/**'
      - 'demo/**'
      - 'dev/**'
      - 'e2e/**'
      - 'integrations/**'
      - 'pkg/**'
      - 'scripts/**'
      - 'terraform/**'
      - 'ui/**'
      - 'website/**'
  push:
    branches:
      - main
      - release/**
    paths-ignore:
      - 'README.md'
      - 'CHANGELOG.md'
      - '.changelog/**'
      - '.tours/**'
      - 'contributing/**'
      - 'demo/**'
      - 'dev/**'
      - 'e2e/**'
      - 'integrations/**'
      - 'pkg/**'
      - 'scripts/**'
      - 'terraform/**'
      - 'ui/**'
      - 'website/**'

env:
  VAULT_VERSION: 1.4.1
jobs:
  test-windows:
    runs-on: 'windows-2019-16core'
    env:
      GOTESTSUM_PATH: c:\tmp\test-reports
    steps:
      - name: Docker Info
        run: docker version
      - run: git config --global core.autocrlf false
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - name: Setup go
        uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
        with:
          go-version-file: ".go-version"
      - name: Show installed Go version
        shell: bash
        run: |-
          export PATH=/c/go/bin:/c/gopath/bin:$PATH
          go version
      - uses: "./.github/actions/install-vault"
        with:
          version: "$VAULT_VERSION"
      - run: vault version
      - run: choco install make
      - name: Install golang dependencies
        shell: bash
        run: |-
          make deps
      - name: Pre-download docker test image
        shell: bash
        run: |-
          docker pull docker.mirror.hashicorp.services/hashicorpdev/busybox-windows:ltsc2019
      - name: Build nomad
        shell: bash
        run: |-
          go install .
      - name: Run tests with gotestsum
        shell: bash
        env:
          BUSYBOX_IMAGE: docker.mirror.hashicorp.services/hashicorpdev/busybox-windows:ltsc2019
        run: |-
          # Only test docker driver tests for now
          export PATH=/c/go/bin:/c/gopath/bin:$PATH
          gotestsum --format=short-verbose \
            --junitfile results.xml \
            github.com/hashicorp/nomad/drivers/docker \
            github.com/hashicorp/nomad/drivers/rawexec \
            github.com/hashicorp/nomad/drivers/shared/executor \
            github.com/hashicorp/nomad/client/lib/fifo \
            github.com/hashicorp/nomad/client/logmon \
            github.com/hashicorp/nomad/client/allocrunner/taskrunner/template \
            github.com/hashicorp/nomad/client/allocdir \
            github.com/hashicorp/nomad/plugins/base
      - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
        with:
          name: results.xml
          path: results.xml

  handle-failure:
    permissions:
      contents: read
      id-token: write
    needs:
      - test-windows
    if: always() && github.event_name == 'push' && contains(needs.*.result, 'failure')
    uses: ./.github/workflows/test-failure-notification.yml
    secrets: inherit
    with:
      actor: ${{ github.triggering_actor }}
      git-branch: ${{ github.ref_name }}
      workflow-run-id: ${{ github.run_id }}
      workflow-name: ${{ github.workflow }}

permissions:
  contents: read
