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
4 changes: 2 additions & 2 deletions .devcontainer/manylinux/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
// To run the OCR test after setup:
// cd /work/test/OpenCvSharp.Tests
// cp /work/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so .
// LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net8.0 \
// --filter "FullyQualifiedName~OCRTesseractTest"
// LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net8.0 \
// --filter-method "*OCRTesseractTest*"
{
"name": "manylinux_2_28 (build)",
"build": {
Expand Down
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ src/build*/

# Test projects
!test/

# Test runner configuration
!global.json
4 changes: 2 additions & 2 deletions .github/actions/test-rtsp-macos/test-rtsp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,11 @@ fi

export OPENCVSHARP_TEST_RTSP_URL="rtsp://127.0.0.1:8554/test"
export DYLD_LIBRARY_PATH="/usr/local/lib:${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}"
dotnet test "${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj" \
dotnet test --project "${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj" \
-c Release \
-f net10.0 \
--runtime osx-arm64 \
--no-build \
--no-restore \
--filter "FullyQualifiedName=OpenCvSharp.Tests.VideoIO.VideoCaptureTest.ReadRtspStreamWithFFmpeg" \
--filter-method OpenCvSharp.Tests.VideoIO.VideoCaptureTest.ReadRtspStreamWithFFmpeg \
< /dev/null
4 changes: 2 additions & 2 deletions .github/actions/test-rtsp-windows/test-rtsp.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ try {
}

$env:OPENCVSHARP_TEST_RTSP_URL = "rtsp://127.0.0.1:8554/test"
dotnet test test\OpenCvSharp.Tests -c Release -f net10.0 --runtime win-x64 `
dotnet test --project test\OpenCvSharp.Tests\OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime win-x64 `
--no-build --no-restore `
--filter "FullyQualifiedName=OpenCvSharp.Tests.VideoIO.VideoCaptureTest.ReadRtspStreamWithFFmpeg"
--filter-method OpenCvSharp.Tests.VideoIO.VideoCaptureTest.ReadRtspStreamWithFFmpeg
if ($LASTEXITCODE -ne 0) {
Get-Content $stdoutPath, $stderrPath -ErrorAction SilentlyContinue
throw "RTSP integration test failed with exit code $LASTEXITCODE"
Expand Down
2 changes: 1 addition & 1 deletion .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"packageRules": [
{
"description": "Group xunit packages",
"matchPackageNames": ["xunit.v3", "xunit.runner.visualstudio", "Xunit.StaFact"],
"matchPackageNames": ["xunit.v3", "xunit.runner.visualstudio", "Microsoft.Testing.Extensions.CrashDump"],
"groupName": "xunit"
},
{
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/linux-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ jobs:
sudo cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so /usr/lib/
# Preserve the executed-test sequence and a native dump when the test host crashes,
# including failures that happen during process teardown after all tests complete.
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-arm64 \
--logger "trx;LogFileName=test-results.trx" \
--blame-crash --blame-crash-dump-type full < /dev/null
LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-arm64 \
--results-directory TestResults --report-xunit-trx --report-xunit-trx-filename test-results.trx \
--crashdump --crashdump-type Full < /dev/null

- name: Upload crash dumps on failure
if: failure()
Expand All @@ -186,4 +186,4 @@ jobs:
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia
dotnet build -c Release -f net10.0
cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia/bin/Release/net10.0/
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime linux-arm64 < /dev/null
LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime linux-arm64 < /dev/null
28 changes: 15 additions & 13 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,21 +55,22 @@ jobs:
uses: actions/cache/restore@v6
with:
path: ${{ github.workspace }}/vcpkg_installed
key: vcpkg-x64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/x64-osx-static.cmake') }}
key: vcpkg-x64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/x64-osx-static.cmake') }}-${{ hashFiles('cmake/vcpkg-overlay-ports/libaec/**') }}

- name: Install packages via vcpkg
if: steps.vcpkg-cache.outputs.cache-hit != 'true'
run: |
/tmp/vcpkg/vcpkg install \
--triplet x64-osx-static \
--overlay-triplets=${GITHUB_WORKSPACE}/cmake/triplets
--overlay-triplets=${GITHUB_WORKSPACE}/cmake/triplets \
--overlay-ports=${GITHUB_WORKSPACE}/cmake/vcpkg-overlay-ports

- name: Save vcpkg package cache
if: steps.vcpkg-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v6
with:
path: ${{ github.workspace }}/vcpkg_installed
key: vcpkg-x64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/x64-osx-static.cmake') }}
key: vcpkg-x64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/x64-osx-static.cmake') }}-${{ hashFiles('cmake/vcpkg-overlay-ports/libaec/**') }}

# -- OpenCV cache --------------------------------------------------------
- name: Capture OpenCV revisions
Expand Down Expand Up @@ -215,21 +216,22 @@ jobs:
uses: actions/cache/restore@v6
with:
path: ${{ github.workspace }}/vcpkg_installed
key: vcpkg-arm64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/arm64-osx-static.cmake') }}
key: vcpkg-arm64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/arm64-osx-static.cmake') }}-${{ hashFiles('cmake/vcpkg-overlay-ports/libaec/**') }}

- name: Install packages via vcpkg
if: steps.vcpkg-cache.outputs.cache-hit != 'true'
run: |
/tmp/vcpkg/vcpkg install \
--triplet arm64-osx-static \
--overlay-triplets=${GITHUB_WORKSPACE}/cmake/triplets
--overlay-triplets=${GITHUB_WORKSPACE}/cmake/triplets \
--overlay-ports=${GITHUB_WORKSPACE}/cmake/vcpkg-overlay-ports

- name: Save vcpkg package cache
if: steps.vcpkg-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v6
with:
path: ${{ github.workspace }}/vcpkg_installed
key: vcpkg-arm64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/arm64-osx-static.cmake') }}
key: vcpkg-arm64-osx-static-${{ hashFiles('vcpkg.json') }}-${{ hashFiles('cmake/triplets/arm64-osx-static.cmake') }}-${{ hashFiles('cmake/vcpkg-overlay-ports/libaec/**') }}

# -- OpenCV cache --------------------------------------------------------
- name: Capture OpenCV revisions
Expand Down Expand Up @@ -355,13 +357,13 @@ jobs:
cp ${GITHUB_WORKSPACE}/libOpenCvSharpExtern.dylib ./
sudo mkdir -p /usr/local/lib
sudo cp ${GITHUB_WORKSPACE}/libOpenCvSharpExtern.dylib /usr/local/lib/
# --blame-crash* collects a full memory dump and a Sequence_*.xml (listing tests executed,
# in order) into TestResults\ if the test host crashes, so an intermittent native crash
# The MTP crash dump extension collects a full memory dump and a test sequence file into
# TestResults/ if the test host crashes, so an intermittent native crash
# (e.g. the dynafu::WarpField SIGSEGV) can be attributed to a specific test without a
# re-run. See "Upload crash dumps on failure" below (separate from the .ips upload above).
DYLD_LIBRARY_PATH=/usr/local/lib:${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests dotnet test OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime osx-arm64 \
--logger "trx;LogFileName=test-results.trx" \
--blame-crash --blame-crash-dump-type full < /dev/null
DYLD_LIBRARY_PATH=/usr/local/lib:${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime osx-arm64 \
--results-directory TestResults --report-xunit-trx --report-xunit-trx-filename test-results.trx \
--crashdump --crashdump-type Full < /dev/null

- name: Test RTSP capture
uses: ./.github/actions/test-rtsp-macos
Expand All @@ -373,7 +375,7 @@ jobs:
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia
dotnet build -c Release -f net10.0
cp ${GITHUB_WORKSPACE}/libOpenCvSharpExtern.dylib bin/Release/net10.0/
DYLD_LIBRARY_PATH=/usr/local/lib:${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia dotnet test OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime osx-arm64 < /dev/null
DYLD_LIBRARY_PATH=/usr/local/lib:${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia dotnet test --project OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime osx-arm64 < /dev/null

- name: Test NativeAOT publish
run: |
Expand All @@ -389,7 +391,7 @@ jobs:
- uses: actions/upload-artifact@v7
with:
name: test-results-macos
path: test/OpenCvSharp.Tests/bin/Release/net10.0/test-results.trx
path: test/OpenCvSharp.Tests/TestResults/test-results.trx

# Safety net: on a crash/failure, upload the macOS crash reports (.ips) so a
# native fault can be diagnosed from the faulting backtrace without a re-run.
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/manylinux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -245,15 +245,15 @@ jobs:
cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so bin/Release/net10.0/
cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so ./
sudo cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so /usr/lib/
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 \
--logger "trx;LogFileName=test-results.trx" < /dev/null
LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 \
--results-directory TestResults --report-xunit-trx --report-xunit-trx-filename test-results.trx < /dev/null

- name: Test Avalonia extensions
run: |
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests.Avalonia
dotnet build -c Release -f net10.0
cp ${GITHUB_WORKSPACE}/packaging/nuget/libOpenCvSharpExtern.so bin/Release/net10.0/
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime linux-x64 < /dev/null
LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime linux-x64 < /dev/null

# Headless has the same module set as full except highgui, so it runs the same xunit
# suite minus the one test class that calls into highgui (WaitKey/PollKey/...).
Expand All @@ -265,9 +265,9 @@ jobs:
cp ${GITHUB_WORKSPACE}/nuget-headless/libOpenCvSharpExtern-headless.so bin/Release/net10.0/libOpenCvSharpExtern.so
cp ${GITHUB_WORKSPACE}/nuget-headless/libOpenCvSharpExtern-headless.so ./libOpenCvSharpExtern.so
sudo cp ${GITHUB_WORKSPACE}/nuget-headless/libOpenCvSharpExtern-headless.so /usr/lib/libOpenCvSharpExtern.so
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --no-build \
--filter "FullyQualifiedName!~OpenCvSharp.Tests.HighGui.HighGuiTest" \
--logger "trx;LogFileName=test-results-headless.trx" < /dev/null
LD_LIBRARY_PATH=. dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --no-build \
--filter-not-class OpenCvSharp.Tests.HighGui.HighGuiTest \
--results-directory TestResults --report-xunit-trx --report-xunit-trx-filename test-results-headless.trx < /dev/null

- name: Stop local RTSP test server
if: always()
Expand All @@ -284,7 +284,7 @@ jobs:
- uses: actions/upload-artifact@v7
with:
name: test-results-manylinux
path: test/OpenCvSharp.Tests/bin/Release/net10.0/test-results*.trx
path: test/OpenCvSharp.Tests/TestResults/test-results*.trx

# ---------------------------------------------------------------------------
# Create NuGet packages from the manylinux-built binaries.
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,11 +187,11 @@ jobs:

- name: Test
shell: cmd
# --blame-crash* collects a full memory dump and a Sequence_*.xml (listing tests executed,
# in order) into test\OpenCvSharp.Tests\TestResults\ if the test host crashes, so an
# The MTP crash dump extension collects a full memory dump and a test sequence file into
# test\OpenCvSharp.Tests\TestResults\ if the test host crashes, so an
# intermittent native access violation can be attributed to a specific test without a
# re-run. See "Upload crash dumps on failure" below.
run: dotnet test test\OpenCvSharp.Tests -c Release -f net10.0 --runtime win-x64 --blame-crash --blame-crash-dump-type full
run: dotnet test --project test\OpenCvSharp.Tests\OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime win-x64 --results-directory test\OpenCvSharp.Tests\TestResults --crashdump --crashdump-type Full

- name: Test RTSP capture
uses: ./.github/actions/test-rtsp-windows
Expand All @@ -211,7 +211,7 @@ jobs:
shell: powershell
run: |
cd ${env:GITHUB_WORKSPACE}\test\OpenCvSharp.Tests.Windows
dotnet test -c Release -f net10.0-windows --runtime win-x64
dotnet test --project OpenCvSharp.Tests.Windows.csproj -c Release -f net10.0-windows --runtime win-x64

- name: Test Avalonia extensions
shell: powershell
Expand All @@ -221,7 +221,7 @@ jobs:
# RID-specific bin\Release\net10.0\win-x64\ subfolder; copy into that exact folder.
dotnet build -c Release -f net10.0 --runtime win-x64
Copy-Item ${env:GITHUB_WORKSPACE}\test\OpenCvSharp.Tests\OpenCvSharpExtern.dll bin\Release\net10.0\win-x64\
dotnet test -c Release -f net10.0 --runtime win-x64 --no-build
dotnet test --project OpenCvSharp.Tests.Avalonia.csproj -c Release -f net10.0 --runtime win-x64 --no-build

- name: Test NativeAOT publish
shell: powershell
Expand Down Expand Up @@ -494,8 +494,8 @@ jobs:

- name: Test
shell: cmd
# See the x64 job's "Test" step above for why --blame-crash* is here.
run: dotnet test test\OpenCvSharp.Tests -c Release -f net10.0 --runtime win-arm64 --filter "FullyQualifiedName!=OpenCvSharp.Tests.Core.BuildConfigurationTest.FFMPEG_IsEnabled" --blame-crash --blame-crash-dump-type full
# See the x64 job's "Test" step above for why crash dump collection is enabled here.
run: dotnet test --project test\OpenCvSharp.Tests\OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime win-arm64 --filter-not-method OpenCvSharp.Tests.Core.BuildConfigurationTest.FFMPEG_IsEnabled --results-directory test\OpenCvSharp.Tests\TestResults --crashdump --crashdump-type Full

- name: Upload crash dumps on failure
if: failure()
Expand Down
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
{
"label": "Run Tests (OpenCvSharp.Tests)",
"type": "shell",
"command": "cp -f /work/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so . && LD_LIBRARY_PATH=/work/test/OpenCvSharp.Tests dotnet test OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --logger \"console;verbosity=normal\" < /dev/null",
"command": "cp -f /work/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so . && LD_LIBRARY_PATH=/work/test/OpenCvSharp.Tests dotnet test --project OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --output Detailed < /dev/null",
"options": {
"cwd": "/work/test/OpenCvSharp.Tests"
},
Expand Down
47 changes: 47 additions & 0 deletions cmake/vcpkg-overlay-ports/libaec/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# The builtin port downloads from gitlab.dkrz.de, which rate-limits GitHub-hosted macOS runners.
# Use the upstream project's official GitHub release archive instead.
vcpkg_download_distfile(ARCHIVE
URLS "https://github.com/Deutsches-Klimarechenzentrum/libaec/releases/download/v${VERSION}/libaec-${VERSION}.tar.gz"
FILENAME "libaec-${VERSION}.tar.gz"
SHA512 97f05f6c80c32a9378e7bf8698053c1ee57d852ba988df9f052f3ac66b2f698b7cf7a0ea490c3ee6a5f4b0decac75b5f4fa11ea7a80c477aae5ef28e0a8b9b08
)

vcpkg_extract_source_archive(SOURCE_PATH
ARCHIVE "${ARCHIVE}"
)

string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DBUILD_STATIC_LIBS=${BUILD_STATIC}
-Dlibaec_INSTALL_CMAKEDIR=share/${PORT}
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup()
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/libaec/libaec-config.cmake"
"if(libaec_USE_STATIC_LIBS)"
"if(\"${BUILD_STATIC}\") # forced by vcpkg"
)

# Compatibility with user's CMake < 3.18 (vcpkg claims support for >= 3.16):
# Make imported targets global so that libaec-config.cmake can create ALIAS targets.
set(_target_file "libaec_shared-targets")
if(BUILD_STATIC)
set(_target_file "libaec_static-targets")
endif()
file(READ "${CURRENT_PACKAGES_DIR}/share/libaec/${_target_file}.cmake" libaec_targets)
string(REGEX REPLACE " (SHARED|STATIC) IMPORTED" " \\1 IMPORTED \${libaec_maybe_global}" libaec_targets "${libaec_targets}")
file(WRITE "${CURRENT_PACKAGES_DIR}/share/libaec/${_target_file}.cmake" "set(libaec_maybe_global \"\")
if(CMAKE_VERSION VERSION_LESS 3.18)
set(libaec_maybe_global \"GLOBAL\")
endif()
${libaec_targets}
")

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")

file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
7 changes: 7 additions & 0 deletions cmake/vcpkg-overlay-ports/libaec/usage
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
libaec provides CMake targets:

find_package(libaec CONFIG REQUIRED)
# libaec API
target_link_libraries(main PRIVATE libaec::aec)
# szip compatible API
target_link_libraries(main PRIVATE libaec::sz)
17 changes: 17 additions & 0 deletions cmake/vcpkg-overlay-ports/libaec/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "libaec",
"version": "1.1.6",
"description": "Adaptive Entropy Coding library",
"homepage": "https://github.com/Deutsches-Klimarechenzentrum/libaec",
"license": "BSD-2-Clause",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
5 changes: 5 additions & 0 deletions global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
4 changes: 3 additions & 1 deletion packaging/docker/ubuntu24-dotnet10-opencv5.0.0/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -146,13 +146,15 @@ RUN apt-get update && apt-get -y install --no-install-recommends libopenblas0 li
# from OpenCV's own parallel_for_ (e.g. stitching's BestOf2NearestMatcher).
ENV OPENBLAS_NUM_THREADS=1
COPY --from=opencvsharp-builder /usr/lib /usr/lib
COPY global.json /opencvsharp/global.json
COPY src/ /opencvsharp/src/
COPY test/ /opencvsharp/test/
WORKDIR /opencvsharp
RUN cd /opencvsharp/src/OpenCvSharp && \
dotnet build -c Release -f net8.0 && \
cd /opencvsharp/src/OpenCvSharp.GdipExtensions && \
dotnet build -c Release -f net8.0
RUN dotnet test /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --logger "trx;LogFileName=test-results.trx" < /dev/null
RUN dotnet test --project /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c Release -f net10.0 --runtime linux-x64 --results-directory /opencvsharp/test/OpenCvSharp.Tests/TestResults --report-xunit-trx --report-xunit-trx-filename test-results.trx < /dev/null

# Restore and publish as separate steps: see windows.yml's "Test NativeAOT publish" step for why
# a combined restore+publish invocation fails restore with NETSDK1207 (NuGet's static graph
Expand Down
Loading
Loading