{#-
  Full test runs. Each chunk should never take more than 2 hours. We allow 3, and on windows we add 30 more minutes.
  Partial test runs(no chunk parallelization), 6 Hours
#}
<%- set full_testrun_timeout_value = 180 %>
<%- set partial_testrun_timeout_value = 360 %>
<%- set windows_full_testrun_timeout_value = full_testrun_timeout_value + 30 %>

  <%- for os in test_salt_listing["windows"] %>

  <{ os.slug.replace(".", "") }>:
    <%- do test_salt_needs.append(os.slug.replace(".", "")) %>
    name: <{ os.display_name }> Test
    <%- if workflow_slug != "ci" or os.slug in mandatory_os_slugs %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    <%- else %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), '<{ os.slug }>') }}
    <%- endif %>
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-windows.yml
    with:
      distro-slug: <{ os.slug }>
      nox-session: ci-test-onedir
      platform: windows
      arch: amd64
      nox-version: <{ nox_version  }>
      gh-actions-python-version: "<{ gh_actions_workflows_python_version }>"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }>
      skip-code-coverage: <{ skip_test_coverage_check }>
      workflow-slug: <{ workflow_slug }>
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ windows_full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }}

  <%- endfor %>


  <%- for os in test_salt_listing["macos"] %>

  <{ os.slug.replace(".", "") }>:
    <%- do test_salt_needs.append(os.slug.replace(".", "")) %>
    name: <{ os.display_name }> Test
    <%- if workflow_slug != "ci" or os.slug in mandatory_os_slugs %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
    <%- else %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), '<{ os.slug }>') }}
    <%- endif %>
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-macos.yml
    with:
      distro-slug: <{ os.slug }>
      runner: <{ os.runner }>
      nox-session: ci-test-onedir
      platform: macos
      arch: <{ os.arch }>
      nox-version: <{ nox_version  }>
      gh-actions-python-version: "<{ gh_actions_workflows_python_version }>"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }>
      skip-code-coverage: <{ skip_test_coverage_check }>
      workflow-slug: <{ workflow_slug }>
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }}

  <%- endfor %>

  <%- for os in test_salt_listing["linux"] %>
    <%- set job_name = "{}{}".format(os.slug.replace(".", ""), os.fips and '-fips' or '') %>

  <{ job_name }>:
    <%- do test_salt_needs.append(job_name) %>
    name: <{ os.display_name }> Test<%- if os.fips %> (fips)<%- endif %>
    <%- if workflow_slug != "ci" or os.slug in mandatory_os_slugs %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
    <%- else %>
    if: ${{ fromJSON(needs.prepare-workflow.outputs.jobs)['test'] && fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] && contains(fromJSON(needs.prepare-workflow.outputs.os-labels), '<{ os.slug }>') }}
    <%- endif %>
    needs:
      - prepare-workflow
      - build-ci-deps
    uses: ./.github/workflows/test-action-linux.yml
    with:
      distro-slug: <{ os.slug }>
      nox-session: ci-test-onedir
      platform: linux
      arch: <{ os.arch }>
      nox-version: <{ nox_version  }>
      gh-actions-python-version: "<{ gh_actions_workflows_python_version }>"
      testrun: ${{ needs.prepare-workflow.outputs.testrun }}
      salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
      cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}|<{ python_version }>
      skip-code-coverage: <{ skip_test_coverage_check }>
      workflow-slug: <{ workflow_slug }>
      timeout-minutes: ${{ fromJSON(needs.prepare-workflow.outputs.testrun)['type'] == 'full' && <{ full_testrun_timeout_value }> || <{ partial_testrun_timeout_value }> }}
    <%- if os.fips %>
      fips: true
    <%- endif %>

  <%- endfor %>
