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] 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