name: Test
on:
  push:
    branches: ["**"]
    paths: ["Elwig/**", "Tests/**", "Installer/Files/*.exe", ".gitea/workflows/test.yaml"]
jobs:
  test:
    name: Run tests
    runs-on: windows-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Check for Byte order marks
        shell: powershell
        run: |
          $pattern = [char]::ConvertFromUtf32(0xFEFF)
          $files = git grep -IEl "^$pattern"
          if ( $lastexitcode -ne 1 ) {
            echo "Files with BOM found:"
            echo $files
            exit 1
          } else {
            echo "No files with BOM found"
            exit 0
          }
      - name: Setup MSBuild
        uses: microsoft/setup-msbuild@v1.1
      - name: Setup NuGet
        uses: nuget/setup-nuget@v1
      - name: Restore NuGet packages
        shell: powershell
        run: $(& nuget restore Elwig.sln; $a=$lastexitcode) | findstr x*; exit $a
      - name: Build Elwig
        shell: powershell
        run: $(& msbuild -verbosity:quiet Elwig/Elwig.csproj -property:Configuration=Debug; $a=$lastexitcode) | findstr x*; exit $a
      - name: Build Tests
        shell: powershell
        run: $(& dotnet build Tests; $a=$lastexitcode) | findstr x*; exit $a
      - name: Run Tests
        shell: powershell
        run: |
          $env:PATH = "$(pwd)\Installer\Files;" + $env:PATH
          $(& dotnet test Tests --filter "FullyQualifiedName!~E2ETests"; $a=$lastexitcode) | findstr x*; exit $a
