Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/ci-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,17 @@ jobs:
pattern: '*-${{ matrix.configuration }}'
merge-multiple: true

- name: Fix Linux test apphost permissions
run: |
echo "Ensuring xUnit v3 test apphosts are executable on Linux..."
echo "Configuration: ${{ matrix.configuration }}"
# Dump a bit of info for debugging
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -maxdepth 1 -type f -name "*Tests*" -print || true
Copy link

Copilot AI Dec 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The -maxdepth 1 option is placed incorrectly in the find command. In find, -maxdepth must appear before other search criteria like -type and -name. The correct placement is:

find . -maxdepth 4 -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests*" -print || true

Note: Since you're searching for paths like */bin/${{ matrix.configuration }}/net*/*, you need a maxdepth of at least 4-5 levels from the current directory (e.g., ./test/ProjectName.Tests/bin/Debug/net10.0/ProjectName.Tests). Alternatively, remove -maxdepth entirely from the debug line since it's only for informational purposes.

Suggested change
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -maxdepth 1 -type f -name "*Tests*" -print || true
find . -maxdepth 4 -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests*" -print || true

Copilot uses AI. Check for mistakes.
# Actually fix permissions
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests*" -exec chmod +x {} +
Comment on lines +139 to +141
Copy link

Copilot AI Dec 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The find command on line 141 will attempt to set execute permissions on all files matching *Tests*, which may include non-executable files like .dll, .pdb, .deps.json, .runtimeconfig.json, etc. Consider being more specific by targeting only the actual apphost executables (files without extensions or with specific patterns). For example:

find . -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests" ! -name "*.*" -exec chmod +x {} +

This matches files named *Tests without any extension, which is typical for Linux apphost executables.

Suggested change
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -maxdepth 1 -type f -name "*Tests*" -print || true
# Actually fix permissions
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests*" -exec chmod +x {} +
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -maxdepth 1 -type f -name "*Tests" ! -name "*.*" -print || true
# Actually fix permissions
find . -path "*/bin/${{ matrix.configuration }}/net*/*" -type f -name "*Tests" ! -name "*.*" -exec chmod +x {} +

Copilot uses AI. Check for mistakes.
echo "Permissions fixed."
shell: bash

- name: Test with ${{ matrix.configuration }} build
uses: codebeltnet/dotnet-test@v4
with:
Expand Down
10 changes: 10 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,16 @@

<PropertyGroup Condition="'$(IsBenchmarkProject)' == 'true'">
<TargetFrameworks>net10.0;net9.0</TargetFrameworks>
<TargetFrameworks>net10.0;net9.0</TargetFrameworks>
Copy link

Copilot AI Dec 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate TargetFrameworks property declaration. Line 113 and 114 both set TargetFrameworks to net10.0;net9.0. Remove the duplicate on line 114.

Suggested change
<TargetFrameworks>net10.0;net9.0</TargetFrameworks>

Copilot uses AI. Check for mistakes.
<IsPackable>false</IsPackable>
<RunAnalyzers>false</RunAnalyzers>
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
<SonarQubeExclude>true</SonarQubeExclude>
<AnalysisLevel>none</AnalysisLevel>
<NoWarn>NU1701,NU1902,NU1903</NoWarn>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
<NuGetAudit>false</NuGetAudit>
</PropertyGroup>

<ItemGroup Condition="'$(IsBenchmarkProject)' == 'true'">
Expand Down
Loading