name: Test on Beta Toolchain
# This workflow is made to run our tests on the beta toolchain to validate that 
# the beta toolchain works.
# We do not intend to test here that we are working correctly but rather that 
# the beta toolchain works correctly.
# The ci.yml handles our actual testing with our guarantees.

on:
  schedule:
    # If this workflow fails, GitHub notifications will go to the last person 
    # who edited this line.
    # See: https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs
    - cron: '0 0 * * *'  # Runs daily at midnight UTC

env:
  NUSHELL_CARGO_PROFILE: ci
  NU_LOG_LEVEL: DEBUG

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
  cancel-in-progress: true

jobs:
  build-and-test:
    # this job is more for testing the beta toolchain and not our tests, so if 
    # this fails but the tests of the regular ci pass, then this is fine
    continue-on-error: true

    strategy:
      fail-fast: true
      matrix:
        platform: [windows-latest, macos-latest, ubuntu-22.04]

    runs-on: ${{ matrix.platform }}

    steps:
      - uses: actions/checkout@v4

      - run: rustup update beta

      - name: Tests
        run: cargo +beta test --workspace --profile ci --exclude nu_plugin_*
      - name: Check for clean repo
        shell: bash
        run: |
          if [ -n "$(git status --porcelain)" ]; then
            echo "there are changes";
            git status --porcelain
            exit 1
          else
            echo "no changes in working directory";
          fi
