name: .NET Tests on: push: branches: [ "main" ] paths: - 'global.json' - '**.cs' - '**.axaml' - '**.csproj' - '**.props' - '**.targets' - '**.sln' - '**.slnx' - 'src/.editorconfig' - '.github/workflows/dotnet-test.yml' pull_request: branches: [ "main" ] paths: - 'global.json' - '**.cs' - '**.axaml' - '**.csproj' - '**.props' - '**.targets' - '**.sln' - '**.slnx' - 'src/.editorconfig' - '.github/workflows/dotnet-test.yml' workflow_dispatch: jobs: test-codebase: runs-on: windows-latest env: NUGET_PACKAGES: ${{ github.workspace }}\.nuget\packages steps: - name: Checkout the repository uses: actions/checkout@v7 with: fetch-depth: 0 - name: Install .NET SDK uses: actions/setup-dotnet@v5 with: global-json-file: global.json - name: Cache NuGet packages uses: actions/cache@v6 with: path: ${{ env.NUGET_PACKAGES }} key: ${{ runner.os }}-nuget-${{ hashFiles('global.json', 'src/**/*.csproj', 'src/**/*.props', 'src/**/*.targets', 'src/**/*.sln', 'src/**/*.slnx') }} restore-keys: | ${{ runner.os }}-nuget- - name: Install dependencies working-directory: src run: dotnet restore UniGetUI.Windows.slnx - name: Check whitespace formatting run: dotnet format whitespace src --folder --verify-no-changes --verbosity minimal - name: Check code style formatting (Avalonia Windows solution) working-directory: src run: dotnet format style UniGetUI.Windows.slnx --no-restore --verify-no-changes --verbosity minimal - name: Build Avalonia Windows solution working-directory: src run: | dotnet build-server shutdown dotnet build UniGetUI.Windows.slnx --no-restore --verbosity minimal /p:Platform=x64 /p:UseSharedCompilation=false /m:1 - name: Run Tests working-directory: src env: GITHUB_TOKEN: ${{ github.token }} run: dotnet test UniGetUI.Windows.slnx --no-restore --verbosity q --nologo /p:Platform=x64 /p:UseSharedCompilation=false /m:1 - name: Report full-trim publish warnings working-directory: src shell: pwsh continue-on-error: true run: | dotnet build-server shutdown dotnet publish UniGetUI.Avalonia/UniGetUI.Avalonia.csproj ` --no-restore ` --configuration Release ` --runtime win-x64 ` --self-contained true ` --output "${{ runner.temp }}\unigetui-full-trim-publish" ` /p:Platform=x64 ` /p:TrimMode=full ` /p:TrimmerSingleWarn=false ` /p:UseSharedCompilation=false ` --verbosity minimal - name: Report NativeAOT publish warnings working-directory: src shell: pwsh run: | dotnet build-server shutdown dotnet publish UniGetUI.Avalonia/UniGetUI.Avalonia.csproj ` --no-restore ` --configuration Release ` --runtime win-x64 ` --self-contained true ` --output "${{ runner.temp }}\unigetui-nativeaot-publish" ` /m:1 ` /p:Platform=x64 ` /p:PublishProfile=Win-x64-NativeAot ` /p:TrimmerSingleWarn=false ` /p:UseSharedCompilation=false ` --verbosity minimal