name: ๐Ÿšฅ Tests on: push: pull_request: jobs: tests: name: ๐Ÿงช Evaluate Tests on ${{ matrix.os }} # Only run the workflow if it's not a PR or if it's a PR from a fork. # This prevents duplicate workflows from running on PR's that originate # from the repository itself. if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name runs-on: ${{ matrix.os }} strategy: # Don't cancel other OS runners if one fails. fail-fast: false matrix: # Put the operating systems you want to run on here. os: [ubuntu-latest, macos-latest, windows-2025] env: DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_NOLOGO: true defaults: run: # Use bash shells on all platforms. shell: bash steps: - name: ๐Ÿงพ Checkout uses: actions/checkout@v6 with: lfs: true submodules: 'recursive' - name: ๐Ÿ’ฝ Setup .NET SDK uses: actions/setup-dotnet@v5 with: # Use the .NET SDK from global.json in the root of the repository. global-json-file: global.json - name: ๐Ÿ“ฆ Restore Dependencies run: dotnet restore - name: ๐Ÿค– Setup Godot uses: chickensoft-games/setup-godot@v2 with: # Version must include major, minor, and patch, and be >= 4.0.0 # Pre-release label is optional. # # In this case, we are using the version from global.json. # # This allows checks on renovatebot PR's to succeed whenever # renovatebot updates the Godot SDK version. version: global.json - name: ๐Ÿง‘โ€๐Ÿ”ฌ Generate .NET Bindings working-directory: GodotHelper.Tests run: godot --headless --build-solutions --quit || exit 0 - name: ๐Ÿฆบ Build Projects run: dotnet build - name: ๐Ÿงช Run Tests working-directory: GodotHelper.Tests run: godot --headless --run-tests --quit-on-finish